2015-10-28 133 views
0

我正在编写一个Powershell GUI脚本,该脚本显示使用组合框在系统上运行的所有进程名称的列表。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 
} 

}

回答

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 
+0

辉煌!有什么特别的网站,我可以检查这种语法?我知道这是非常基本的东西,但我盯着Powershell GUI脚本... 现在我得到的问题是,我想显示有关所选择的具体过程的信息,这不工作了... $ buttonView_Click = { \t #TODO:将自定义脚本这里 \t如果($ combobox1.SelectedIndex -gt -1) \t { \t \t $ textbox1.Text =获取进程($ combobox1.SelectedItem)|输出字符串 \t} \t } – miticoluis

+1

如果我用我已经更新了答案... – Avshalom

+0

“$ combobox1.selecteditem.text”它说,名称为空。 如果我尝试这样做,它完美的作品:$ ProcessName =($ combobox1.SelectedItem) - 替换“\(。* \)” \t \t $ textbox1.Text =(Get-Process $ ProcessName) Out-String 请注意,我还必须添加一个空格以替换“\(。* \)”再次感谢您 – miticoluis

0

简单的解决方案:

get-process | %{$combobox.items.add("$($_.name)($($_.id))")}