String 无法将输出转换为字符串
我无法将此命令格式化为字符串。下面的代码以空字符串形式返回String 无法将输出转换为字符串,string,powershell,String,Powershell,我无法将此命令格式化为字符串。下面的代码以空字符串形式返回$r。为什么? $f = gwmi -ComputerName PCname -Class Win32_Process -Filter "name='process.exe'"| select {$_.WorkingSetSize/1MB}|fl $r = $f.ToString() 如果检查格式列表返回的对象类型,您将看到它是System.object的数组 $f = gwmi -ComputerName PCname -Clas
$r
。为什么?
$f = gwmi -ComputerName PCname -Class Win32_Process -Filter "name='process.exe'"|
select {$_.WorkingSetSize/1MB}|fl
$r = $f.ToString()
如果检查格式列表返回的对象类型,您将看到它是System.object的数组
$f = gwmi -ComputerName PCname -Class Win32_Process -Filter "name='process.exe'"| `
select {$_.WorkingSetSize/1MB}|fl
$r | get-member
如果您只需要工作集的值,请尝试以下操作:
gwmi -ComputerName PCname -Class Win32_Process -Filter "name='process.exe'" | `
select @{label='WorkingSetSize';expression={$_.WorkingSetSize/1MB}}| `
select -expandproperty WorkingSetSize
格式列表
生成字符串数组,而不是单个字符串,因此$f.ToString()
应该为您提供System.Object[]
。要将数组转换为单个字符串,可以将其通过管道传输到Out-string
cmdlet中:
$f = gwmi -ComputerName PCname -Class Win32_Process -Filter "name='process.exe'" |
select {$_.WorkingSetSize/1MB} | fl
$g = $f | Out-String
但是,如上所述,您至少应该获得
System.Object[]
,而不是空字符串,因此请仔细检查$f
的值,我发现-Filter“name='process.exe'对我不起作用。所以我换了
| where {$_.name -match "Process"}
这是我的结果,我还用LocalHost替换了PCname并删除了| fl
$r = gwmi -ComputerName localhost -Class Win32_Process | where {$_.name -match "Process"} |
select @{label='WorkingSetSize';expression={$_.WorkingSetSize/1MB}} |
select -expandproperty WorkingSetSize
$r.ToString()