无法在屏幕上显示两个不同的调用

Can't display two different calls to the screen right after each other

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

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;

我以前见过这个。您混淆了 PowerShell 的输出 table 显示。据我所知,这是 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

注意到它是一体的 table?就好像第一个Select-Object决定了table的headers,其他的都得依此类推。我不知道为什么会这样,或者它是否已在 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