2016-08-09 8 views
0

フォレスト全体からNTDSサービスの状態を報告するスクリプトがあります。以下で除外したい2003サーバーはほとんどありません。出力のリストからサーバーを除外

$getForest = [system.directoryservices.activedirectory.Forest]::GetCurrentForest() 
$getForest.domains | ForEach-Object {$_.DomainControllers} | ForEach-Object {$_.Name} 

私は運

答えて

0

私はそれが

$exclude = @(
     'dc2.local' 
     'dc3.local' 
     'dc4.local'                                          
     'dc5.local' 
    ) 

    (Get-ADForest).Domains | %{ Get-ADDomainController -Filter * -Server $_ } | Where-Object {$exclude -notcontains $_.hostname} | select Hostname 
1

あなたの二ForEach-Objectが必要とされていないので、私が最初にそれを統合してきました

$getForest = [system.directoryservices.activedirectory.Forest]::GetCurrentForest() 
$getForest.domains | ForEach-Object {$_.DomainControllers} | ForEach-Object {$_.Name} | where-object {$_.name -notlike "server2003.domain.local"} 

ような何かをしようとしませんでした。

この種類のものについては、除外したい名前の配列を作成することをお勧めします。これは$excludeと呼ばれています。

次に、-notcontains演算子を使用して、Where-Objectのリストに対して名前を確認しています。

$exclude = @(
    'server2003.domain.local' 
    'other2003.domain.local' 
) 
$getForest = [system.directoryservices.activedirectory.Forest]::GetCurrentForest() 
$getForest.domains | 
    ForEach-Object {$_.DomainControllers.Name} | 
    Where-Object {$exclude -notcontains $_.name} 
+0

を働くこと、それはフォレスト内のすべてのDCのをリストWLL動作しませんでしたです – DisplayName

関連する問題