我有下面的代码,它只是要求一个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-host
,write-output
,echo
,""
,+
的各种组合,但我无法摆脱@{CommandLine= xxx }
{1}}当我尝试将其与另一个变量
有没有办法让我得到的东西? e.g:
1) "C:\folder\AppName.exe"
2) "C:\folder\AppName.exe instance1"
答案 0 :(得分:1)
尝试write-host "$counter) $($process.commandline)"
或修改您的选择:
$result = Get-WmiObject win32_process -Filter $filter | select -expandproperty CommandLine
解释:如果没有expandproperty,你会得到一个带有expandproperty的psobject,你有一个字符串