从表格输出

时间:2016-04-08 17:16:44

标签: powershell

我正在尝试将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

enter image description here

我也尝试从管道中移除Out-String没有区别。

这里出了什么问题?

由于

2 个答案:

答案 0 :(得分:1)

Compare-Object $Hive1FileArray $Hive2FileArray -IncludeEqual |`
     Format-Table $tableFormat -AutoSize |`
        Out-String -Width 1000 |`
            Out-File $outputFilename

-AutoSize
     

根据宽度调整列大小和列数   数据。默认情况下,列大小和数字由。确定   图。

-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