我是一名試圖瞭解數據輸出如何工作的Powershell新手。我正在嘗試查找Active Directory中兩個用戶之間的差異。我找到了一個有效的解決方案(Compare-Object on two AD user accounts),但相關字段中的一些數據被截斷了......這沒有幫助。
我發現這似乎在此頁面的底部很優雅的解決方案:http://poshoholic.com/2010/11/11/powershell-quick-tip-creating-wide-tables-with-powershell/
我試圖將這兩個合併成一個單一的腳本。這是我有:
$user1 = get-aduser jdoe -Properties *
$user2 = get-aduser jsmith -Properties *
$Usercomparison = @()
$user1.GetEnumerator() | ForEach-Object {
If ($User2.($_.Key) -eq $_.Value)
{
$Comparison = 'Equal'
}
else
{
$Comparison = 'Different'
}
$UserObj = New-Object PSObject -Property ([ordered]@{
Property = $_.Key
User1 = $_.Value
User2 = $User2.($_.Key)
Comparison = $Comparison
})
$UserComparison += $UserObj
}
$UserComparison
| Format-Table -Property * -AutoSize `
| Out-String -Width 4096 `
| Out-File C:\Users\USER\Desktop\differences.txt
這會產生一個錯誤,「一個空的管道元素是不允許的」。如果我刪除一行返回將第一個管道線$ UserComparison變量之後...
$UserComparison | Format-Table -Property * -AutoSize `
| Out-String -Width 4096 `
| Out-File C:\aliases.txt
...然後將文本文件被創建,但它的格式錯誤。只有前兩列出現在輸出中,並且在右邊有大量浪費的空白,並且在每行後面有幾個空白行返回......沒有什麼像網站上的示例。
這是因爲我發現腳本中的數據寫入到一個變量,然後只打印變量在屏幕上,而不是使用一個命令,可以輸出正確的?我覺得我有我需要的所有部分,只是沒有以正確的配置獲得我想要的輸出。
謝謝!
如果您只是s把它看出來,你可以嘗試'format-table -Property * -AutoSize | convertto-html c:\ myfile.html' –
@TonyHinkle將HTML放入控制檯但未生成文件。 <!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Strict // EN」「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」>
嘗試'$ UserComparison | ft -wrap | out-file c:\ temp \ test.txt'還有一些東西被截斷了,比如用戶所屬的所有組,但它可能會得到你所需要的。 –