如何冲洗"select-State"?
Howto flush "select-State"?
我正在编写一个 powershell 脚本来从一系列戴尔笔记本电脑中获取一些数据,例如 mac 地址、服务标签等...我发现当我使用 [Get-Data] | select [..] 在 .ps1-File 中第一个 select 的状态转移到其他 select 语句。
鉴于此代码:
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- 文件时,我得到以下输出:
PS C:\Users\Vinzenz\Data\Code\spass_powershell> .\rechnerdata.ps1
SerialNumber
------------
[redacted]
[redacted]
有没有办法刷新这个 "state",因为这种行为停止使用 "select" 给我的漂亮格式。
我在这个脚本中发现了这个行为:
## 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>
这不是 Select-Object
做的。这只是 PowerShell 组合多个 objects 被输出,如果它们是相同的类型。当您执行 Get-ChildItem
时,您会看到相同的情况,如果 headers 将为每个项目输出一次,那将是非常奇怪的。
您可以通过显式使用 Format-Table
:
»修复«(对于 修复 的某些解释)
gwmi win32_bios | select serialnumber | ft
gwmi win32_bios | select serialnumber | ft
通常,命令的 整个 输出会通过管道传输到适合给定类型的内容中,这意味着您的脚本只会得到一个 Format-Table
,除非您自己做。
我正在编写一个 powershell 脚本来从一系列戴尔笔记本电脑中获取一些数据,例如 mac 地址、服务标签等...我发现当我使用 [Get-Data] | select [..] 在 .ps1-File 中第一个 select 的状态转移到其他 select 语句。
鉴于此代码:
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- 文件时,我得到以下输出:
PS C:\Users\Vinzenz\Data\Code\spass_powershell> .\rechnerdata.ps1
SerialNumber
------------
[redacted]
[redacted]
有没有办法刷新这个 "state",因为这种行为停止使用 "select" 给我的漂亮格式。
我在这个脚本中发现了这个行为:
## 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>
这不是 Select-Object
做的。这只是 PowerShell 组合多个 objects 被输出,如果它们是相同的类型。当您执行 Get-ChildItem
时,您会看到相同的情况,如果 headers 将为每个项目输出一次,那将是非常奇怪的。
您可以通过显式使用 Format-Table
:
gwmi win32_bios | select serialnumber | ft
gwmi win32_bios | select serialnumber | ft
通常,命令的 整个 输出会通过管道传输到适合给定类型的内容中,这意味着您的脚本只会得到一个 Format-Table
,除非您自己做。