我目前正在研究Powershell,并且正在研究从Windows系统获取显示配置的脚本。
这是我用来获取显示器制造商和型号的数据并将其转换为字母数字,然后保存到system1.txt的脚本:
Get-WmiObject WmiMonitorID -Namespace root\wmi | ForEach-Object
{($_.ManufacturerName | foreach {[char]$_}) -join "";($_.UserFriendlyName |
foreach {[char]$_}) -join ""} | out-file -append system1.txt
输出如下:
ACI
ASUS PB287Q
SAM
SMS27A850
然后,我还创建一个脚本,用于在上述结果之前添加ManufacturerName和UserFriendlyName:
Get-WmiObject WmiMonitorID -Namespace root\wmi | Format-List
ManufacturerName,UserFriendlyName
输出为:
ManufacturerName : {65, 67, 73, 0...}
UserFriendlyName : {65, 83, 85, 83...}
ManufacturerName : {83, 65, 77, 0...}
UserFriendlyName : {83, 77, 83, 50...}
我的问题是:如何将两个脚本组合在一起以使输出看起来像并保存到system1.txt(而且,如何在system1.txt中将“ Model”替换为“ UserFriendlyName”):
Manufacturer: ACI
Model: ASUS PB287Q
Manufacturer: SAM
Model: SMS27A850
此外,有人建议我使用:
$ByteArray = @(65, 65, 61, 64, 64, 65)
$String = [System.Text.Encoding]::ASCII.GetString($ByteArray)
但是我不明白,你们还可以请我告诉我如何使用它吗?
感谢所有回复:)
答案 0 :(得分:1)
创建PSCustomObject:
Get-WmiObject WmiMonitorID -Namespace root\wmi | ForEach-Object {
[PSCustomObject]@{
Manufacturer = ($_.ManufacturerName | ForEach {[char]$_}) -join ""
Model = ($_.UserFriendlyName | ForEach {[char]$_}) -join ""
}
} | Format-List | Out-File .\system1.txt -Append -Encoding ascii
示例输出(具有两个Samsung Syncmaster):
> gc .\system1.txt
Manufacturer : SAM
Model : SyncMaster
Manufacturer : SAM
Model : SyncMaster