嗨,我創建了以下腳本來審覈遠程主機上的本地管理員組。它工作正常,但由於它只在數據經過所有主機後才輸出數據,所以恐怕在數據有機會導出到csv之前數據將會用完,所以我一直試圖創建它並且在每個主機經過列表時追加輸出,除非我不能在第一行顯示標題並在其下面添加其他行。以下是當我嘗試追加時得到的輸出。斜體字應該是標題,其他信息應該列在下一行。我究竟做錯了什麼?附加CSV輸出編碼問題
@ {服務器 = pc1; 會員 =管理員; DistinguishedName = DC = Domain,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 ""}
接縫工作,除非看起來腳本無法連接到的計算機仍然被寫入到csv,而前一個主機發出的響應信息爲false。管道雖然有意義。我實際上開始瞭解這些東西。而不是在$ servers中使用($ server),您對每行都使用單個條目($ _)。 – user2402045
您可以將新的psobject創建放入IF語句中,該語句檢查相關計算機是否可以連接。 –
工作完美!我將if block修改添加到了原始問題的底部。它可能不是我添加它的最乾淨的方式,但它工作得很好。對我來說有沒有更好的方法來做到這一點? – user2402045