大規模な監査が近づいており、指名されたすべての従業員の AD コンピューター アカウントが無効化されていることを確認したいと考えています。私たちが使用する一意の識別子を持つ .csv があります。私たちのスキーマには、ADcomputer Name プロパティの途中にその ID が含まれています。インポートされた csv オブジェクトとそのプロパティをフィルターに正しくパイプするのに非常に問題があります。おもう。よくわかりません。これは私が試してきたことのようなものです。
Import-Csv termname.csv | ForEach-Object
{ Get-ADComputer -Filter { Name -Contains "$($_.id)" } } |
Export-Csv termcomp.csv -NoTypeInformation
この「スクリプト」は、まったくコンテンツを取得していませんでしたが、テストしたときにそれを知っています
Get-ADComputer -Filter { Name -Contains $id }
その一意の ID はどこに$id
あり、AD コンピューター オブジェクトにヒットします。同様に、このブロックをテストします
Import-Csv termname.csv | ForEach-Object { Get-ADComputer { Name -Contains $_.id }
PowerShell のエラーは次のとおりです。
..."Property 'id' not found in object of type: 'System.Management.Automation.PSCustomObject'.
この場合の「オブジェクト」とは何かを誤解していると思います。インポートされた配列全体は、.id のプロパティを持つオブジェクトですか? それとも、各行は .id プロパティを持つ独自のオブジェクトですか? いずれにせよ、PowerShell がパイプライン オブジェクトに対してこれほど強い反対を唱えるのはなぜでしょうか。
このプロセス全体を行うための完全に良い方法はありますか? 私はどういうわけか全体の混乱を考えすぎていますか?
アップデート
要求に応じて、csv ファイルのサンプル コンテンツ。代わりにワイルドカードを使用するという提案を受けて、ワイルドカードを .csv 自体に入れましたが、これもまた、最も洗練されたソリューションではない可能性があります。しかし、それが機能する限り!Notepad++ からコピーしたサンプルを次に示します。
id
*rstarr56*
*jlennon58*
*pmcartney74*
*gharrison68*