2014-02-07 3 views
0

이 명령을 문자열로 포맷 할 수 없습니다. 아래 코드는 $r을 빈 문자열로 반환합니다. 왜?출력을 문자열로 변환 할 수 없습니다.

$f = gwmi -ComputerName PCname -Class Win32_Process -Filter "name='process.exe'"| 
    select {$_.WorkingSetSize/1MB}|fl 
$r = $f.ToString() 

답변

0

Format-List에서 반환 한 개체 유형을 확인하면 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 
+0

감사 | 그래서 나는이 내 결과, 나는 또한 PCname으로 localhost를 대체하고 제거

| where {$_.name -match "Process"} 

교체. – ko4evneg

0

Format-List 문자열 배열이 아닌 하나의 문자열을 생산, 그래서 $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의 가치를 다시 한 번 확인 .

0

내가 발견 한 것은 -Filter "name = 'process.exe'"가 나를 위해 작동하지 않는다는 것입니다. 즉, 내가 원하는 정확히 수행, 플로리다

$r = gwmi -ComputerName localhost -Class Win32_Process | where {$_.name -match "Process"} | 
select @{label='WorkingSetSize';expression={$_.WorkingSetSize/1MB}} | 
select -expandproperty WorkingSetSize 
$r.ToString() 
관련 문제