首页 > 解决方案 > powershell中变量声明的问题

问题描述

我已经声明了 2 个 PowerShell 变量

$prm=Get-WmiObject Win32_Product -Computer . -Filter "vendor = 'Wolters Kluwer Financial Services'" | Select-Object Name, Vendor, Version
$rgteng=Get-WmiObject Win32_Product -Computer . -Filter "vendor = 'WKFS'" | Select-Object Name, Vendor, Version

我希望将此变量输出到文本文件 o/p @{Name=Wolters Kluwer Financial Services Regulatory Reporting FRA Param 11.2.0; Vendor=Wolters Kluwer Financial Services; Version=11.2.0},我希望将此 o/p 输出到文本文件。

我试过使用Write-Outputand Write-Host,但没有一个能给出正确的 o/p

标签: powershell

解决方案


那里发生的事情看起来像这样(只是大图):

  1. Get-WmiObject Win32_Product -Computer . -Filter "vendor = 'Wolters Kluwer Financial Services'"创建一个 WMI 对象并将其通过管道传递给下一个命令

  2. Select-Object Name, Vendor, Version将该对象转换为新的 PSCustom 类型对象(更像是 WMI 对象的表格版本,仅包含所需的信息)

然后它变得混乱:

  • 如果您使用 write-host 或将其显示在屏幕上,输出将根据 powershell 的设置进行格式化(可以通过更改 xml 文件来更改这些设置)

  • 如果您使用,则export-csv基本上使用convertto-csv | out-file c:\sometheing.txt+一些已应用的格式规则。(我认为文件的 UTF-8 类型已更改,但我不确定...)

因此,如果您想确切了解变量/文件的外观,而又不让 powershell 格式干扰您的工作,请使用convertto-csv | out-file.


推荐阅读