2014-12-05 79 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元素我很感兴趣。