一,Windows PowerShell設計目標
一)Windows PowerShell是特別為系統管理員設計的、全新的Windows命令行shell。
二)和大多數接受并返回文本的shell不同,Windows PowerShell建立在.NET公共語言運行時(CLR)和.NET框架之上,它接受并返回.NET對象。
三)Windows PowerShell引入了cmdlet的概念,這是內建在shell中的一個簡單、單一功能的命令行工具。
四)Windows PowerShell除了和大多數shell一樣提供了對文件系統的訪問外,還提供了對注冊表、數字簽名證書存儲等其他數據存儲的訪問
二,Windows PowerShell簡介
一)Windows PowerShell不處理文本,它處理基于.NET平臺的對象。
二)Windows PowerShell提供了一大套具有一致接口的內建命令
三)所有的shell命令使用同樣的命令parser。
四)可以同時使用傳統的Windows工具
三,Windows PowerShell Cmdlets
一)通過命名格式來識別cmdlets:動賓結構——動詞+分隔符“-”+名詞
二)如何獲得cmdlets的相關幫助:
get-help <cmdlet-name> -detailed;該命令顯示以下內容:cmdlet描述,命令語法,參數描述,cmdlet用法舉例
四,為何需要一種新的腳本語言
一)Windows PowerShell需要一種語言來管理.NET對象
二)該語言需要為使用cmdlet提供一致的環境
三)該語言需要支持復雜任務,而不是使簡單任務復雜化
四)該語言需要和用于.NET編程的高級語言——如C#——一致。
五,處理對象
一)當你在Windows PowerShell中工作時,你在和.NET對象打交道
二)
get-service | get-member:把get-service命令中獲取的對象發送給get-member命令,get-member顯示service對象的相關信息,如對象的TypeName以及對象的屬性和方法列表
三)有關對象的類的信息,復制并粘貼TypeName到MSDN
四)要查找特定對象——如schedule——的所有屬性值:get-service schedule | format-list -properti *
六,對象管道
一)Windows PowerShell提供了一個新的、基于對象的接口模型——而不是基于文本。例如:
ipconfig | findstr "IP Address"
七,對腳本的支持
一)Windows PowerShell完全支持腳本,完全支持腳本。
二)Windows PowerShell腳本后綴為ps1,該后綴是可選項
三)必須指明腳本文件所在的完整路徑,即使腳本位于當前目錄
四)Windows PowerShell的安全策略——稱為執行策略(execution policy)——讓你決定腳本是否可以運行、是否必須包含一個數字簽名
五)Windows PowerShell中沒有任何執行策略允許通過雙擊圖標來運行腳本,更多信息:get-help about_signing
八,Windows PowerShell常用命令舉例
1. get-help/help/man
get-help get-command
get-help about_signing
get-help get-command -detailed
get-help get-command -full
get-help get-command -examples
get-help get-command -parameter totalcount
get-help get-command -parameter *
man get-command
help get-command
get-help get-*
get-help about_wildcard
get-help about_*
get-help -name get-alias
get-help get-alias
get-help about_commonparameters
2. get-command
get-command *.exe
3. get-process
4. get-service
get-service | get-member
get-service | get-member -membertype *property
(get-service alerter).canpauseandcontinue
get-service alerter | format-list -property name, canpauseandcontinue
get-service alerter | format-list -property *
get-service | format-table -property name, canpauseandcontinue
(get-service schedule).stop()
5. get-eventlog
6. get-date
7. get-alias
get-alias | where-object {$_.definition -eq "set-location"}
8. get-wmiobject:絕對有用,因為它讓你察看和更改遠程計算機的組件
get-wmiobject win32_bios -computername server01
9. get-member
get-service | get-member
10. format-table
11. format-list
12. format-wide
13. format-custom
14. set-location
set-location alias:
15. get-childitem
get-childitem alias:
16. set-alias
set-alias gh get-help
set-alias np c:\windows\notepad.exe
17. remove-item
remove-item alias:np
18. function
function bi {notepad c:\boot.ini}
19. get-psdrive
20. new-psdrive
21. test-path