1,ps7官方文档
2,使用脚本生成帮助文档
function Add-Node { param ( $selectedNode, $name, $tag ) $newNode = new-object System.Windows.Forms.TreeNode $newNode.Name = $name $newNode.Text = $name $newNode.Tag = $tag $selectedNode.Nodes.Add($newNode) | Out-Null return $newNode } function Get-HelpTree { if ($script:cmdletNodes) { $treeview1.Nodes.remove($script:cmdletNodes) $form1.Refresh() } $script:cmdletNodes = New-Object System.Windows.Forms.TreeNode $script:cmdletNodes.text = "PowerShell Help" $script:cmdletNodes.Name = "PowerShell Help" $script:cmdletNodes.Tag = "root" $treeView1.Nodes.Add($script:cmdletNodes) | Out-Null $treeView1.add_AfterSelect({ if ($this.SelectedNode.Tag -eq "Cmdlet") { $helpText = Get-Help $this.SelectedNode.Name -Full $richTextBox1.Text = $helpText | Out-String $linkLabel1.Text = $helpText.relatedLinks.navigationLink[0].uri $form1.refresh() } else { $richTextBox1.Text = "Example to show how to use TreeView control in PowerShell script" $linkLabel1.Text = "http://www.ravichaganti.com/blog" } }) #Generate Module nodes $modules = @("Microsoft.PowerShell.Core","Microsoft.PowerShell.Diagnostics","Microsoft.PowerShell.Host","Microsoft.PowerShell.Management","Microsoft.PowerShell.Security","Microsoft.PowerShell.Utility") $modules | % { $parentNode = Add-Node $script:cmdletNodes $_ "Module" $moduleCmdlets = Get-Command -Module $_ $moduleCmdlets | % { $childNode = Add-Node $parentNode $_.Name "Cmdlet" } } $script:cmdletNodes.Expand() } #Generated Form Function function GenerateForm { ######################################################################## # Code Generated By: SAPIEN Technologies PrimalForms (Community Edition) v1.0.7.0 # Generated On: 3/2/2010 5:46 PM # Generated By: Ravikanth Chaganti (http://www.ravichaganti.com/blog) ######################################################################## #region Import the Assemblies [reflection.assembly]::loadwithpartialname("System.Windows.Forms") | Out-Null [reflection.assembly]::loadwithpartialname("System.Drawing") | Out-Null #endregion #region Generated Form Objects $form1 = New-Object System.Windows.Forms.Form $linkLabel1 = New-Object System.Windows.Forms.LinkLabel $label4 = New-Object System.Windows.Forms.Label $label3 = New-Object System.Windows.Forms.Label $label2 = New-Object System.Windows.Forms.Label $button1 = New-Object System.Windows.Forms.Button $richTextBox1 = New-Object System.Windows.Forms.RichTextBox $treeView1 = New-Object System.Windows.Forms.TreeView $InitialFormWindowState = New-Object System.Windows.Forms.FormWindowState #endregion Generated Form Objects #---------------------------------------------- #Generated Event Script Blocks #---------------------------------------------- #Provide Custom Code for events specified in PrimalForms. $button1_OnClick= { $form1.Close() } $OnLoadForm_StateCorrection= {Get-HelpTree } $linkLabel1_OpenLink= { [system.Diagnostics.Process]::start($linkLabel1.text) } #---------------------------------------------- #region Generated Form Code $form1.Text = "Primal Form" $form1.Name = "form1" $form1.DataBindings.DefaultDataSourceUpdateMode = 0 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 838 $System_Drawing_Size.Height = 612 $form1.ClientSize = $System_Drawing_Size $linkLabel1.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",9,0,3,0) $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 539 $System_Drawing_Size.Height = 23 $linkLabel1.Size = $System_Drawing_Size $linkLabel1.TabIndex = 10 $linkLabel1.Text = "http://www.ravichaganti.com/blog" $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 253 $System_Drawing_Point.Y = 541 $linkLabel1.Location = $System_Drawing_Point $linkLabel1.TabStop = $True $linkLabel1.DataBindings.DefaultDataSourceUpdateMode = 0 $linkLabel1.Name = "linkLabel1" $linkLabel1.add_click($linkLabel1_OpenLink) $form1.Controls.Add($linkLabel1) $label4.TabIndex = 9 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 136 $System_Drawing_Size.Height = 23 $label4.Size = $System_Drawing_Size $label4.Text = "Cmdlet Help URI" $label4.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",9,1,3,0) $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 253 $System_Drawing_Point.Y = 518 $label4.Location = $System_Drawing_Point $label4.DataBindings.DefaultDataSourceUpdateMode = 0 $label4.Name = "label4" $form1.Controls.Add($label4) $label3.TabIndex = 6 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 100 $System_Drawing_Size.Height = 23 $label3.Size = $System_Drawing_Size $label3.Text = "Description" $label3.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",9,1,3,0) $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 255 $System_Drawing_Point.Y = 37 $label3.Location = $System_Drawing_Point $label3.DataBindings.DefaultDataSourceUpdateMode = 0 $label3.Name = "label3" $form1.Controls.Add($label3) $label2.TabIndex = 5 $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 177 $System_Drawing_Size.Height = 23 $label2.Size = $System_Drawing_Size $label2.Text = "PowerShell Help Tree" $label2.Font = New-Object System.Drawing.Font("Microsoft Sans Serif",9,1,3,0) $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 13 $System_Drawing_Point.Y = 13 $label2.Location = $System_Drawing_Point $label2.DataBindings.DefaultDataSourceUpdateMode = 0 $label2.Name = "label2" $form1.Controls.Add($label2) $button1.TabIndex = 4 $button1.Name = "button1" $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 75 $System_Drawing_Size.Height = 23 $button1.Size = $System_Drawing_Size $button1.UseVisualStyleBackColor = $True $button1.Text = "Close" $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 253 $System_Drawing_Point.Y = 577 $button1.Location = $System_Drawing_Point $button1.DataBindings.DefaultDataSourceUpdateMode = 0 $button1.add_Click($button1_OnClick) $form1.Controls.Add($button1) $richTextBox1.Name = "richTextBox1" $richTextBox1.Text = "" $richTextBox1.DataBindings.DefaultDataSourceUpdateMode = 0 $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 255 $System_Drawing_Point.Y = 61 $richTextBox1.Location = $System_Drawing_Point $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 562 $System_Drawing_Size.Height = 454 $richTextBox1.Size = $System_Drawing_Size $richTextBox1.TabIndex = 1 $form1.Controls.Add($richTextBox1) $System_Drawing_Size = New-Object System.Drawing.Size $System_Drawing_Size.Width = 224 $System_Drawing_Size.Height = 563 $treeView1.Size = $System_Drawing_Size $treeView1.Name = "treeView1" $System_Drawing_Point = New-Object System.Drawing.Point $System_Drawing_Point.X = 13 $System_Drawing_Point.Y = 37 $treeView1.Location = $System_Drawing_Point $treeView1.DataBindings.DefaultDataSourceUpdateMode = 0 $treeView1.TabIndex = 0 $form1.Controls.Add($treeView1) #endregion Generated Form Code #Save the initial state of the form $InitialFormWindowState = $form1.WindowState #Init the OnLoad event to correct the initial state of the form $form1.add_Load($OnLoadForm_StateCorrection) #Show the Form $form1.ShowDialog()| Out-Null } #End Function #Call the Function GenerateForm
3,查看命令帮助:man get-filehash / get-help get-filehash
4,get-filehash
1, 获取文件MD5
get-filehash xxx.txt -Algorithm MD5
2, 获取字符串MD5: 需要自定义函数实现, 这里的函数有些问题,比如例子中得出的“123456”的MD5值和实际不同:实际:E10ADC3949BA59ABBE56E057F20F883E答案:E1ADC3949BA59ABBE56E057F2F883E少了2位,当然也不是全部的0都去掉了。原因是字节转换成字符串的时候没有保证是2位宽度造成的,待研究。
function Get-Hash{ param( [string] $string = $(throw 'string is required'), [ValidateSet("MD5", "SHA256")] [string] $algorithm ) $utf8 = new-object -TypeName System.Text.UTF8Encoding $hasher = [System.Security.Cryptography.HashAlgorithm]::create($algorithm) $hash = $hasher.ComputeHash($utf8.GetBytes($string)) -join ( $hash | foreach {"{0:X}" -f $_} ) } Get-Hash '123456' -algorithm MD5 Get-Hash '123456' -algorithm SHA256
5,
6,