我正在写一个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>
答案 0 :(得分:3)
这不是Select-Object
所做的。这只是PowerShell组合多个对象,如果它们属于同一类型。当你正在进行Get-ChildItem
时,你可以看到同样的情况,如果每个项目的标题输出一次会非常奇怪。
您可以通过明确使用Format-Table
来修复«(对于修复的某些解释):
gwmi win32_bios | select serialnumber | ft
gwmi win32_bios | select serialnumber | ft
通常,命令的整个输出会被管道传输到适合给定类型的内容,这意味着您的脚本只能获得一个Format-Table
,除非您自己执行此操作。 / p>