我是一名试图了解数据输出如何工作的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'还有一些东西被截断了,比如用户所属的所有组,但它可能会得到你所需要的。 –