MDM*_*rra 9 powershell active-directory
如何使用 PowerShell 查找 AD 站点选项,例如+IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED
在 PowerShell 中?我一直在玩以下命令,但无法让它吐出任何有用的东西。
Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext` -Properties options
Run Code Online (Sandbox Code Playgroud)
Rya*_*ies 17
编辑 #3:更新参考文档。
编辑 #2:再编辑一次,因为我在 PS 中写了一些东西来完成你想要做的事情。它在底部。
我将继续并断言目前没有 Powershell Friendly (tm)方式来做到这一点。但是,当然,如果您真的愿意,您仍然可以使用 Powershell 进行 LDAP 查询以查看这些选项。检查与 AD 站点关联的每个服务器options
的NTDS Settings
对象的属性:
这是 repadmin.exe 工作的确切属性,它是位掩码。Repadmin.exe 在其代码中包含一个友好的位掩码转换器。ADSIEdit MMC 管理单元也是如此。但是,您需要在 Powershell 中重新创建该位掩码转换器。
例如,Repadmin /options <DC> [{+|-} IS_GC]
是一个有效的命令,现在我们确切地知道它在哪个位上运行。
选项属性
位域,其中位的含义因对象类而异。可能发生在站点间传输、NTDS 连接、NTDS-DSA、NTDS 站点设置和站点链接对象上。
(&(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))
Run Code Online (Sandbox Code Playgroud)
此过滤器使用 LDAP_MATCHING_RULE_BIT_AND 匹配规则运算符 (1.2.840.113556.1.4.803) 来查找在 options 属性的位掩码中设置了低位的 nTDSDSA 对象。低位对应于 Ntdsapi.h 中定义的 NTDSDSA_OPT_IS_GC 常量,标识全局目录服务器的 nTDSDSA 对象。有关匹配规则的更多信息,请参阅搜索过滤器语法。
哦,男孩听起来很有趣!
位掩码的一些其他值:
因此,您应该有足够的信息来推出您自己的Get-ADSiteOptions
Cmdlet ......如果你想让我为你写一个,我会的,费用非常适中......;)
编辑:这是 Microsoft 链接Repadmin for Experts,其中详细说明了repadminoptions
和siteoptions
子命令之间的区别:
通过使用 siteoptions 子命令,我们可以更改存储在 NTDS 站点设置对象上的选项属性。
至于那个位图?它甚至记录在案吗?没有把握。如果你能告诉我 你太爱炫耀了,MDMarra。;)FORCE_KCC_WHISTLER_BEHAVIOR
面试是什么意思,我会当场录用你。
所以总结一下,每个域控制器options
的CN=NTDS Settings
对象上的属性对应于DC特定的选项,即repadmin <DC> /options
,而每个站点下options
的CN=NTDS Site Settings
对象上的属性对应于repadmin /siteoptions
。
所以,最后回答你的问题。获取特定的站点选项,而不是 DC 选项:
ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext))
{
Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options
}
Run Code Online (Sandbox Code Playgroud)
如果没有设置站点选项,Powershell 将不会返回它们。您可能可以稍微简化上面的代码,但这是使用您开始使用的说法。经过过多的搜索,我终于找到了有关站点选项位掩码的文档:
因此,对于IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED
你们给了作为一个例子,你会寻找值0x00000010
的options
属性。
并通过运行 Powershell 代码段:
编辑#2:我今天给你写了一些东西:
#Require -Version 3
#Require -Module ActiveDirectory
Function Get-ADSiteOptions
{
<#
.SYNOPSIS
This Cmdlet gets Active Directory Site Options.
.DESCRIPTION
This Cmdlet gets Active Directory Site Options.
We can fill out the rest of this comment-based help later.
.LINK
http://myotherpcisacloud.com
.NOTES
Written by Ryan Ries, October 2013. ryanries09@gmail.com.
#>
[CmdletBinding()]
Param()
BEGIN
{
Set-StrictMode -Version Latest
# This enum comes from NtDsAPI.h in the Windows SDK.
# Also thanks to Jason Scott for pointing it out to me. http://serverfault.com/users/23067/jscott
Add-Type -TypeDefinition @"
[System.Flags]
public enum nTDSSiteSettingsFlags {
NTDSSETTINGS_OPT_IS_AUTO_TOPOLOGY_DISABLED = 0x00000001,
NTDSSETTINGS_OPT_IS_TOPL_CLEANUP_DISABLED = 0x00000002,
NTDSSETTINGS_OPT_IS_TOPL_MIN_HOPS_DISABLED = 0x00000004,
NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED = 0x00000008,
NTDSSETTINGS_OPT_IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED = 0x00000010,
NTDSSETTINGS_OPT_IS_GROUP_CACHING_ENABLED = 0x00000020,
NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR = 0x00000040,
NTDSSETTINGS_OPT_FORCE_KCC_W2K_ELECTION = 0x00000080,
NTDSSETTINGS_OPT_IS_RAND_BH_SELECTION_DISABLED = 0x00000100,
NTDSSETTINGS_OPT_IS_SCHEDULE_HASHING_ENABLED = 0x00000200,
NTDSSETTINGS_OPT_IS_REDUNDANT_SERVER_TOPOLOGY_ENABLED = 0x00000400,
NTDSSETTINGS_OPT_W2K3_IGNORE_SCHEDULES = 0x00000800,
NTDSSETTINGS_OPT_W2K3_BRIDGES_REQUIRED = 0x00001000 }
"@
ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext))
{
$SiteSettings = Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options
If(!$SiteSettings.PSObject.Properties.Match('Options').Count -OR $SiteSettings.Options -EQ 0)
{
# I went with '(none)' here to give it a more classic repadmin.exe feel.
# You could also go with $Null, or omit the property altogether for a more modern, Powershell feel.
[PSCustomObject]@{SiteName=$Site.Name; DistinguishedName=$Site.DistinguishedName; SiteOptions='(none)'}
}
Else
{
[PSCustomObject]@{SiteName=$Site.Name; DistinguishedName=$Site.DistinguishedName; SiteOptions=[Enum]::Parse('nTDSSiteSettingsFlags', $SiteSettings.Options)}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是在行动:
归档时间: |
|
查看次数: |
4265 次 |
最近记录: |