2017-11-07 17 views
1

私はすべてのドメインからのユーザー名のCSVリストを持っていますが、そのリストを特定のOUと比較し、その一致を別のファイルに送信しようとしています。私はこれを思い付いた研究の良い量後や他のスクリプトと比較して、私は、PowerShellの新しいブランドです:上の引数を検証することはできません:私はこれを実行するとCSVから特定のOUへのADユーザーの比較

$users = Import-csv C:\Users\me\Desktop\'RSA.csv' 
$(ForEach ($user in $users) 
{ 
Get-AdUser -identity $user -SearchBase "ou=Sub,ou=Root,dc=My,dc=Domain,dc=Name" -Filter * 
}) | 
Select-Object SamAccountName | 
Export-CSV -Path C:\Users\me\Downloads\test\output.csv -NoTypeInformation 

私はエラー」は、Get-ADUserを取得パラメータ 'Identity'。引数 のIdentityプロパティがnullまたは空です。 "もし私が$ -identityユーザーなしで走ると、それはすべてのものを引き出すだけです。どのようにこの作品を作るための任意の提案?

+0

あなたに何かが含まれていることを確認するために '$ user'変数を印刷しようとしましたか? –

+0

はい、$ userでWrite-Outputを使用すると、すべてのユーザー名が出力されます。 – cd19

+0

私はそれを削除したので、同じ結果を得ました。 – cd19

答えて

0

ユーザー名だけの文字列を与えるのではなく、Get-ADUserを呼び出すときは、usernameというプロパティを持つオブジェクトを渡します。 Select-Object -ExpandProperty Usernameを使用するか、justプロパティを参照してください。

Import-Csv 'C:\Users\me\Desktop\RSA.csv' | 
    Where-Object {(!([string]::IsNullorWhiteSpace($_.UserName)))} | 
    ForEach-Object { 
     Get-ADUser -Identity $_.UserName 
    } | 
    Select-Object SamAccountName | 
    Export-CSV -Path C:\Users\me\Downloads\test\output.csv -NoTypeInformation 

注:ほとんどの場合、パイプラインを使用しようとする場所のように見えるため、ForEach-Objectループは読みやすさのために変更されています。空白/空文字列の空白行やユーザー名をスキップするテストも追加されました。 SearchBaseFilterを削除しました。あなたがIDに基づいて検索しているので、これらのコマンドを使用することはできません。あなたがそれらのすべてを使用できるようにするパラメータセットがないので。 Get-Help Get-ADUserは利用可能なパラメータセットを示します。

+0

$ _。UserNameは列見出しや他の属性を参照していますか?私はあなたの編集を実行し、 "指定された名前付きパラメータを使用してパラメータセットを解決することはできません"という新しいエラーが発生しました。それは私のCSVのユーザー名リストに何か問題があることを意味しますか? – cd19

+0

@ cd19はい、それはそのヘッダを参照しています。あなたが 'Import-Csv'を使うときは、列見出しであるプロパティを持つPowerShellオブジェクトの配列が作成されます。 – BenH

+0

@ cd19いいえ、あなたは 'Identity'と' SearchBase'を同時に使うことはできません。アイデンティティがユニークであるため、SearchBaseは問題ではありません – BenH

関連する問題