Forum

PowerShell TreeView
 
Bildirimler
Hepsini Temizle

PowerShell TreeView

3 Yazılar
2 Üyeler
0 Reactions
670 Görüntüleme
(@GorkemKarayel)
Gönderiler: 24
Trusted Member
Konu başlatıcı
 

Herkese Merhaba , 

 

Aşağıda belirtmiş olduğum betikte sadece c:\dizini altındaki klasörleri ve içindeki ıtemların isim ve oluşturma tarihi hakkında bilgi vermektedir . Benim istediğim örneğin C:\ dizini altında sadece klasör değil tüm dosya ve klasörleri sıralaması . O yüzden bir yere ufak dokunuş yapmam gerekiyor ama bulamadım . Yardımcı olursanız çok sevinirim dostlar . 

 

Script : 

 

function OnApplicationLoad {
	
	return $true 
}
function OnApplicationExit {
	
	$script:ExitCode = 0 
}

function Call-Demo-TreeView_pff {
	
	[void][reflection.assembly]::Load("System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
	[void][reflection.assembly]::Load("System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
	[void][reflection.assembly]::Load("System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")
	[void][reflection.assembly]::Load("mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")
	
	[System.Windows.Forms.Application]::EnableVisualStyles()
	$form1 = New-Object 'System.Windows.Forms.Form'
	$splitcontainer1 = New-Object 'System.Windows.Forms.SplitContainer'
	$buttonExit = New-Object 'System.Windows.Forms.Button'
	$treeviewNav = New-Object 'System.Windows.Forms.TreeView'
	$imagelistLargeImages = New-Object 'System.Windows.Forms.ImageList'
	$imagelistSmallImages = New-Object 'System.Windows.Forms.ImageList'
	$listbox1 = New-Object 'System.Windows.Forms.ListBox'
	$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
	
	
	
	
	
	
	
	
	$FormEvent_Load={
		
		
	}
	
	$treeviewNav_AfterSelect=[System.Windows.Forms.TreeViewEventHandler]{
		Show-FolderDetails $treeviewNav.SelectedNode.Tag
	}
	
	$treeviewNav_DoubleClick={
		$node=$treeviewNav.SelectedNode
		if($node.Nodes.Count -eq 0){
		    #[system.Windows.Forms.MessageBox]::Show($_.Node.Tag)
			$children=dir $($node.Tag) |?{$_.PsIsContainer}
			foreach($child in $children){
				if($child){
					$newnode=New-Object System.Windows.Forms.TreeNode 
				    $newnode.Name=$child.Name
				 	$newnode.Text=$child.Name
					$newnode.Tag=$child.FullName
					$node.Nodes.Add($newnode)			
				}
			}
			$node.Expand()
			Show-FolderDetails $node.Tag
		}
	}
	
	function Show-FolderDetails($foldername){
		$item=[System.IO.DirectoryInfo]$foldername
		$listbox1.Items.Clear()
		$listbox1.Items.Add("Name:$($item.Name)")
		$listbox1.Items.Add("CreationTIme:$($item.CreationTime)")
		$listbox1.Items.Add("LastWriteTime:$($item.LastWriteTime)")
	}
	
	
	
	$Form_StateCorrection_Load=
	{
		
		$form1.WindowState = $InitialFormWindowState
	}
	
	$Form_Cleanup_FormClosed=
	{
		
		try
		{
			$form1.remove_Load($FormEvent_Load)
			$treeviewNav.remove_AfterSelect($treeviewNav_AfterSelect)
			$treeviewNav.remove_DoubleClick($treeviewNav_DoubleClick)
			$form1.remove_Load($Form_StateCorrection_Load)
			$form1.remove_FormClosed($Form_Cleanup_FormClosed)
		}
		catch [Exception]
		{ }
	}
	
	$form1.Controls.Add($splitcontainer1)
	$form1.Controls.Add($buttonExit)
	$form1.ClientSize = '640, 392'
	$form1.Name = "form1"
	$form1.StartPosition = 'CenterScreen'
	$form1.Text = "Form"
	$form1.add_Load($FormEvent_Load)
	
	$splitcontainer1.Anchor = 'Top, Bottom, Left, Right'
	$splitcontainer1.Location = '12, 12'
	$splitcontainer1.Name = "splitcontainer1"
	[void]$splitcontainer1.Panel1.Controls.Add($treeviewNav)
	[void]$splitcontainer1.Panel2.Controls.Add($listbox1)
	$splitcontainer1.Size = '616, 341'
	$splitcontainer1.SplitterDistance = 199
	$splitcontainer1.TabIndex = 3
	
	$buttonExit.DialogResult = 'Cancel'
	$buttonExit.Location = '553, 359'
	$buttonExit.Name = "buttonExit"
	$buttonExit.Size = '75, 23'
	$buttonExit.TabIndex = 2
	$buttonExit.Text = "E&xit"
	$buttonExit.UseVisualStyleBackColor = $True
	
	$treeviewNav.Dock = 'Fill'
	$treeviewNav.Location = '0, 0'
	$treeviewNav.Name = "treeviewNav"
	$System_Windows_Forms_TreeNode_1 = New-Object 'System.Windows.Forms.TreeNode' ("C:\")
	$System_Windows_Forms_TreeNode_1.Name = "Node0"
	$System_Windows_Forms_TreeNode_1.Tag = "c:\"
	$System_Windows_Forms_TreeNode_1.Text = "C:\"
	[void]$treeviewNav.Nodes.Add($System_Windows_Forms_TreeNode_1)
	$treeviewNav.Size = '199, 341'
	$treeviewNav.TabIndex = 0
	$treeviewNav.Tag = ""
	$treeviewNav.add_AfterSelect($treeviewNav_AfterSelect)
	$treeviewNav.add_DoubleClick($treeviewNav_DoubleClick)
	
	$imagelistLargeImages.ColorDepth = 'Depth32Bit'
	$imagelistLargeImages.ImageSize = '32, 32'
	$imagelistLargeImages.TransparentColor = 'Transparent'
	
	$imagelistSmallImages.ColorDepth = 'Depth32Bit'
	$imagelistSmallImages.ImageSize = '16, 16'
	$imagelistSmallImages.TransparentColor = 'Transparent'
	
	$listbox1.FormattingEnabled = $True
	$listbox1.Location = '3, 3'
	$listbox1.Name = "listbox1"
	$listbox1.Size = '407, 329'
	$listbox1.TabIndex = 0
	
	$InitialFormWindowState = $form1.WindowState
	
	$form1.add_Load($Form_StateCorrection_Load)
	
	$form1.add_FormClosed($Form_Cleanup_FormClosed)
	
	return $form1.ShowDialog()
} 

if((OnApplicationLoad) -eq $true)
{
	
	Call-Demo-TreeView_pff | Out-Null
	
	OnApplicationExit
}
 
Gönderildi : 27/10/2015 16:29

(@ozgurmazlum)
Gönderiler: 2208
Illustrious Member
 

Sadece dosya ve alt dizinleri için biraz fazla detaylı bir fonksiyon kullanmışsınız. powershell childitemleri listelerken -Recurse parametresi ile alt dizinleride dahil edebiliyorsunuz

 
Gönderildi : 28/10/2015 14:30

(@GorkemKarayel)
Gönderiler: 24
Trusted Member
Konu başlatıcı
 

Cevap için teşekkür ederim -recuse ile evet dosyaları ve klasörlerin sıralıyorum ancak daha sonra her bir dosya da klasör özelliği ile hareket ediyor . 

 
Gönderildi : 29/10/2015 15:07

Paylaş: