我正在尝试将powershell cmdlet Compare-Object
的结果输出到文本文件。问题是我无法消除椭圆截断。
下面的代码提供了一个表格式定义变量,它为Path列指定了1000的宽度。但是输出文件总是将Path列截断为122个字符。
Compare-Object
cmdlet正在比较两个ArrayLists,它们只是两个服务器之间的公共文件夹路径的文件路径字符串列表。
我尝试做的是将SideIndicator作为第一列,将完整路径作为第二列。我不想截断文件路径。
$tableFormat = @{Expression={$_.SideIndicator};Label="Side Indicator";width=15}, @{Expression={$_.InputObject};Label="Path";width=1000}
$outputFilename = ($server1 + "_" + $server2 + "_FileCompare" + ".txt");
Compare-Object $Hive1FileArray $Hive2FileArray -IncludeEqual | Format-Table $tableFormat | Out-String | Out-File $outputFilename
我也尝试从管道中移除Out-String
没有区别。
这里出了什么问题?
由于
答案 0 :(得分:1)
Compare-Object $Hive1FileArray $Hive2FileArray -IncludeEqual |`
Format-Table $tableFormat -AutoSize |`
Out-String -Width 1000 |`
Out-File $outputFilename
读
Get-Help 'Format-Table' -ShowWindow
或其Online Version:-AutoSize
根据宽度调整列大小和列数 数据。默认情况下,列大小和数字由。确定 图。
Get-Help 'Out-String' -ShowWindow
或其Online Version:-Width <Int32>
指定每行输出中的字符数。的不限 其他字符被截断,未包装。如果省略这个 参数,宽度由主机的特性决定 程序。 Windows PowerShell控制台的默认值为80 (字符)。
说不知道Compare-Object
cmdlet输入对象......
答案 1 :(得分:1)
我知道这已经有一年了,但Format-Table的另一个有用参数是-wrap。
-Wrap [] 指示cmdlet显示的文本超出下一行的列宽。默认情况下,超出列宽的文本将被截断。
Required? false
Position? named
Default value False
Accept pipeline input? False
Accept wildcard characters? false