2015-10-28 130 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))")}