我需要一些关于以下脚本输出的帮助,因此输出不会显示省略号(...)。 我试图插入“| Format-Table -Wrap -AutoSize” 但我似乎没有把它弄好。
clear-host Add-PSSnapin microsoft.sharepoint.powershell -ErrorAction SilentlyContinue
$services = new-object system.collections.sortedlist
$servers = (get-spfarm).servers
foreach ($server in $servers) {
foreach($service in $server.serviceinstances)
{
if ($service.status = "Online")
{
$s = $service.typename
if ($services.contains($s))
{
$serverlist = $services[$s]
$servername = $server.name
$services[$s] = "$serverlist - $servername"
}
else
{
$services[$s] = $server.name
}
}
} }
$services
输出:
Name Value
---- -----
Access Database Service SE5APP - SE5FE - SE7FE - FAQ3
Application Discovery **and L...** SE5APP - SE5FE - SE7FE - FAQ3
Application Registry Service SE5APP - SE5FE - SE7FE - FAQ3
感谢您的阅读。
答案 0 :(得分:17)
Format-List
(fl
)或Format-Table -auto
(ft -auto
)应该可以提供帮助。
$services | fl
OR
$services | ft -auto
答案 1 :(得分:17)
我遇到过这篇文章并希望添加一些信息,因为已接受的解决方案无法解决我的问题,我相信其他人可能会发现以下信息有用:
快速故事:使用带有Microsoft Online Services Module
的{{1}}运行命令,大部分结果都会被截断,数据截断并作为省略号丢失(... )。
修复:正如this post by Greig中所述,我不可避免地得出结论Powershell
是解决问题的不可思议的解决方案。使用$FormatEnumerationLimit=-1
,Format-Wide
,Format-List
,Format-Table
,Format-Custom
,-AutoSize
等的任何变体都需要大量的额外注意事项/码。如果你想要的只是看所有所返回的数据,无论列,数组等如何,Out-String -Width
都可以确保你获得所有和你不需要乱七八糟。
其他信息,在Greig的帖子中包含:
PowerShell Quick Tip: Creating wide tables with PowerShell,作者解释说:
如果您有包含项目集合的特定属性, 如果,该属性仍然可以在此处生成的文件中显示省略号 该集合中的项目数超过了分配的数量 内置的 $ FormatEnumerationLimit 变量。
...并且"将结果传递给$FormatEnumerationLimit=-1
[将]显示所有列。"但是列中的内容可能仍会被截断(" PowerShell默认情况下截断表输出"),即使使用| Format-Table -Property *
也会受到屏幕缓冲区的限制
("自动调整大小的表格仅限于屏幕缓冲区的宽度")。在绝对 $ FormatEnumerationLimit = -1 之前提供的解决方案似乎正在使用| Format-Table -Property * -AutoSize
和| Format-Table -Property * -AutoSize
或您需要的任何宽度。
Using Format Commands to Change Output View在| Out-String -Width 4096
:Format cmdlets
,Format-Wide
和Format-List
上提供了一些更详细的文档。
答案 2 :(得分:0)
在这种情况下,我要做的是创建格式描述,然后将其用作我的Format-Table命令的参数。我开发了一个函数(Get-MaxLength)来检查数据最长的数据字段(有助于在格式描述的末尾添加该字段),并使用返回的值在格式描述中设置宽度。您可以在下面的代码中查看计算。请注意Intel(4)管理引擎接口的Number值。还要注意在Format-Table命令上使用-Wrap。可以修改此概念以计算所有字段的宽度,也可以仅计算最后一个字段的宽度,这只是一点数学运算。
Function Get-MaxLength {
<#
.SYNOPSIS
Finds the length of the longest item in collection.
.DESCRIPTION
Use this Function to get the length of the longest item in a
collection for use in format strings or other places where
needed.
.PARAMETER TestObj
The qualified object to be tested. See example!
.Parameter MinLen
The minimum length of the item (if using for formatting) which
should be the Label (title) length. Note if the object item
being tested does not have a Length property you MUST specify
the label length!
.OUTPUTS
Returns a numerical value
.EXAMPLE
$NameLen = Get-MaxLength -TestObj $DotNet.PSChildName
$VerLen = Get-MaxLength -TestObj $DotNet.Version
$RNLen = Get-MaxLength -TestObj $DotNet.Release -MinLen 11
#--- .Net Information ---
$fmtDotNet =
@{Expression={$_.PSChildName};Label=".Net Type";Width=$NameLen},
@{Expression={$_.Version};Label="Version No:";Width=$VerLen},
@{Expression={$_.Release};Label="Release No:";Width=$RNLen}
$Dotnet | Format-Table $fmtDotNet
#>
Param(
[Parameter(Mandatory=$True)]
[object] $TestObj,
[Parameter(Mandatory=$False)]
[int] $MinLen = 0,
[Parameter(Mandatory=$False)]
[int] $MaxLen = 0
)
$ErrorActionPreference = "SilentlyContinue"
foreach ($x in $TestObj) {
If ($x.Trim().length -gt $MinLen) {
$MinLen = $x.Trim().length
}
}
If ($MaxLen -ne 0) {
If ($MinLen -gt $MaxLen) {
$MinLen = $MaxLen
}
}
$ErrorActionPreference = "Continue"
Return ,$MinLen
} #End Function ----------- Get-MaxLength -------------------
$OstrWidth = 80
$DriverInfo =
Get-CimInstance -ClassName 'Win32_PNPSignedDriver' |
Where-Object -Property DriverProviderName -ne "Microsoft" |
Where-Object -Property DeviceName -ne -Value $Null |
Sort-Object -Property DeviceName -Unique
$DriverCnt = $DriverInfo.Count
$DVLen =
Get-MaxLength -TestObj $DriverInfo.DriverVersion -MinLen 14
$DDLen = $OstrWidth - $DVLen
$fmtDRVR = @{Label="`nDriver Description";Width=$DDLen;
Expression={$_.DeviceName}},
@{Label="Version Number"; Width=$DVLen;
Expression={$_.DriverVersion}}
$DrvTitle = "$($DriverCnt) Non-Windows Unique Drivers and " +
"Version Numbers:" | Out-String
$DriverInfo =
$DriverInfo | Format-Table -Property $fmtDRVR -Wrap |
Out-String -Width $OStrWidth
样本输出:
Driver Description Number
------------------- -------------
Alcor Micro USB 2.0 Card Reader 2.0.150.10135
ASMedia USB3.1 eXtensible Host Controller 1.16.42.1
...
Intel(R) HD Graphics 630 21.20.16.4550
Intel(R) Management Engine Interface 1914.12.0.125
6
Intel(R) Ready Mode Technology Device 1.2.0.0
...
Realtek Audio 6.0.1.8248
Samsung NVMe Controller 3.0.0.1802