Windows Powershell 内置 cmdlets
在这篇文章中,我所说的cmdlet意思就是Powershell内置命令,格式是单独的动-名词(Verb-noun)结构,前面也介绍过cmdlet的另外一层意思,由一系列的命令组成,一般会超过1行命令,并且保存在扩展名为PS1的文本文件中。这里,我们将侧重于介绍Powershell内置的cmdlets
Powershell 内置的 cmdlets 分为 13 大块
  1. 1. system built-in cmdlets: 有关系统的内置cmdlets
  2. 2. Objects built-in cmdlets: 有关对象的内置cmdlets
  3. 3. Items Built-in cmdlets: 有关项目(Item)的内置cmdlets
  4. 4. Aliases Built-in Powershell Cmdlets:有关别名的内置Cmdlets
  5. 5. Drivers Built-in cmdlets:有关驱动器的内置cmdlets
  6. 6. Paths and location: 有关路径和位置的cmdlets
  7. 7. Contents Built-in Powershell Cmdlets: 有关内容的内置cmdlets
  8. 8. Access Operating System Components: 访问操作系统组件的cmdlets
  9. 9. Output formatters Built-in Cmdlets: 有关输出格式的内置cmdlets
  10. 10. Variable: 变量
  11. 11. Security Built-in Cmdlets: 有关安全的内置cmdlets
  12. 12. Miscellaneous Powershell Built-in cmdlets: 其他Powershell内置cmdlets
  13. 13. Debugging: 有关调试的内置cmdlets
Powershell 内置 cmdlet 分类
1 System Built-in cmdlets 有关系统的内置 Cmdlets
  1. a) get-help. 这是发掘Powershell内置资料库的最好命令。在很多的cmdlets,都是以动词"get"开头,比如 get-help alias。 请记住get-help支持通用符,比如输入get-help *object
  2. b) get-command: 显示有关Powershell的版本号(不要把它和主机名搞混了)。这个命令可以帮你去查看你的Powershell版本号
  3. c) get-culture: 显示主机的区域设置信息(就如控制面板里的区域设置显示一样)
  4. d) get-uiculture: 显示主机的当前用户界面区域性信息
更多关键系统cmdlets请参考以前(3. Powershell 关键命令介绍)
2) Object Built-in Cmdlets: 有关对象的内置 cmdlets
  1. a) get-member: 这是现在为止最重要的cmdlet . get-member列举了对象的属性(Properties)、方法(Method)、类(Type)型等信息, 比如
  2. get-wmiobject | get-member

  3. 请参考前面的特别介绍get-member的文章

  4. b) foreach-object: 这个cmdlets的目的是在多个对象中执行循环,比如驱动器。foreach对于管道中的每个对象执行相同的脚本,比如
  5. $Nic= get-WmiObject Win32_NetworkAdapterConfiguration
    foreach ( $MacAdr in $Nic ) { "Mac Address = " + $MacAdr.MacAddress}

  6. 请注意,括号的作用是很重要的,() 或{},每个都有特定的作用(条件){脚本块}。也请注意+,他不但可以把数字相加,而且可以把文本相连。

  7. c) where-object ( 经常会被简写成"Where"),依据管道的条件来过滤输入,允许只对特定的对象进行操作,比如
  8. get-service | where-object{$_status -eq "stopped"}

  9. d) new-object: 创建.net或者com对象的实例。New-object在创建VBScript对象的时候特别有用,比如网罗对象,活动目录对象(Active Directory Object),其他的程序比如IE对象也在此列。
  10. e) Select-object: 基于设置在cmdlet命令行的参数来过滤对象
  11. f) group-object: 一个非常有潜力的cmdlet, 在搜集基于相同属性的对象的时候非常有用
  12. g) sort-object: 按照属性值进行排序
3 Items Built-in Cmdlets 有关项目的 cmdlets
  1. a) get-childitem: 显示特定目录的子项目,比如在一个文件夹的文件清单
  2. b) Get-item:获取为了某个命令空间的对象的值,比如get-iem .\* 显示了在当前目录的所有文件
  3. c) new-item: 在命名空间中创建新项目,比如创建子目录
  4. d) set-item: 将项的值更改为特定的值
  5. e) Remove-item: 删除指定项
  6. f) move-item: 把项从一个地方转移到别处,并且把原文件删除
  7. g) rename-item: 对现有对象重命名
  8. h) copy-item: 把对象从一个地方复制到别处,保留原文件
  9. i) clear-item: 删除对象的内容,但是不会删除对象,比如可以注册表键值删除掉,但是不会删除该注册表
  10. j) invoke-item: 对对象指定某种程序执行
  11. k) get-acl: 获取某个文件或者项的访问控制清单(ACL)
  12. l) set-acl: 对某个文件或者项设置安全访问控制清单
4 Alias Built-in Powershell Cmdlets: 有关别名的默认 cmdlets
想了解别名Alias很简单,只要从我们内置的那些alias开始就行,比如gci (get-childitem), 比如Ft(format table). 例子有, get-process * | ft name,handles,cpu -auto
  1. a) set-alias: 对某个别名设置一个别名,你可以用它来创建你自己的别名
  2. b) get-alias: 返回所有定义好的别名
  3. c) new-alias: 创建一个新的别名,但是如果退出Poweshell中,这个别名将不能使用
  4. d) export-alias: 把系统所有别名导出到CSV格式的文件中
  5. e) import-alias: 从CSV 文件中更新系统别名
5) Drives Built-in Cmdlets: 有关驱动器的内置 cmdlets
  1. a) get-psdrive: 获取有关Poweshell驱动器的所有信息
  2. b) new-PSdriver: 新建Poweshell驱动器
  3. c) get-psProvider: 返回所有注册的CMDlet提供程序和驱动器
  4. d) Remove-Drive: 从cmdlet提供商删除驱动器
6)Paths and Location 路径和位置
  1. a) get-location: 显示当前位置
  2. b) set-location: 更改当前工作位置(它的别名是CD)
  3. c) combine-path: 将路径从 Windows PowerShell 路径转换为 Windows PowerShell 提供程序路径
  4. d) test-path: 检查路径是否存在,存在的话返回正确,否则就是错误
  5. a) e)resolve-path: 解析路径中的通用符
  6. e) Push-location将当前位置推入堆栈
  7. f) pop-location: 将当前位置更改为最近推入到堆栈中的位置
7) Contents Built-in Powershell Cmdlets 有关内容的 Cmdlets
  1. a) add-content: 将内容追加到一个文件里,如果文件不存在就创建
  2. b) clear-content: 把文件里的内容清除,但是文件还是保留
  3. c) get-content: 按行读取文件内的内容
  4. d) set-content: 把文件内的所有内容以新内容取代
8) Access Operation System Components
  1. a) get-process: 返回所有运行的系统进程
  2. b) stop-process: 停止一个运行的进程
  3. c) get-service: 返回显示注册的系统服务
  4. d) stop-service: 停止正在运行的系统服务
  5. e) start-service: 启动已经停止的系统服务
  6. f) suspend-service: 暂停正在运行的系统服务
  7. g) resume-service: 继续暂停的系统服务
  8. h) restart-service: 停止并重新启动系统服务
  9. i) set-service: 重新配置系统服务
  10. j) New-service: 注册一个新的系统服务
  11. k) get-eventlog: 返回指定系统日志的详细清单
  12. l) get-wmiobject: 从WMI返回数据
9 output Formatters build-in cmdlets: 有关输出格式的内置 cmdlets
  1. a) Out-file: 将输出结果写入到一个文件中
  2. b) out-printer: 将输出结果发送到打印机上
  3. c) out-string: 把输出结果返回给一个字符串
  4. d) out-null: 忽略所有输出
  5. e) out-default: 把输出发送到主机,不能在命令行中调用
  6. f) out-host: 把输出发送到主机
  7. g) format-list: 将输出的格式设置为属性列表,其中每个属性均各占一行显示
  8. a) H) format-table: 将输出的格式设置为表(每行一个对象)
  9. h) format-wide: 将对象的格式设置为只能显示每个对象的一个属性的宽表 (可以几个对象一行)
  10. i) import-csv: 导入使用 Export-CSV cmdlet 产生的格式的逗号分隔值 (CSV) 文件,并返回对应于该 CSV 文件中所表示的对象的对象
  11. j) export-csv: 创建逗号分隔值 (CSV) 文件来显示输入对象
  12. k) write-host: 使用主机用户界面来显示对象
  13. l) Write-progress: 在 Windows PowerShell 命令窗口内显示进度栏。
  14. m) write-debug: 将调试消息写入主机显示屏
  15. n) Write-verbose: 将字符串写入主机的详细显示屏
  16. o) write-error: 将对象写入错误管道
  17. p) read-host: 从控制台读取一行输入
10 Variable 变量
  1. a) get-variable: 返回变量的值
  2. b) new-variable: 创建带特定名称和值的新变量
  3. c) set-variable: 更新或者创建新的变量,
  4. d) remove-variable: 删除变量定义
  5. e) clear-variable: 清空所有变量的值,但是定义继续保留
11 Security Built-in Cmdlets 有关安全的 cmdlets
  1. a) get-pfxcertificate: 获取文件中有关X509Certificate的信息
  2. b) get-credential: 通过询问通过提供密码来生成凭证
  3. c) get-authenticodesignatureL获取文件中有关 Authenticode 签名的信息。
  4. d) set-authenticodesignature: 更新Authenticode签名
12) Miscellaneous Poweshell Built-in Cmdlets 其他 Poweshell 内置 cmdlets
  1. a) get-date: 显示当前日期和时间
  2. b) set-date: 更改系统日期和时间
  3. c) measure-object: 度量对象的特征及其属性
  4. d) new-timespan: 比较两个时间日期对象的时间
  5. e) start-sleep: 暂停 处理
13 Debugging 调试
Get-Command 的结果
下列命令可以得到所有的cmdlet
get-command | fw -column 3
p_w_picpath
结果是:
Add-Content Add-History Add-Member
Add-PSSnapin Clear-Content Clear-Item
Clear-ItemProperty Clear-Variable Compare-Object
ConvertFrom-SecureString Convert-Path ConvertTo-Html
ConvertTo-SecureString Copy-Item Copy-ItemProperty
Export-Alias Export-Clixml Export-Console
Export-Csv ForEach-Object Format-Custom
Format-List Format-Table Format-Wide
Get-Acl Get-Alias Get-AuthenticodeSignature
Get-ChildItem Get-Command Get-Content
Get-Credential Get-Culture Get-Date
Get-EventLog Get-ExecutionPolicy Get-Help
Get-History Get-Host Get-Item
Get-ItemProperty Get-Location Get-Member
Get-PfxCertificate Get-Process Get-PSDrive
Get-PSProvider Get-PSSnapin Get-Service
Get-TraceSource Get-UICulture Get-Unique
Get-Variable Get-WmiObject Group-Object
Import-Alias Import-Clixml Import-Csv
Invoke-Expression Invoke-History Invoke-Item
Join-Path Measure-Command Measure-Object
Move-Item Move-ItemProperty New-Alias
New-Item New-ItemProperty New-Object
New-PSDrive New-Service New-TimeSpan
New-Variable Out-Default Out-File
Out-Host Out-Null Out-Printer
Out-String Pop-Location Push-Location
Read-Host Remove-Item Remove-ItemProperty
Remove-PSDrive Remove-PSSnapin Remove-Variable
Rename-Item Rename-ItemProperty Resolve-Path
Restart-Service Resume-Service Select-Object
Select-String Set-Acl Set-Alias
Set-AuthenticodeSignature Set-Content Set-Date
Set-ExecutionPolicy Set-Item Set-ItemProperty
Set-Location Set-PSDebug Set-Service
Set-TraceSource Set-Variable Sort-Object
Split-Path Start-Service Start-Sleep
Start-Transcript Stop-Process Stop-Service
Stop-Transcript Suspend-Service Tee-Object
Test-Path Trace-Command Update-FormatData
Update-TypeData Where-Object Write-Debug
Write-Error Write-Host Write-Output
Write-Progress Write-Verbose Write-Warning

总结: Poweshell 内置的 cmdlets
Powershell 有丰富的内置的动-名词形式的cmdlet.你可能自己已经知道20个,但是强烈推荐你每个都过一篇,这样你可能在以后也用的到。