2014-12-05 81 views
-1

我正在爲朋友編寫一個PowerShell工具,以幫助他更輕鬆地管理某些服務器檢查。 我有一個文件夾,我將存儲每日日誌文件。 我想要一個選項,其中工具列出所有文件,您可以點擊它並自動打開。如何在PowerShell中創建可點擊鏈接GUI

這是我的代碼讀取該文件夾:

function reportlist 
{ 
    $reportfiles = $PSScriptRoot + "\reports\" 
    $reportlist = Get-ChildItem -path $reportfiles 
    foreach ($report in $reportlist) 
    { 
     $outputBox.text += "" + $report + "`n" 
    } 
} 

所以基本上我閱讀使用Get0Chiditem的文件和材料,整個事情成線的文本框線。 ,這是它看起來像在GUI窗口(我不能發表圖片)

report_1_date_xx_xx_xxxx.html 
report_2_date_xx_xx_xxxx.html 
report_3_date_xx_xx_xxxx.html 
report_4_date_xx_xx_xxxx.html 
report_5_date_xx_xx_xxxx.html 

這些都是我想在HTML變成像鏈接例如文件。 是否可以從GUI實現它?有時,當我在文本框中列出不同的windows propertys時,結果顯示爲鏈接,但我不知道它是如何寫入的。 任何幫助如何做到這一點將是偉大的。

這裏是我如何創建de輸出框。它是一個豐富的文本框

$outputBox = New-Object System.Windows.Forms.richTextBox 
$outputBox.Location = New-Object System.Drawing.Size(400,40) 
$outputBox.Size = New-Object System.Drawing.Size(600,500) 
$outputBox.MultiLine = $True 
$outputBox.ScrollBars = "Vertical" 
$outputBox.font = "Courier new" 
$Form.Controls.Add($outputBox) 

至於UI的生成,每個對象的定義方式都是類似的。我不使用XAML方法(我心中已經看到了另一種方式來創造PowerShell的GUI)

這是主要形式的定義:

$form = New-Object Windows.Forms.Form 
$form.Size = New-Object System.Drawing.Size(1050,600) 
$form.ShowDialog() 
+0

你不會告訴我們'$ outputbox'是什麼,或者它是如何定義的。 – TheMadTechnician 2014-12-06 00:03:06

+0

基本思想是使用超鏈接控件;一旦你提到你正在使用的UI產品,我可以解釋更多。 – 2014-12-06 02:08:34

+0

Thx爲失蹤的信息。我用文本框的定義編輯了qestion。這是一個richtextbox。 – Zsolt 2014-12-06 12:16:11

回答

0

看一看的Out-GridView cmdlet。我知道這不是一個超鏈接,但我認爲它會創建你想要的結果。

$data = 1..10 

$data | ForEach-Object{Set-Content -Value $_ -Path "$_.txt"} 

Get-ChildItem *.txt | Out-GridView -PassThru | %{& $_} 
+0

Thx的想法。我也一直在嘗試Out-Gridview。我創建了gridview,但鏈接無法在doubleclick上打開:(......或者我做錯了什麼...... – Zsolt 2014-12-06 12:31:13

+0

如果添加'-PassThru'參數,應該有一個OK按鈕,用戶可以選擇多個項目如果需要的話,最後一點|%{&$ _}只是執行所選內容,您可能需要對其進行自定義。 – kevmar 2014-12-09 06:07:47

0

好的...還沒有找到任何解決方案。但是,我創建了一個解決辦法:

我創建了一個下拉菜單:

$DropDownBox2 = New-Object System.Windows.Forms.ComboBox 
$DropDownBox2.Location = New-Object System.Drawing.Size(10,350) 
$DropDownBox2.Size = New-Object System.Drawing.Size(180,20) 
$DropDownBox2.DropDownHeight = 200 
$Form.Controls.Add($DropDownBox2) 
$reportfiles = $PSScriptRoot + "\reports\" 
$reportlist = Get-ChildItem -path $reportfiles 
foreach ($report in $reportlist) 
    { 
     $DropDownBox2.Items.Add($report) 
    }  

然後創建旁邊一個「打開文件」按鈕,將其和的onclick我所做的按鈕的一個小功能泰德與打開調用項目選擇的文件:

function openreport 
{ 
    $openfile = $PSScriptRoot + "\reports\" + $DropDownBox2.SelectedItem.ToString() 
    invoke-item $openfile 
} 

不過,如果任何人有一個想法如何使這樣的事情從一個RichTextBox元素我很感興趣。