powershell输出从processlist派生的多个变量

时间:2014-08-12 10:00:53

标签: powershell

我有下面的代码,它只是要求一个Windows ProcessName,然后返回正在运行的该进程的所有实例的列表。

$processName = Read-Host 'Please Enter the Process Name, as shown in Task Manager (not inc *32)'
if (!$processName) 
{ 
    "No Process Given"
}
else
{
    "You Entered "+$processName

    $filter = "name like '%"+$processName+"'"
    $result = Get-WmiObject win32_process -Filter $filter | select CommandLine

    $counter=1
    foreach($process in $result )
        {
            write-host "$counter) $process"
            $counter++
        }    
}

它可以正常工作,直到它输出列表。

如果我这样做

echo $process
然后我得到了我的意思,例如。

"C:\folder\AppName.exe"
"C:\folder\AppName.exe instance1"

但是,如果我尝试连接前面的$counter,我会得到:

1) @{CommandLine="C:\folder\AppName.exe" }      
2) @{CommandLine="C:\folder\AppName.exe instance1" }

我已尝试write-hostwrite-outputecho""+的各种组合,但我无法摆脱@{CommandLine= xxx } {1}}当我尝试将其与另一个变量

组合时

有没有办法让我得到的东西? e.g:

1) "C:\folder\AppName.exe"
2) "C:\folder\AppName.exe instance1"

1 个答案:

答案 0 :(得分:1)

尝试write-host "$counter) $($process.commandline)" 或修改您的选择: $result = Get-WmiObject win32_process -Filter $filter | select -expandproperty CommandLine

解释:如果没有expandproperty,你会得到一个带有expandproperty的psobject,你有一个字符串