我有以下的powershell脚本,我希望格式显示整个字符串,就像我使用带有-Wrap和-Autosize的Format-Table一样。我尝试过使用它们,但它没有显示所有需要的属性,不确定我是否正确使用它或者是什么情况。
$threshold = 30 #Number of days to look for expiring certificates
$deadline = (Get-Date).AddDays($threshold) #Set deadline date
Invoke-Command -ComputerName { Dir Cert:\LocalMachine\My } | foreach {
If ($_.NotAfter -le $deadline) {
$_ | Select Issuer, Subject, NotAfter, @{Label="Expires In (Days)";
Expression={($_.NotAfter - (Get-Date)).Days}}
}
}
这就是我目前的输出结果:
Issuer Subject NotAfter Expires In (Days)
CN=MASKEDMASKEDMASKED ... CN=masked.customer.masked.com, OU=... 2/21/2014 5:59:59 PM -17
CN=MASKEDMASKEDMASKED ... CN=masked.customer.masked.com, OU=... 2/21/2014 5:59:59 PM -17
有人可以提供一些帮助吗?我基本上只需要扩展这些列以查看所有细节。
答案 0 :(得分:0)
使用-ExpandProperty
cmdlet
Select-Object
参数
答案 1 :(得分:0)
如果您不打算在这些命令之后使用数据,您可以将它们管道传输给Format- *,如您所述。选择将获取数据,但不是友好的显示。你有什么理由需要它吗?
这是一个快速的例子,您可以充分利用这两个方面:
#Assign output to a variable
$result = Invoke-Command -ComputerName { Dir Cert:\LocalMachine\My } | foreach {
If ($_.NotAfter -le $deadline) { $_ | Select Issuer, Subject, NotAfter, @{Label="Expires In (Days)";Expression={($_.NotAfter - (Get-Date)).Days}} }
}
#Write the results to the verbose stream. Use format table and out-string for appearances
#Change to write-host, debug, error, warning, etc. as needed
Write-Verbose "Results:`n$($result | Format-Table -AutoSize -Wrap | Out-String)"
#$result is still a usable object at this point
$result
*编辑:我没有评论Cole9350的建议 - 不使用ExpandProperty。那是为了扩展一个属性......