如何在 GUI 中将 PsObject 输出和格式化为多行文本框
How to output and format PsObject to multine text box in GUI
我正在使用 Powershell 脚本中的 WMI 图形用户界面。我如何格式化 PsObject 以在多行文本框中输出,以便 PsObject 的每个 属性 都在其自己的行中?
这是为了我自己的学习目的 - 我知道有一些工具可以收集 WMI :)
您可以使用 ForEach-Object
遍历 PSObject 中的属性,或者按照@Theo
的建议使用内联 Format-List
这是满足您要求的示例代码片段
$Form = New-Object System.Windows.Forms.Form
$Form.Size = New-Object System.Drawing.Size(400,400)
$Form.StartPosition = "CenterScreen"
$objTextBox1 = New-Object System.Windows.Forms.TextBox
$objTextBox1.Multiline = $True;
$objTextBox1.Location = New-Object System.Drawing.Size(10,10)
$objTextBox1.Size = New-Object System.Drawing.Size(300,400)
$objTextBox1.Scrollbars = "Vertical"
$Form.Controls.Add($objTextBox1)
$output = Get-ComputerInfo -Property "os*"
$output.PSObject.Properties | ForEach-Object {
$objTextBox1.Text = $objTextBox1.Text + "$($_.Name): $($_.Value)`r`n";
#Write-Host "$($_.Name): $($_.Value)`r`n"
}
$form.ShowDialog()| Out-Null
我正在使用 Powershell 脚本中的 WMI 图形用户界面。我如何格式化 PsObject 以在多行文本框中输出,以便 PsObject 的每个 属性 都在其自己的行中?
这是为了我自己的学习目的 - 我知道有一些工具可以收集 WMI :)
您可以使用 ForEach-Object
遍历 PSObject 中的属性,或者按照@Theo
Format-List
这是满足您要求的示例代码片段
$Form = New-Object System.Windows.Forms.Form
$Form.Size = New-Object System.Drawing.Size(400,400)
$Form.StartPosition = "CenterScreen"
$objTextBox1 = New-Object System.Windows.Forms.TextBox
$objTextBox1.Multiline = $True;
$objTextBox1.Location = New-Object System.Drawing.Size(10,10)
$objTextBox1.Size = New-Object System.Drawing.Size(300,400)
$objTextBox1.Scrollbars = "Vertical"
$Form.Controls.Add($objTextBox1)
$output = Get-ComputerInfo -Property "os*"
$output.PSObject.Properties | ForEach-Object {
$objTextBox1.Text = $objTextBox1.Text + "$($_.Name): $($_.Value)`r`n";
#Write-Host "$($_.Name): $($_.Value)`r`n"
}
$form.ShowDialog()| Out-Null