我编写了一个Powershell GUI脚本,该脚本显示了使用组合框在系统上运行的所有进程名称的列表。
我想在括号中显示进程名称后跟进程ID。 即
Internet explorer (4)
Chrome (100)
Skype (33)
这是我已经获得的代码。到目前为止,我只能显示流程名称,我不知道如何显示流程ID,任何建议?
$MainForm_Load={
#TODO: Initialize Form Controls here
$processes = Get-Process
foreach ($process in $processes)
{
Load-ComboBox $combobox1 $process.ProcessName -Append
}
}
答案 0 :(得分:1)
您可以使用格式字符串(-f)
$MainForm_Load={
#TODO: Initialize Form Controls here
$processes = Get-Process
foreach ($process in $processes)
{
$CurrentProcess = "{0} ({1})" -f $process.Name,$process.id
Load-ComboBox $combobox1 $CurrentProcess -Append
}
关于您的评论问题,
首先它应该是:get-process $combobox1.selecteditem.text
但它仍然不起作用,因为例如名称“Chrome(100)”不是有效的进程名称,因此您需要先将其拆分以删除进程ID (100),
你可以试试这个
$ProcessName = ($combobox1.selecteditem.text) -replace "\(.*\)"
然后使用
$textbox1.text = (get-process $ProcessName) | Out-String
答案 1 :(得分:0)
简单的解决方案:
get-process | %{$combobox.items.add("$($_.name)($($_.id))")}