こんにちは、リモート ホスト上のローカル管理者グループを監査するために、以下のスクリプトを作成しました。正常に動作しますが、すべてのホストを通過した後にのみデータを出力するため、csv にエクスポートする前に配列がバッファー領域を使い果たすのではないかと心配しているため、作成しようとしています。リストを通過するときに各ホストからの出力を追加しますが、ヘッダーを取得して最初の行に表示し、その下に追加の行を追加することはできません。以下は、追加しようとしたときに得られる出力です。イタリック体の単語はヘッダーで、その他の情報は次の行に記載する必要があります。私は何を間違っていますか?
@{サーバー=pc1; メンバー= 管理者; 識別名=DC=ドメイン、DC=com
これがどのように見えるかです。追加しないと、このように見えます。ホストのリストを調べ終わった後、csv を作成します。
Server Members DistinguishedName
host1 Administrator;Admin2 DC=DOMAIN,DC=COM
$servers= get-content "C:\Scripts\AD Audits\Local Admin\workstations.txt"
$output = "c:\temp\local admin audit $CurrentDate.csv"
$results = @()
$disconnected = "Did not respond"
foreach($server in $servers)
{
$connected = Test-Connection $server -count 1 -quiet
if ($connected) {
"$server responded" | Out-File -append "c:\temp\LocalAdmin goodhosts $CurrentDate.txt"}
else {
"$server did not respond" | Out-File -append "c:\temp\LocalAdmin badhosts $CurrentDate.txt"}
$group =[ADSI]"WinNT://$server/Administrators"
$members = $group.Members() | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) }
$results += New-Object PsObject -Property @{
DistinguishedName = (get-adcomputer ($server) -properties * | select distinguishedname).distinguishedname
Server = $server
Members = $members -join ";"
}
$results | Export-Csv $Output -NoTypeInformation
}`
if($connected -eq $True) {
New-Object PSObject -Property @{
DistinguishedName = (Get-ADComputer $_).DistinguishedName
Server = $_
Members = $members -join ";"
}} else {write-host ""}