为什么PowerShell会切断列值?

时间:2013-12-06 21:29:30

标签: powershell

当我使用自动调整大小时,它只修复最后一列,然后它会打破第一列,这意味着所有值都显示在最后一列,第一列的中间切断值。有解决方法吗?

Get-SPSite -WebApplication http://contoso.intranet.com -Limit All | where {$_.RootWeb.Created -ge $Yesterday -And $_.RootWeb.Created -lt $Tomorrow} | ft Url, @{Name='Created';Expression={$_.RootWeb.Created}},@{label="Size in MB";Expression={$_.usage.storage/1MB}} | Format-Table -Wrap -AutoSize

6 个答案:

答案 0 :(得分:3)

Format-Table -Autosize仅限于屏幕缓冲区的宽度。一种选择是将其输出到文本文件或使用Out-GridView而不是Format-Table

e.g。

Get-SPSite -WebApplication http://contoso.intranet.com -Limit All 
| where {$_.RootWeb.Created -ge $Yesterday -And $_.RootWeb.Created -lt $Tomorrow} 
| ft Url, @{Name='Created';Expression={$_.RootWeb.Created}},@{label="Size in MB";Expression={$_.usage.storage/1MB}} 
| Format-Table -Wrap -AutoSize
| Out-String -Width 4096 `
| Out-File C:\SPSites.txt

Get-SPSite -WebApplication http://contoso.intranet.com -Limit All 
| where {$_.RootWeb.Created -ge $Yesterday -And $_.RootWeb.Created -lt $Tomorrow} 
| ft Url, @{Name='Created';Expression={$_.RootWeb.Created}},@{label="Size in MB";Expression={$_.usage.storage/1MB}} 
| Out-GridView  

答案 1 :(得分:1)

您正在将format-table的输出传递给可能导致问题的另一个format-table。尝试用select-object替换第一个,否则命令应该完全相同:

select-object Url, @{Name='Created';Expression={$_.RootWeb.Created}},@{label="Size in MB";Expression={$_.usage.storage/1MB}}

答案 2 :(得分:1)

摆脱 -AutoSize 。它正在击败 -Wrap 的目的。我同意zdan和Keith Hill的说法,没有理由将一个 Format-Table 传输到另一个,并且你应该将开关添加到第一个实例。

所以,试试这个:

Get-SPSite -WebApplication http://contoso.intranet.com -Limit All | ?{$_.RootWeb.Created -ge $Yesterday -And $_.RootWeb.Created -lt $Tomorrow} | ft -Wrap Url, @{n='Created';e={$_.RootWeb.Created}},@{n="Size in MB";e={$_.usage.storage/1MB}}  

(我缩写了一些东西以减少滚动。另外,AFAIK“名称”和“标签”可以在 ft 格式规格中互换;只是指出这一点因为我注意到你使用了其中一个。)

答案 3 :(得分:1)

$pshost = get-host
$pswindow = $pshost.ui.rawui
$newsize = $pswindow.buffersize
$newsize.height = 3000
$newsize.width = 3000
$pswindow.buffersize = $newsize

将此添加到脚本的顶部,修复长度问题:)它完全破解但是有效:)

答案 4 :(得分:1)

这给出了您可能期望的那种输出:

[command] | Format-Table -AutoSize | Out-String -Width 10000 #| clip.exe

例如,试试这个:

Get-ChildItem -Path "." | Select-Object * | Format-Table -AutoSize | Out-String -Width 10000 #| clip.exe

Format-Table -AutoSize符合预期的输出大小或元素的大小较小者。由于您的输出可能小于10,000个字符宽,因此该命令应该适合您的数据。

注意:clip.exe是一个内置的Windows命令,可以让您管道到剪贴板。

答案 5 :(得分:0)

也许,这完全是黑客攻击,但与ft -autosize一起完成了我正在寻找的工作。

(...)

$list2 | Select-Object -ExpandProperty VersionInfo | Sort-Object -Property FileName | format-table -autosize > $filePath\dir.txt

(...)