Windows 动态在powershell中生成树节点
我目前还不熟悉powershell,并且正在学习powershell的过程中。我发布这个问题是因为我在任何地方都找不到关于这个问题的很多信息 我正在创建一个带有gui的脚本,它将所有服务器都列为TreeNode。从那里,我想动态生成/填充/创建服务器的子节点(即,当单击或选择节点“server1”时,它应该生成子节点,如下所示)。由于我们有大量的服务器,我不想在添加新属性时更新每台服务器上的子节点。谁能告诉我如何做到这一点?如果我的描述不合理,我可以解释得更多 …服务器1 . . ……BioInfo(我正在使用标记来区分服务器节点及其子节点) . . ……PROCInfo 等 我将sapien原始表单与powershell 3.0一起使用 下面是示例代码Windows 动态在powershell中生成树节点,windows,powershell,windows-forms-designer,inventory,tree-nodes,Windows,Powershell,Windows Forms Designer,Inventory,Tree Nodes,我目前还不熟悉powershell,并且正在学习powershell的过程中。我发布这个问题是因为我在任何地方都找不到关于这个问题的很多信息 我正在创建一个带有gui的脚本,它将所有服务器都列为TreeNode。从那里,我想动态生成/填充/创建服务器的子节点(即,当单击或选择节点“server1”时,它应该生成子节点,如下所示)。由于我们有大量的服务器,我不想在添加新属性时更新每台服务器上的子节点。谁能告诉我如何做到这一点?如果我的描述不合理,我可以解释得更多 …服务器1 . . ……BioIn
function NodeClick( $object )
{
if ($this.SelectedNode.Tag -eq "Server")
{
$Server = $this.selectednode.text
$richTextBox1.Text = "Script for $Server Information"
#~~< TreeNode11 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1111 = New-Object System.Windows.Forms.TreeNode("OS")
$TreeNode1111.Tag = "DevInfo"
$TreeNode1111.Text = "OS"
#~~< TreeNode12 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1222 = New-Object System.Windows.Forms.TreeNode("Domain")
$TreeNode1222.Tag = "DevInfo"
$TreeNode1222.Text = "Domain"
#~~< TreeNode13 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1333 = New-Object System.Windows.Forms.TreeNode("Serial")
$TreeNode1333.Tag = "DevInfo"
$TreeNode1333.Text = "Serial"
#~~< TreeNode14 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1444 = New-Object System.Windows.Forms.TreeNode("BIOS")
$TreeNode1444.Tag = "DevInfo"
$TreeNode1444.Text = "BIOS"
#~~< TreeNode15 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1555 = New-Object System.Windows.Forms.TreeNode("Processor")
$TreeNode1555.Tag = "DevInfo"
$TreeNode1555.Text = "Processor"
#~~< TreeNode16 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1666 = New-Object System.Windows.Forms.TreeNode("Memory")
$TreeNode1666.Tag = "DevInfo"
$TreeNode1666.Text = "Memory"
#~~< TreeNode17 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1777 = New-Object System.Windows.Forms.TreeNode("Partitions")
$TreeNode1777.Tag = "DevInfo"
$TreeNode1777.Text = "Partitions"
#~~< TreeNode18 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1888 = New-Object System.Windows.Forms.TreeNode("Drive")
$TreeNode1888.Tag = "DevInfo"
$TreeNode1888.Text = "Drive"
#~~< TreeNode19 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1999 = New-Object System.Windows.Forms.TreeNode("IPInfo")
$TreeNode1999.Tag = "DevInfo"
$TreeNode1999.Text = "IPInfo"
#~~< TreeNode110 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2111 = New-Object System.Windows.Forms.TreeNode("PrintInfo")
$TreeNode2111.Tag = "DevInfo"
$TreeNode2111.Text = "PrintInfo"
#~~< TreeNode111 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2222 = New-Object System.Windows.Forms.TreeNode("FolderShare")
$TreeNode2222.Tag = "DevInfo"
$TreeNode2222.Text = "FolderShare"
#~~< TreeNode112 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2333 = New-Object System.Windows.Forms.TreeNode("Tasks")
$TreeNode2333.Tag = "DevInfo"
$TreeNode2333.Text = "Tasks"
#~~< TreeNode113 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2444 = New-Object System.Windows.Forms.TreeNode("Services")
$TreeNode2444.Tag = "DevInfo"
$TreeNode2444.Text = "Services"
#~~< TreeNode114 >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2555 = New-Object System.Windows.Forms.TreeNode("Software")
$TreeNode2555.Tag = "DevInfo"
$TreeNode2555.Text = "Software"
$this.SelectedNode = New-Object System.Windows.Forms.TreeNode("DOCACT01", [System.Windows.Forms.TreeNode[]] ( @($TreeNode1111, $TreeNode1222, $TreeNode1333, $TreeNode1444, $TreeNode1555, $TreeNode1666, $TreeNode1777, $TreeNode1888, $TreeNode1999, $TreeNode2111, $TreeNode2222, $TreeNode2333, $TreeNode2444, $TreeNode2555) ))
$this.SelectedNode.Tag = "Server"
$this.SelectedNode.Text = "$Server"
$form1.refresh()
}
else
{
$this.SelectedNode.expand()
$richTextBox1.Text = "Script for Server Information"
}
函数节点单击($object)
{
if($this.SelectedNode.Tag-eq“Server”)
{
$Server=$this.selectednode.text
$richTextBox1.Text=“用于$Server信息的脚本”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1111=新对象System.Windows.Forms.TreeNode(“OS”)
$TreeNode1111.Tag=“DevInfo”
$TreeNode1111.Text=“OS”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1222=新对象System.Windows.Forms.TreeNode(“域”)
$TreeNode1222.Tag=“DevInfo”
$TreeNode1222.Text=“域”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1333=新对象System.Windows.Forms.TreeNode(“串行”)
$TreeNode1333.Tag=“DevInfo”
$TreeNode1333.Text=“串行”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1444=新对象System.Windows.Forms.TreeNode(“BIOS”)
$TreeNode1444.Tag=“DevInfo”
$TreeNode1444.Text=“BIOS”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1555=新对象System.Windows.Forms.TreeNode(“处理器”)
$TreeNode1555.Tag=“DevInfo”
$TreeNode1555.Text=“处理器”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1666=新对象System.Windows.Forms.TreeNode(“内存”)
$TreeNode1666.Tag=“DevInfo”
$TreeNode1666.Text=“内存”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1777=新对象System.Windows.Forms.TreeNode(“分区”)
$TreeNode1777.Tag=“DevInfo”
$TreeNode1777.Text=“分区”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1888=新对象System.Windows.Forms.TreeNode(“驱动器”)
$TreeNode1888.Tag=“DevInfo”
$TreeNode1888.Text=“驱动器”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode1999=新对象System.Windows.Forms.TreeNode(“IPInfo”)
$TreeNode1999.Tag=“DevInfo”
$TreeNode1999.Text=“IPInfo”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2111=新对象System.Windows.Forms.TreeNode(“打印信息”)
$TreeNode2111.Tag=“DevInfo”
$TreeNode2111.Text=“PrintInfo”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2222=新对象System.Windows.Forms.TreeNode(“FolderShare”)
$TreeNode2222.Tag=“DevInfo”
$TreeNode2222.Text=“FolderShare”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2333=新对象System.Windows.Forms.TreeNode(“任务”)
$TreeNode2333.Tag=“DevInfo”
$TreeNode2333.Text=“任务”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2444=新对象System.Windows.Forms.TreeNode(“服务”)
$TreeNode2444.Tag=“DevInfo”
$TreeNode2444.Text=“服务”
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
$TreeNode2555=新对象System.Windows.Forms.TreeNode(“软件”)
$TreeNode2555.Tag=“DevInfo”
$TreeNode2555.Text=“软件”
$this.SelectedNode=New Object System.Windows.Forms.TreeNode(“DOCACT01”、[System.Windows.Forms.TreeNode[])(@($TreeNode1111、$TreeNode1222、$TreeNode1333、$TreeNode1444、$TreeNode1555、$TreeNode1666、$TreeNode1777、$TreeNode1888、$TreeNode1999、$TreeNode2111、$TreeNode2222、$TreeNode2333、$TreeNode2444、$TreeNode2555)))
$this.SelectedNode.Tag=“服务器”
$this.SelectedNode.Text=“$Server”
$form1.refresh()
}
其他的
{
$this.SelectedNode.expand()
$richTextBox1.Text=“服务器信息脚本”
}
使其工作如下
function NodeClick( $object )
{
if (($this.SelectedNode.Tag -eq "Server") -and ($this.SelectedNode.nodes.count -eq 0))
{
$Parent = $this.SelectedNode
$richTextBox1.text = "Server Inventory Script"
$Server = $Parent.text
$Childs = ("OS", "Domain", "Serial", "BIOS", "Processor", "Memory", "Partitions", "Drive", "IPInfo", "PrintInfo", "FolderShare", "Tasks", "Services", "Software")
$childs | %{
$newNode = New-Object System.Windows.Forms.TreeNode
$newNode.Name = $_
$newNode.Text = $_
$newNode.Tag = "DevInfo"
$Parent.Nodes.Add($newNode) | Out-Null
return $newNode
$Form1.refresh()
}
}