无法在屏幕上显示两个不同的呼叫

时间:2016-03-03 15:06:08

标签: powershell powershell-v4.0

如果我同时运行以下两个命令,则只显示第一个命令。如果我单独运行它们,那么我得到两个结果。我错过了什么?

Get-WmiObject win32_volume -Computername "Your Server Name" | select driveletter, BlockSize, FreeSpace

Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP' -recurse | Get-ItemProperty -name Version,Release -EA 0 | Where { $_.PSChildName -match '^(?!S)\p{L}' -and $_.Version -gt 3.5 -and $_.Version -lt 3.6} | Select PSChildName, Version, Release;

1 个答案:

答案 0 :(得分:1)

我之前见过这个。您会混淆PowerShell的输出表格显示。据我所知,这是Select-Object的错误。这是一些示例代码:

"" | Select-Object -Property @{n="1";e={1}};
"" | Select-Object -Property @{n="2";e={2}};
"" | Select-Object -Property @{n="1";e={11}},@{n="2";e={22}};

哪些输出(空白浓缩):

 1
 -
 1

11

这段代码:

"" | Select-Object -Property @{n="1";e={11}},@{n="2";e={22}};
"" | Select-Object -Property @{n="1";e={1}};
"" | Select-Object -Property @{n="2";e={2}};

输出(空格缩小):

 1   2
 -   -
11  22
 1    
     2

注意它只在一个表中?这就像第一个Select-Object确定表格的标题,其余的必须遵循。我不知道为什么会这样做,或者它是否已在PowerShell v5.0中修复。

简单的解决方法是管道到Format-Table

"" | Select-Object -Property @{n="1";e={1}} | Format-Table -AutoSize;
"" | Select-Object -Property @{n="2";e={2}} | Format-Table -AutoSize;
"" | Select-Object -Property @{n="1";e={11}},@{n="2";e={22}} | Format-Table -AutoSize;

哪个正确输出:

1
-
1


2
-
2


 1  2
 -  -
11 22