我正在为朋友编写一个powershell工具,以帮助他更轻松地管理一些服务器检查。 我有一个文件夹,我将存储每日日志文件。 我想要一个选项,其中工具列出所有文件,您可以单击它并自动打开。
这是我的代码,它读取文件夹:
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实现它?有时,当我在文本框中列出不同的窗口属性时,结果显示为链接,但我不知道它是如何编写的。 任何帮助如何做到这一点都会很棒。
以下是我创建输出框的方法。这是一个丰富的文本框
$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 :(得分:0)
看看Out-GridView cmdlet
。我知道它不是超链接,但我认为它会创建你想要的结果。
$data = 1..10
$data | ForEach-Object{Set-Content -Value $_ -Path "$_.txt"}
Get-ChildItem *.txt | Out-GridView -PassThru | %{& $_}
答案 1 :(得分: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)
}
然后我在它旁边创建了一个“打开文件”按钮,然后点击按钮我创建了一个小函数,它打开了调用项目所选文件:
function openreport
{
$openfile = $PSScriptRoot + "\reports\" + $DropDownBox2.SelectedItem.ToString()
invoke-item $openfile
}
如果有人知道如何从我感兴趣的richtextbox元素中创建这样的东西。