2017-01-10 4 views
0

CSVファイルからコンピュータ名のリストをインポートし、ADのすべてのコンピュータ名と比較するPowershellスクリプトを作成しようとしています。私はそれがADに存在しないCSVファイルから名前のリストを出力する必要があります。CSVファイルに対してADコンピュータ名を確認してください

私はこれらのコマンドで遊んでいますが、私が望むものとまったく同じではありません。

これは、非常に長いリストである両方の変数とは異なるすべてのリストを私に与えるようです。私は実際には、CSVファイル内のどのコンピュータ名がADにないのか知る必要があります。

答えて

0

は単にADからの名前のリストと照らし合わせてCSVから名前を比較する(私はCSVの列のタイトルがNameであると仮定するつもりです):

$ADNames = Get-ADComputer -Filter * | Select-Object -Expand Name 
Import-Csv 'C:\path\to\input.csv' | 
    Where-Object { $ADNames -notcontains $_.Name } | 
    Export-Csv 'C:\path\to\not_in_AD.csv' -NoType 

サイドノートを:$AD-Names有効な変数名ではありません。ハイフンをアンダースコアに変更するか完全に削除するか、変数名を中括弧(${AD-Names})に入れます。

+0

これはまさに私が必要としていたものでした。ありがとう! – rsakai2

0

まず、コンピュータ名だけがある場合、まずcsvファイルが必要ですか? CSVファイルは通常、単純なテキストファイルにテーブルを格納するために使用されます。

あなたのCSVは、コンピュータ名が含まれており、あなただけのコンピュータ名をチェックしたい、これはあなたのために働く可能性がある場合:

$OutputComputers = @(); 
$InputComputers = Import-Csv input.csv -Header ComputerName; 
$AdComputers = Get-ADComputer -Filter 'Name -like "*"'; 


$InputComputers | ForEach-Object {$i = 0} { 
    if ($_.ComputerName -notin $AdComputers.Name) { 
     $OutputComputers += New-Object PsObject -property @{ 
      'ComputerName' = $_.ComputerName 
     } 
    } 
} 

$OutputComputers | Export-Csv output.csv -Delimiter ";" -Encoding UTF8 -Force -NoTypeInformation 

はそれがお役に立てば幸いです。

関連する問題