0

저는 현재 및 사용 목적을 위해 powershell을 배우는 과정에 익숙하지 않습니다. 나는이 문제에 관해 많은 정보를 찾을 수 없기 때문에이 질문을 올리고있다.즉석에서 powershell에서 트리 노드를 생성하십시오.

우리 서버를 모두 treenode로 표시하는 GUI가있는 스크립트를 만들고 있습니다. 거기서 나는 서버 노드의 생성/생성/생성을 즉석에서하고 싶습니다 (즉, node'server1 '을 클릭하거나 선택하면 아래의 자식 노드가 생성되어야합니다). 우리는 많은 양의 서버를 가지고 있기 때문에 새로운 속성이 추가되면 모든 서버에서 자식 노드를 업데이트하고 싶지 않습니다. 아무도 이것을 수행하는 방법을 말해 줄 수 있습니까? 내 설명이 의미가 없으면 더 설명 할 수 있습니다.

..... 서버 1 . . ...... BIOSInfo (태그를 사용하여 서버 노드와 그 자식 노드를 구별합니다) . . ...... PROCInfo

내가 함께 사피엔스 원시 형태를 사용하고 여기

3.0 샘플 코드 PowerShell을;

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" 
    } 

답변

0

다음과 같이 작동합니다.

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() 
    } 
} 
관련 문제