如何冲洗"选择状态"?

时间:2016-02-14 12:44:16

标签: powershell powershell-v3.0

我正在写一个powershell脚本来从一系列dell笔记本中获取一些数据,比如mac地址,服务标签等......我发现当我使用[Get-Data]时在.ps1-File中选择[..],第一个选择的状态将转移到其他选择语句。

鉴于此代码:

Get-WmiObject -Query "Select serialnumber from Win32_Bios" | select SerialNumber
Get-WmiObject -Query "Select serialnumber from Win32_Bios" | select SerialNumber

当我在powershell中单独运行每一行时,我得到了这个输出:

PS C:\Users\Vinzenz\Data\Code\spass_powershell> Get-WmiObject -Query "Select serialnumber from Win32_Bios" | select SerialNumber

SerialNumber
------------
[redacted]


PS C:\Users\Vinzenz\Data\Code\spass_powershell> Get-WmiObject -Query "Select serialnumber from Win32_Bios" | select SerialNumber

SerialNumber
------------
[redacted]

当我将代码放在.ps1-File中时,我得到了这个输出:

PS C:\Users\Vinzenz\Data\Code\spass_powershell> .\rechnerdata.ps1

SerialNumber
------------
[redacted]
[redacted]

有没有办法刷新这个"状态",因为这种行为停止使用漂亮的格式化"选择"给了我。

我在这个脚本中发现了这种行为:

## ServiceTag
Get-WmiObject -Query "Select serialnumber from Win32_Bios" | select SerialNumber

## Mac-Addresses
$adapters = @()
# get all adapters with a mac and replace : with -
Get-WmiObject win32_networkadapterconfiguration | select description, macaddress | where {$_.macaddress} | Foreach {$_.macaddress = $_.macaddress -replace ':','-'; $adapters += $_;}  
$adapters | select description, macaddress;

当我将其作为脚本文件运行时,我得到了这个输出:

PS C:\Users\Vinzenz\Data\Code\spass_powershell> .\rechnerdata.ps1

SerialNumber
------------
[redacted]








PS C:\Users\Vinzenz\Data\Code\spass_powershell>

1 个答案:

答案 0 :(得分:3)

这不是Select-Object所做的。这只是PowerShell组合多个对象,如果它们属于同一类型。当你正在进行Get-ChildItem时,你可以看到同样的情况,如果每个项目的标题输出一次会非常奇怪。

您可以通过明确使用Format-Table来修复«(对于修复的某些解释):

gwmi win32_bios | select serialnumber | ft
gwmi win32_bios | select serialnumber | ft

通常,命令的整个输出会被管道传输到适合给定类型的内容,这意味着您的脚本只能获得一个Format-Table,除非您自己执行此操作。 / p>