大きな監査があり、すべての従業員のADコンピュータアカウントが無効になっていることを確認したいと考えています。私は使用する一意の識別子を持つ.csvを持っています。スキーマには、ADcomputer Nameプロパティの真中にそのIDが含まれています。インポートされたCSVオブジェクトとそのプロパティをフィルタに正しくパイプするのに苦労しています。おもう。私は完全にはわからない。これは私が試みてきたようなものです。私はimport-csvの頭痛のPowershellパイプラインオブジェクト
Get-ADComputer -Filter { Name -Contains $id }
をテストするとき$id
はユニークなIDが、私はADのコンピュータオブジェクトにヒットを取得することですことを知っていながら
Import-Csv termname.csv | ForEach-Object
{ Get-ADComputer -Filter { Name -Contains "$($_.id)" } } |
Export-Csv termcomp.csv -NoTypeInformation
この「スクリプト」は、無内容の合計を引きました。同様に、このブロックをテスト
Import-Csv termname.csv | ForEach-Object { Get-ADComputer { Name -Contains $_.id }
のPowerShellのエラーは、次のとおりです。
..."Property 'id' not found in object of type: 'System.Management.Automation.PSCustomObject'.
私はまさにこのケースでは、「オブジェクト」は何かmisapprehendingだと思います。インポートされた配列全体が.idのプロパティを持つオブジェクトですか?または、各行はそれ自身のオブジェクトで、.idプロパティを持ちますか?そして、いずれにしても、PowerShellはパイプラインオブジェクトに強く反対しています。それは結局のところ、その主要な仕事ですか?
このプロセス全体については、より良い方法がありますか?私は何とか全面的な混乱を過ちしていますか? csvファイルの要求された、サンプルコンテンツとして
UPDATE
。代わりにワイルドカードを使用するように提案して、私はワイルドカードを.csv自体に入れました。これもまた、最も洗練されたソリューションではないかもしれません。しかし、それが動作する限り!ここではメモ帳++
id
*rstarr56*
*jlennon58*
*pmcartney74*
*gharrison68*
CSVファイルのコンテンツも共有してください。コンテンツがどのように正確にパワーシェルに入ってきているかを確認できるように、値のうちのいくつかを選んでください。 ? –
私が見る大きな問題は、containsの使用です。これは、テストのためのアイテムがコレクション内にあることです。簡単な答えは、代わりにlikeと*のワイルドカードを使用することです。 – BenH