私は自分のパワーシェルの知識がかなり基本的です。とにかく、Get-ADComputer で識別名からの出力を変換するスクリプトを作成しようとしています。
通常、Get-ADComputer を使用してサーバーにクエリを実行した結果、OU の構造に応じて、distinguishedName は次のようになります。
CN=<servername>,OU=Others,OU=Servers,OU=0180,DC=win,DC=dom,DC=<something>,DC=com
私がやりたいことは、出力を 2 つの列に変換し、情報を再編成することです。これまでのところ、以下に示すように 2 つの列が並べ替えられたパーツを取得しました。
Name ParentContainer
------- ---------------
server1 OU=その他,OU=サーバー,OU=0180,DC=win,DC=dom,DC=,DC= com
server2 OU=DRA8,OU=Servers,OU=Admins,DC=win,DC=dom,DC=,DC=com
server3 OU=その他,OU=Servers,OU=0180,DC=win,DC=dom,DC =,DC=com
server4 OU=その他,OU=Servers,OU=0180,DC=win,DC=dom,DC=,DC=com
server5 OU=Servers,OU=4611,DC=win,DC=dom,DC =,DC=com
スクリプトは次のようになります。
$list = Get-Content "C:\temp\testservers.txt"
foreach ($servers in $list)
{
Get-ADcomputer "$servers" -Properties distinguishedName,cn |
select name, @{n='ParentContainer';e={$_.distinguishedname -replace '^.+?,(CN|OU.+)','$1'}}
}
今、トリッキーな部分に。「ParentContainer」列で、すべての「DC=」値を削除してから OU を切り替えたいので、上記の代わりに以下のようになります。
名前 ParentContainer
------- ---------------
server1 OU=0180,OU=Servers,OU=その他
server2 OU=Admins,OU=Servers,OU=DRA8
server3 OU =0180,OU=サーバー,OU=その他
server4 OU=0180,OU=サーバー,OU=その他
server5 OU=4611,OU=サーバー
これは、OU 構造と、サーバーが CSV ファイルに配置した OU を確認しやすくするためです。
それは可能ですか、それとも私は深い水に出ていますか?
よろしく Torbjorn Persson