代码改变世界

[Windows Powershell]-学习笔记(2)

2014-04-16 18:15  Eric.Hu  阅读(833)  评论(0编辑  收藏  举报
  1. 数学运算

我们可以把powershell当成一个计算器。如键入命令行那样输入数学表达式,回车,powershell会自动计算并把结果输出。常用的加减乘除模(+,-,*,/,%)运算和小括号表达式都支持。

powershell也能自动识别计算机容量单位,包括KB,MB,GB,TB,PB

 

  1. Powershell执行外部命令

Powershell能像cmd一样执行外部命令,

如使用netstat –an 查看网络端口连接

使用ipconfig 查看本机ip地址

使用route print查看路由信息

 

启动控制台CMD,使用exit退出CMD

 

查看CMD的帮助命令,可以通过/c来接收命令参数(help)

Cmd /c help

 

启动外部程序,如notepad,但为什么不能启动winword呢,因为winword的路劲未包含在powershell的环境变量里

我们还可以使用&来执行文本命令,如cmd == &"cmd.exe"

 

  1. Powershell 命令集cmdlets

cmdlets是Powershell的内部命令,cmdlet的类型名为System.Management.Automation.CmdletInfo,包含下列属性和方法:

Name 

MemberType 

Definition 

Equals 

Method 

bool Equals(System.Object obj) 

GetHashCode 

Method 

int GetHashCode() 

GetType 

Method 

type GetType() 

ToString 

Method 

string ToString() 

CommandType

Property 

System.Management.Automation.CommandTypes CommandType {get;} 

DefaultParameterSet 

Property 

System.String DefaultParameterSet {get;} 

Definition 

Property 

System.String Definition {get;} 

HelpFile 

Property 

System.String HelpFile {get;} 

ImplementingType

Property 

System.Type ImplementingType {get;} 

Module 

Property 

System.Management.Automation.PSModuleInfo Module {get;} 

ModuleName 

Property 

System.String ModuleName {get;} 

Name 

Property 

System.String Name {get;} 

Noun 

Property 

System.String Noun {get;}

OutputType 

Property 

System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Management.Automation.PSTypeName, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] OutputType {get;} 

Parameters 

Property

System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Management.Automation.ParameterMetadata, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] Parameters {get;}

ParameterSets 

Property 

System.Collections.ObjectModel.ReadOnlyCollection`1[[System.Management.Automation.CommandParameterSetInfo, System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]] ParameterSets {get;}

PSSnapIn 

Property 

System.Management.Automation.PSSnapInInfo PSSnapIn {get;} 

Verb 

Property 

System.String Verb {get;} 

Visibility 

Property 

System.Management.Automation.SessionStateEntryVisibility Visibility {get;set;} 

DLL 

ScriptProperty 

System.Object DLL {get=$this.ImplementingType.Assembly.Location;} 

HelpUri 

ScriptProperty 

System.Object HelpUri {get=try
{
# ok to cast CommandTypes enum to HelpCategory because string/indentifier for
# cmdlet,function,filter,alias,externalscript is identical.
# it is ok to fail for other enum values (i.e. for Application)
$helpObject = get-help -Name ($this.Name) -Category ([string]($this.CommandType)) -ErrorAction SilentlyContinue# return first non-null uri (and try not to hit any strict mode things)
if ($helpObject -eq $null) { return $null }
if ($helpObject.psobject.properties['relatedLinks'] -eq $null) { return $null }
if ($helpObject.relatedLinks.psobject.properties['navigationLink'] -eq $null) { return $null }
$helpUri = [string]$( $helpObject.relatedLinks.navigationLink | %{ if ($_.psobject.properties['uri'] -ne $null) { $_.uri } } | ?{ $_ } | select -first 1 )
return $helpUri
}
catch {};}

下面是全部的Cmdlets命令

每个命令有一个动词和名词组成,命令的作用一目了然。

Name 

ModuleName 

Help 

Add-Computer 

Microsoft.PowerShell.Management 

help

Add-Content 

Microsoft.PowerShell.Management 

help

Add-History 

Microsoft.PowerShell.Core 

help

Add-Member 

Microsoft.PowerShell.Utility 

help

Add-PSSnapin 

Microsoft.PowerShell.Core

help

Add-Type 

Microsoft.PowerShell.Utility 

help

Checkpoint-Computer 

Microsoft.PowerShell.Management 

help

Clear-Content 

Microsoft.PowerShell.Management 

help

Clear-EventLog 

Microsoft.PowerShell.Management 

help

Clear-History 

Microsoft.PowerShell.Core 

help

Clear-Item 

Microsoft.PowerShell.Management 

help

Clear-ItemProperty 

Microsoft.PowerShell.Management

help

Clear-Variable 

Microsoft.PowerShell.Utility 

help

Compare-Object 

Microsoft.PowerShell.Utility 

help

Complete-Transaction 

Microsoft.PowerShell.Management 

help

Connect-WSMan 

Microsoft.WSMan.Management 

help

ConvertFrom-Csv 

Microsoft.PowerShell.Utility 

help

ConvertFrom-SecureString 

Microsoft.PowerShell.Security 

help

ConvertFrom-StringData 

Microsoft.PowerShell.Utility

help

Convert-Path 

Microsoft.PowerShell.Management 

help

ConvertTo-Csv 

Microsoft.PowerShell.Utility 

help

ConvertTo-Html 

Microsoft.PowerShell.Utility 

help

ConvertTo-SecureString 

Microsoft.PowerShell.Security 

help

ConvertTo-Xml 

Microsoft.PowerShell.Utility 

help

Copy-Item 

Microsoft.PowerShell.Management 

help

Copy-ItemProperty 

Microsoft.PowerShell.Management

help

Debug-Process 

Microsoft.PowerShell.Management 

help

Disable-ComputerRestore 

Microsoft.PowerShell.Management 

help

Disable-PSBreakpoint 

Microsoft.PowerShell.Utility 

help

Disable-PSSessionConfiguration 

Microsoft.PowerShell.Core 

help

Disable-WSManCredSSP 

Microsoft.WSMan.Management 

help

Disconnect-WSMan 

Microsoft.WSMan.Management 

help

Enable-ComputerRestore 

Microsoft.PowerShell.Management 

help

Enable-PSBreakpoint 

Microsoft.PowerShell.Utility 

help

Enable-PSRemoting 

Microsoft.PowerShell.Core 

help

Enable-PSSessionConfiguration 

Microsoft.PowerShell.Core 

help

Enable-WSManCredSSP 

Microsoft.WSMan.Management

help

Enter-PSSession 

Microsoft.PowerShell.Core 

help

Exit-PSSession 

Microsoft.PowerShell.Core 

help

Export-Alias 

Microsoft.PowerShell.Utility 

help

Export-Clixml 

Microsoft.PowerShell.Utility 

help

Export-Console 

Microsoft.PowerShell.Core

help

Export-Counter 

Microsoft.PowerShell.Diagnostics 

help

Export-Csv 

Microsoft.PowerShell.Utility 

help

Export-FormatData 

Microsoft.PowerShell.Utility 

help

Export-ModuleMember 

Microsoft.PowerShell.Core 

help

Export-PSSession 

Microsoft.PowerShell.Utility 

help

ForEach-Object 

Microsoft.PowerShell.Core 

help

Format-Custom 

Microsoft.PowerShell.Utility

help

Format-List 

Microsoft.PowerShell.Utility 

help

Format-Table 

Microsoft.PowerShell.Utility 

help

Format-Wide 

Microsoft.PowerShell.Utility 

help

Get-Acl 

Microsoft.PowerShell.Security 

help

Get-Alias

Microsoft.PowerShell.Utility 

help

Get-AuthenticodeSignature 

Microsoft.PowerShell.Security 

help

Get-ChildItem 

Microsoft.PowerShell.Management

help

Get-Command 

Microsoft.PowerShell.Core 

help

Get-ComputerRestorePoint 

Microsoft.PowerShell.Management 

help

Get-Content 

Microsoft.PowerShell.Management 

help

Get-Counter 

Microsoft.PowerShell.Diagnostics 

help

Get-Credential 

Microsoft.PowerShell.Security 

help

Get-Culture 

Microsoft.PowerShell.Utility 

help

Get-Date 

Microsoft.PowerShell.Utility

help

Get-Event 

Microsoft.PowerShell.Utility 

help

Get-EventLog 

Microsoft.PowerShell.Management 

help

Get-EventSubscriber 

Microsoft.PowerShell.Utility 

help

Get-ExecutionPolicy 

Microsoft.PowerShell.Security 

help

Get-FormatData 

Microsoft.PowerShell.Utility 

help

Get-Help 

Microsoft.PowerShell.Core 

help

Get-History 

Microsoft.PowerShell.Core 

help

Get-Host 

Microsoft.PowerShell.Utility 

help

Get-HotFix 

Microsoft.PowerShell.Management 

help

Get-Item 

Microsoft.PowerShell.Management 

help

Get-ItemProperty 

Microsoft.PowerShell.Management 

help

Get-Job 

Microsoft.PowerShell.Core

help

Get-Location 

Microsoft.PowerShell.Management 

help

Get-Member 

Microsoft.PowerShell.Utility 

help

Get-Module 

Microsoft.PowerShell.Core 

help

Get-PfxCertificate 

Microsoft.PowerShell.Security 

help

Get-Process

Microsoft.PowerShell.Management 

help

Get-PSBreakpoint 

Microsoft.PowerShell.Utility 

help

Get-PSCallStack 

Microsoft.PowerShell.Utility

help

Get-PSDrive 

Microsoft.PowerShell.Management 

help

Get-PSProvider 

Microsoft.PowerShell.Management 

help

Get-PSSession 

Microsoft.PowerShell.Core 

help

Get-PSSessionConfiguration 

Microsoft.PowerShell.Core 

help

Get-PSSnapin 

Microsoft.PowerShell.Core 

help

Get-Random 

Microsoft.PowerShell.Utility 

help

Get-Service 

Microsoft.PowerShell.Management 

help

Get-TraceSource 

Microsoft.PowerShell.Utility 

help

Get-Transaction 

Microsoft.PowerShell.Management 

help

Get-UICulture 

Microsoft.PowerShell.Utility 

help

Get-Unique 

Microsoft.PowerShell.Utility 

help

Get-Variable

Microsoft.PowerShell.Utility 

help

Get-WinEvent 

Microsoft.PowerShell.Diagnostics 

help

Get-WmiObject 

Microsoft.PowerShell.Management 

help

Get-WSManCredSSP 

Microsoft.WSMan.Management 

help

Get-WSManInstance 

Microsoft.WSMan.Management 

help

Group-Object 

Microsoft.PowerShell.Utility 

help

Import-Alias 

Microsoft.PowerShell.Utility 

help

Import-Clixml 

Microsoft.PowerShell.Utility

help

Import-Counter 

Microsoft.PowerShell.Diagnostics 

help

Import-Csv 

Microsoft.PowerShell.Utility 

help

Import-LocalizedData 

Microsoft.PowerShell.Utility 

help

Import-Module 

Microsoft.PowerShell.Core 

help

Import-PSSession 

Microsoft.PowerShell.Utility 

help

Invoke-Command 

Microsoft.PowerShell.Core 

help

Invoke-Expression 

Microsoft.PowerShell.Utility

help

Invoke-History 

Microsoft.PowerShell.Core 

help

Invoke-Item 

Microsoft.PowerShell.Management 

help

Invoke-WmiMethod 

Microsoft.PowerShell.Management 

help

Invoke-WSManAction 

Microsoft.WSMan.Management 

help

Join-Path 

Microsoft.PowerShell.Management 

help

Limit-EventLog 

Microsoft.PowerShell.Management 

help

Measure-Command 

Microsoft.PowerShell.Utility

help

Measure-Object 

Microsoft.PowerShell.Utility 

help

Move-Item 

Microsoft.PowerShell.Management 

help

Move-ItemProperty 

Microsoft.PowerShell.Management 

help

New-Alias 

Microsoft.PowerShell.Utility 

help

New-Event 

Microsoft.PowerShell.Utility 

help

New-EventLog 

Microsoft.PowerShell.Management 

help

New-Item 

Microsoft.PowerShell.Management

help

New-ItemProperty 

Microsoft.PowerShell.Management 

help

New-Module 

Microsoft.PowerShell.Core 

help

New-ModuleManifest 

Microsoft.PowerShell.Core 

help

New-Object 

Microsoft.PowerShell.Utility 

help

New-PSDrive

Microsoft.PowerShell.Management 

help

New-PSSession 

Microsoft.PowerShell.Core 

help

New-PSSessionOption 

Microsoft.PowerShell.Core 

help

New-Service 

Microsoft.PowerShell.Management 

help

New-TimeSpan 

Microsoft.PowerShell.Utility 

help

New-Variable 

Microsoft.PowerShell.Utility 

help

New-WebServiceProxy 

Microsoft.PowerShell.Management 

help

New-WSManInstance

Microsoft.WSMan.Management 

help

New-WSManSessionOption 

Microsoft.WSMan.Management 

help

Out-Default 

Microsoft.PowerShell.Utility

help

Out-File 

Microsoft.PowerShell.Utility 

help

Out-GridView 

Microsoft.PowerShell.Utility 

help

Out-Host 

Microsoft.PowerShell.Utility 

help

Out-Null 

Microsoft.PowerShell.Utility 

help

Out-Printer 

Microsoft.PowerShell.Utility

help

Out-String 

Microsoft.PowerShell.Utility 

help

Pop-Location 

Microsoft.PowerShell.Management 

help

Push-Location 

Microsoft.PowerShell.Management 

help

Read-Host 

Microsoft.PowerShell.Utility 

help

Receive-Job

Microsoft.PowerShell.Core 

help

Register-EngineEvent 

Microsoft.PowerShell.Utility 

help

Register-ObjectEvent 

Microsoft.PowerShell.Utility

help

Register-PSSessionConfiguration 

Microsoft.PowerShell.Core 

help

Register-WmiEvent 

Microsoft.PowerShell.Management 

help

Remove-Computer 

Microsoft.PowerShell.Management 

help

Remove-Event 

Microsoft.PowerShell.Utility 

help

Remove-EventLog 

Microsoft.PowerShell.Management 

help

Remove-Item 

Microsoft.PowerShell.Management 

help

Remove-ItemProperty

Microsoft.PowerShell.Management 

help

Remove-Job 

Microsoft.PowerShell.Core 

help

Remove-Module 

Microsoft.PowerShell.Core 

help

Remove-PSBreakpoint 

Microsoft.PowerShell.Utility 

help

Remove-PSDrive 

Microsoft.PowerShell.Management 

help

Remove-PSSession 

Microsoft.PowerShell.Core 

help

Remove-PSSnapin 

Microsoft.PowerShell.Core 

help

Remove-Variable 

Microsoft.PowerShell.Utility

help

Remove-WmiObject 

Microsoft.PowerShell.Management 

help

Remove-WSManInstance 

Microsoft.WSMan.Management 

help

Rename-Item 

Microsoft.PowerShell.Management 

help

Rename-ItemProperty 

Microsoft.PowerShell.Management 

help

Reset-ComputerMachinePassword 

Microsoft.PowerShell.Management 

help

Resolve-Path 

Microsoft.PowerShell.Management 

help

Restart-Computer 

Microsoft.PowerShell.Management 

help

Restart-Service 

Microsoft.PowerShell.Management 

help

Restore-Computer

Microsoft.PowerShell.Management 

help

Resume-Service 

Microsoft.PowerShell.Management 

help

Select-Object 

Microsoft.PowerShell.Utility 

help

Select-String 

Microsoft.PowerShell.Utility 

help

Select-Xml 

Microsoft.PowerShell.Utility 

help

Send-MailMessage 

Microsoft.PowerShell.Utility 

help

Set-Acl 

Microsoft.PowerShell.Security 

help

Set-Alias 

Microsoft.PowerShell.Utility

help

Set-AuthenticodeSignature 

Microsoft.PowerShell.Security 

help

Set-Content 

Microsoft.PowerShell.Management 

help

Set-Date 

Microsoft.PowerShell.Utility 

help

Set-ExecutionPolicy 

Microsoft.PowerShell.Security 

help

Set-Item 

Microsoft.PowerShell.Management 

help

Set-ItemProperty 

Microsoft.PowerShell.Management 

help

Set-Location 

Microsoft.PowerShell.Management

help

Set-PSBreakpoint 

Microsoft.PowerShell.Utility 

help

Set-PSDebug 

Microsoft.PowerShell.Core 

help

Set-PSSessionConfiguration 

Microsoft.PowerShell.Core 

help

Set-Service 

Microsoft.PowerShell.Management 

help

Set-StrictMode 

Microsoft.PowerShell.Core 

help

Set-TraceSource 

Microsoft.PowerShell.Utility 

help

Set-Variable 

Microsoft.PowerShell.Utility

help

Set-WmiInstance 

Microsoft.PowerShell.Management 

help

Set-WSManInstance 

Microsoft.WSMan.Management 

help

Set-WSManQuickConfig 

Microsoft.WSMan.Management 

help

Show-EventLog 

Microsoft.PowerShell.Management 

help

Sort-Object 

Microsoft.PowerShell.Utility 

help

Split-Path 

Microsoft.PowerShell.Management 

help

Start-Job 

Microsoft.PowerShell.Core

help

Start-Process 

Microsoft.PowerShell.Management 

help

Start-Service 

Microsoft.PowerShell.Management 

help

Start-Sleep 

Microsoft.PowerShell.Utility 

help

Start-Transaction 

Microsoft.PowerShell.Management 

help

Start-Transcript 

Microsoft.PowerShell.Host 

help

Stop-Computer 

Microsoft.PowerShell.Management 

help

Stop-Job 

Microsoft.PowerShell.Core

help

Stop-Process 

Microsoft.PowerShell.Management 

help

Stop-Service 

Microsoft.PowerShell.Management 

help

Stop-Transcript 

Microsoft.PowerShell.Host 

help

Suspend-Service 

Microsoft.PowerShell.Management 

help

Tee-Object 

Microsoft.PowerShell.Utility 

help

Test-ComputerSecureChannel 

Microsoft.PowerShell.Management 

help

Test-Connection 

Microsoft.PowerShell.Management

help

Test-ModuleManifest 

Microsoft.PowerShell.Core 

help

Test-Path 

Microsoft.PowerShell.Management 

help

Test-WSMan 

Microsoft.WSMan.Management 

help

Trace-Command 

Microsoft.PowerShell.Utility 

help

Undo-Transaction 

Microsoft.PowerShell.Management 

help

Unregister-Event 

Microsoft.PowerShell.Utility 

help

Unregister-PSSessionConfiguration

Microsoft.PowerShell.Core 

help

Update-FormatData 

Microsoft.PowerShell.Utility 

help

Update-List 

Microsoft.PowerShell.Utility 

help

Update-TypeData 

Microsoft.PowerShell.Utility 

help

Use-Transaction 

Microsoft.PowerShell.Management 

help

Wait-Event 

Microsoft.PowerShell.Utility 

help

Wait-Job 

Microsoft.PowerShell.Core 

help

Wait-Process 

Microsoft.PowerShell.Management

help

Where-Object 

Microsoft.PowerShell.Core 

help

Write-Debug 

Microsoft.PowerShell.Utility 

help

Write-Error 

Microsoft.PowerShell.Utility 

help

Write-EventLog 

Microsoft.PowerShell.Management 

help

Write-Host 

Microsoft.PowerShell.Utility 

help

Write-Output 

Microsoft.PowerShell.Utility 

help

Write-Progress 

Microsoft.PowerShell.Utility

help

Write-Verbose 

Microsoft.PowerShell.Utility 

help

Write-Warning 

Microsoft.PowerShell.Utility 

help

 

  1. Powershell别名

cmdlet 的名称由一个动词和一个名词组成,其功能对用户来讲一目了然。但是对于一个经常使用powershell命令的人每天敲那么多命令也很麻烦啊。能不能把命令缩短一点呢?于是"别名"就应运而生了。Powershell内部也实现了很多常用命令的别名。例如Get-ChildItem,列出当前的子文件或目录。它有两个别名:ls dir,这两个别名来源于unix shellwindowscmd
因此别名有两个作用:

  • 继承:继承unix-shellwindows-cmd
  • 方便:方便用户使用。

处理别名:

查询别名所指的真实cmdlet命令。

    

查看可用别名

查看可用的别名,可以通过" ls alias:" 或者 "Get-Alias"

如何查看所有以Remove打头的cmdlet的命令的别名呢?

 

说明:dir alias:获取的是别名的数组,通过where对数组元素进行遍历,$_代表当前元素,alias的Definition为String类型,因为powershell支持.net,.net中的string类有一个方法Startswith。通过where过滤集合在powershell中使用非常广泛。

有的cmdlet命令可能有2-3个别名,我们可以通过下面的命令查看所有别名和指向cmdlet的别名的个数。

 

创建自己的别名

给记事本创建一个别名,并查看别名

删除别名 del alias:edit

Import-alias导入别名

Export-alias导出别名