ASCII转换,格式列表并输出到txt文件

时间:2018-07-16 15:04:40

标签: powershell

我目前正在研究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)

但是我不明白,你们还可以请我告诉我如何使用它吗?

感谢所有回复:)

1 个答案:

答案 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