使用 Windows PowerShell

 

主題上次修改日期: 2010-01-22

Windows PowerShell 是特別為系統管理員設計的 Windows 命令列殼層。 這個殼層包含了可以獨立或組合使用的互動式提示和指令碼處理環境。 Windows PowerShell 是建立在 .NET Common Language Runtime (CLR) 和 .NET Framework 的基礎上,可以接受及傳回 .NET 物件。

Windows PowerShell 是命令列殼層和以工作為基礎的指令碼技術,可提供資訊技術 (IT) 系統管理員全面的掌控並讓系統管理工作自動化,提高系統管理員生產力。 Windows PowerShell 包含無數系統管理公用程式、一致的語法及命名慣例,並改進如登錄、憑證存放區或 Windows Management Instrumentation (WMI) 等通用管理資料 (例如) 的瀏覽作業。 Windows PowerShell 也包含特別為 IT 系統管理設計的直覺式指令碼語言。

本節內容提供 Windows PowerShell 下列元素的簡介: 語言、命令 (稱為 “cmdlet”)、提供者和物件使用情形。

如需 Windows PowerShell 的詳細資訊,請參閱 Microsoft Windows PowerShell 網站

基於下列原因,Windows PowerShell 是一種完全不同的殼層:

  • Windows PowerShell 並不處理文字, 而是處理以 .NET 平台為基礎的物件。

  • Windows PowerShell 隨附了數量龐大的內建命令集和一致的介面。

  • 對於各個工具,全部的殼層命令都是使用相同的命令剖析器,而非使用不同的剖析器。 這項特點會使您更容易學會每種命令的使用方式。

  • 您完全不需要捨棄已習慣使用的工具。 您可以繼續在 Windows PowerShell 中使用像是 .NET 和 Reg.exe 等傳統的 Windows 工具。

Windows PowerShell 是特別設計要在範圍寬廣的各種 Microsoft 產品上運作,包括 Microsoft Forefront Protection 2010 for SharePoint (FPSP) 在內。

Windows PowerShell 是可以配合圖形化使用者介面以及您所建立之任何 VBScript 指令碼運作的工具。 Windows PowerShell 可補充 VBScript 及其他管理技術的不足。 您可以使用 Windows PowerShell 而不使用 Forefront Protection 2010 for SharePoint 管理主控台,但是您可能會覺得它在執行特殊重複性工作時,最能發揮效用。

Windows PowerShell 支援完整的互動式環境。 當您在提示字元下輸入命令時,命令就會進行處理,而將輸出顯示在殼層視窗中。 您可以將命令的輸出傳送到檔案或是印表機,或者使用管線運算子 (|) 以便將輸出傳送到其他的命令中。

Windows PowerShell 引進了 cmdlet (發音如 "command-let") 概念;這是內建在殼層中的簡單且具備單一功能的命令列工具。 您可以個別使用每個 cmdlet,但其效用要在您結合這些簡單工具來執行複雜的工作時才可充分顯現。 Windows PowerShell 包含上百個基本核心 cmdlet, 而 FPSP 大約有 65 個 cmdlet。 Cmdlet 是在 Windows PowerShell 中用來操控物件的單一功能命令。 您可以透過 cmdlet 名稱格式來識別 cmdlet,名稱格式為以破折號 (-) 分隔的動詞和名詞,例如 Get-Help、Set-FsspSignatureUpdate 和 Set-FsspRealtimeScan。

注意事項注意:
雖然大寫可用來讓 cmdlet 名稱更具可讀性,但是 Windows PowerShell 並不區分大小寫。

在 Windows PowerShell 中,大部分 cmdlet 都很簡單。 例如,"get" cmdlet 只擷取資料,而 "set" cmdlet 則只建立或變更資料。

雖然您一開始可能並未發現,但是當您在 Windows PowerShell 執行工作時,實際上是在使用 .NET 物件。 隨著您的經驗不斷累積,以及物件處理的效用愈發明顯,您將發現其實自己是在使用物件,甚至會從物件的觀點來思考。

就技術上而言,.NET 物件是由資料以及與該資料關聯的作業所組成的 .NET 類別執行個體。 不過,您可以將物件想成擁有屬性 (類似特性和方法) 的資料實體,屬性代表可針對物件執行的動作。

例如,當您在 Windows PowerShell 中取得服務時,實際所取得的是代表該項服務的物件。 當您在檢視服務的相關資訊時,您是在檢視其服務物件的屬性。 當您啟動服務時,其實是使用服務物件的方法。

所有相同類型的物件都會具有相同的屬性和方法,不過,物件的每個執行個體屬性值可以各不相同。 例如,每個服務物件都具有名稱和狀態屬性。 不過,各個服務可以擁有不同的名稱和狀態。

您可以使用管線運算子 (|),將一個 cmdlet (在運算子左邊指出) 的結果傳送給另一個 (在運算子右邊指定)。 若要查出 cmdlet 所取得的物件類型,請使用 Get-Member cmdlet,它會取得物件或物件集合的相關資訊。 使用管線運算子,將 Get 命令的結果傳送給 Get-Member。 例如,下列命令會將 Get-Service 命令所擷取的物件傳送給 Get-Member。

Get-Service | Get-Member

這樣會傳回服務物件的相關資訊,如下所示:

     TypeName: System.ServiceProcess.ServiceController
Name                      MemberType    Definition
----                       ----------   ----------
Name                      AliasProperty Name = ServiceName
add_Disposed              Method        System.Void add_Disposed(EventHandler value)
Close                     Method        System.Void Close()
Continue                  Method        System.Void Continue()
...

若要找出特定物件的所有屬性值,請使用管線運算子 (|),將 Get 命令的結果傳送給 Format-List 或 Format-Table 命令 (Format cmdlet 是用來讓輸出更具可讀性。 如需詳細資訊,請參閱格式化輸出)。 請配合所有 (*) 的值來使用這些 Format cmdlet 的 -property 參數。 例如,若要找出系統中 Schedule 服務的所有屬性,請如下輸入:

get-service schedule | format-list -property *

這樣會以清單格式傳回屬性的相關資訊,如下所示:

Name                : Schedule
CanPauseAndContinue : True
CanShutdown         : True
CanStop             : True
DisplayName         : Task Scheduler
DependentServices   : {}
MachineName         : .
ServiceName         : Schedule
ServicesDependedOn  : {RpcSs}
ServiceHandle       : SafeServiceHandle
Status              : Running
ServiceType         : Win32ShareProcess
Site                :
Container           :

使用物件的一項主要優點就是可以更容易傳遞一個命令的輸出做為另一個命令的輸入,也稱為「管線」。

通訊經常需要字串操控,才能將輸出從一種格式轉換為另一種格式,並移除標題和欄標題,而 Windows PowerShell 則是提供以物件為基礎 (而不是以文字為基礎) 的新互動式模型。 也就是說,負責接收物件的 cmdlet 可以直接處理物件的屬性和方法,而不需要進行任何轉換或操控。 您可以依據名稱參照到物件的屬性和方法,而不是計算資料在輸出中的位置來參照。

在下面範例中,ipconfig 命令的結果會傳遞給 Findstr 命令。 管線運算子 (|) 會將位在此命令左邊的結果傳遞到命令的右邊。 您不需要操控字串或是計算資料位移。

PS> ipconfig | findstr "Address"
        IP Address. . . . . . . . . . . . : 172.28.21.5
        IP Address. . . . . . . . . . . . : 172.30.160.225

重複執行特定命令或是命令順序時,或是開發一系列命令來執行複雜工作時,您會希望將這些命令儲存到副檔名為 .ps1 的檔案,然後執行該檔案 (稱為「指令碼」),而不必在提示字元下輸入命令。

除了提供互動式介面,Windows PowerShell 還會完全支援指令碼處理。 若要執行指令碼,請在命令提示字元中輸入指令碼的名稱。 指定 .ps1 副檔名是選用性作業。

例如,下列作法結果相同:

        c:\test\testscript.ps1
        c:\test\testscript
注意事項注意:
即使指令碼位於目前資料夾中,也必須指定指令碼檔案的完整路徑。 若要指出是目前資料夾,請輸入資料夾名稱或使用句號 (.) 來代表目前資料夾。 例如:
        .\testscript.ps1
重要事項重要:
雖然指令碼相非常有用 -- 甚至是不可或缺的要件 -- 但也可能會被用來散播惡意程式碼。 因此,Windows PowerShell 提供安全性原則,讓您決定是否可以執行指令碼,以及指令碼是否必須包含數位簽章。 為了避免明顯的風險,在 Windows PowerShell 中任何安全性原則都不允許按兩下圖示來執行指令碼。 如需詳細資訊,請輸入:
        Get-help about_signing

Windows PowerShell 也提供功能豐富的指令碼語言,讓您從極簡單到極複雜的指令碼都能夠建立。 它可支援迴圈處理、條件、流量控制和變數指定等語言結構。

從開始功能表啟動 Windows PowerShell
  • 執行下列其中一項作業:

    • 如果未安裝 FPSP,請按一下 [開始],依序指向 [所有程式][Windows PowerShell 1.0],然後按一下 [Windows PowerShell]

    • 如果已安裝 FPSP,請按一下 [開始],依序指向 [所有程式][Microsoft Forefront Server Protection],然後按一下 [Forefront 管理命令介面]

從命令提示字元 (cmd.exe) 視窗啟動 Windows PowerShell
  • 在命令提示字元下,輸入 powershell,然後按 ENTER 鍵。

檢視啟動 Windows PowerShell 時可使用的參數
  • 在命令提示字元下,輸入 powershell -?,然後按 ENTER 鍵。

由於 Windows PowerShell 主控台運作方式幾乎就跟命令提示字元主控台一樣,您可以從 Windows PowerShell 主控台之中執行所有命令列可執行檔 (例如: ipconfig);您甚至可以從 Windows PowerShell 主控台之中執行 VBScript 指令碼和批次檔。 就跟任何主控台一樣,只要輸入命令然後按 ENTER 鍵即可。

在 Windows PowerShell 視窗中,您可以使用 Get-Help cmdlet 取得說明。

使用 Get-Help cmdlet
  • 若要使用 Get-Help cmdlet,請在 Windows PowerShell 命令提示字元下,輸入 gethelp,然後按 ENTER 鍵。

檢視所有 Windows PowerShell 概念的清單
  • 若要檢視所有 Windows PowerShell 概念的清單,請輸入 get-help about_*,然後按 ENTER 鍵。

取得概念的說明
  • 若要取得概念的說明,請在 “about_” 之後輸入概念的名稱。 例如,輸入 get-help about_wildcard,然後按 ENTER 鍵。

檢視所有可用的 cmdlet
  • 若要檢視所有可用的 cmdlet,請輸入 get-command,然後按 ENTER 鍵。

    注意事項注意:
    Get-Command cmdlet 也會擷取命令與非 cmdlet 的命令元素,包括可用於 Windows PowerShell 的別名、函數和可執行檔。
取得特定 cmdlet 的說明
  • 每個 cmdlet 都有說明檔,您可以從 Windows PowerShell 視窗存取。 若要取得特定 cmdlet 的說明,請輸入 get-help cmdlet 名稱,然後按 ENTER 鍵。

例如,若要查看 Set-FsspSignatureUpdate 的說明,請輸入

get-help Set-FsspSignatureUpdate

取得特定 cmdlet 的詳細說明
  • 每個 cmdlet 說明都提供詳細的說明,包括每個參數的說明和一個或多個範例。 若要取得特定 cmdlet 的詳細說明,請輸入 get-help cmdlet 名稱 -detailed,然後按 ENTER 鍵。

例如,若要查看 Set-FsspSignatureUpdate 的詳細說明,請輸入

        get-help Set-FsspSignatureUpdate

只檢視特定 cmdlet 的範例
  • 若只要檢視特定 cmdlet 的範例,請輸入 get-help cmdlet 名稱 -examples,然後按 ENTER 鍵。

例如,若只要查看 Set-FsspSignatureUpdate 的範例,請輸入

get-help Set-FsspSignatureUpdate -examples

只檢視特定參數
  • 若只要檢視特定參數,請輸入 get-help cmdlet 名稱 -parameter 參數名稱,然後按 ENTER 鍵。

例如,若只要查看 Set-FsspSignatureUpdate cmdlet 之 ScheduleStart 參數的說明:

get-help Set-FsspSignatureUpdate -parameter ScheduleStart

檢視具有通用動詞之所有 cmdlet 的清單
  • 若要檢視具有通用動詞之所有 cmdlet 的清單,請輸入該動詞,後面加上破折號 (-) 和星號 (*),然後按 ENTER 鍵。

例如,若要檢視所有 Set cmdlet 的清單:

get-help set-*

某些 cmdlets 具有參數,以破折號 (-) 開始,可以讓您指出各種不同選項。 例如,Set-FsspSignatureUpdate cmdlet 有多個參數,包括: Engine、ScheduleStart 和 EnableSchedule。 許多 cmdlet 根本沒有任何參數。 一般來說,Set cmdlet 是最可能具有參數的。

所有 cmdlet 都支援一組參數,稱為「通用參數」。 例如 Verbose、Debug 和 ErrorAction。 這項功能為 Windows PowerShell 提供了一致的介面。 如需通用參數的描述,請輸入:

        get-help about_commonparameters

許多 Set cmdlet 都有參數,可以讓您用 true 和 false 標記來開啟和關閉條件。 在 Windows PowerShell 中,Boolean true 和 false 前面會加上貨幣符號 ($)。

例如,若要在每次啟動 Forefront 服務時,對掃描引擎定義進行更新,請將 Set-FsspSignatureOptions 的 -UpdateAtStartup 參數設定為 true,如下所示:

        Set-FsspSignatureOptions -UpdateAtStartup $true

您可以透過管線將要求送入下表中所列的其中一個選用 Format cmdlet,以多種不同格式擷取輸出。

 

Cmdlet 功能

format-list

將輸出格式化成清單,其中每個屬性各佔一行

format-table

將輸出格式化為多欄表格

format-wide

將輸出格式化為僅顯示每個物件之一個屬性的寬表格。

format-custom

根據 PS1XML 檔案中的檢視將輸出格式化

如需各項的詳細資訊,請使用 Get-Help cmdlet 加上任何一項。 以下是範例:

        Get-help format-list

FPSP 支援以下 Cmdlet。 依功能進行群組,讓您能夠更容易找到正確的 cmdlet。

下表包含用來控制排程掃描的 cmdlet。

 

Cmdlet 功能

Set-FsspScheduledScan

設定排程掃描的組態。

Get-FsspScheduledScan

擷取排程掃描的組態。

Start-FsspScheduledScan

立即啟動資料庫儲存區的掃描。

Stop-FsspScheduledScan

停止目前執行中的資料庫儲存區掃描。

Suspend-FsspScheduledScan

暫停目前執行中的資料庫儲存區掃描。

Resume-FsspScheduledScan

繼續進行暫停的資料庫儲存區掃描。

下表包含用來控制即時掃描的 cmdlet。

 

Cmdlet 功能

Set-FsspRealtimeScan

設定即時掃描的組態。

Get-FsspRealtimeScan

擷取即時掃描的組態設定。

下表包含用來控制隨選掃描的 cmdlet。

 

Cmdlet 功能

Set-FsspOnDemandScan

設定隨選掃描的組態選項。

Get-FsspOnDemandScan

擷取隨選掃描的組態設定。

Start-FsspOnDemandScan

啟動隨選掃描。

Stop-FsspOnDemandScan

停止執行中的隨選掃描。

Suspend-FsspOnDemandScan

暫停目前執行中的隨選掃描。

Resume-FsspOnDemandScan

繼續進行暫停的隨選掃描。

下表包含用來控制配合篩選清單運作的 cmdlet。

 

Cmdlet 功能

New-FsspFilterList

建立新的篩選清單。

Get-FsspFilterList

擷取篩選清單。

Set-FsspFilterList

變更篩選清單的屬性。

Clear-FsspFilterList

清除篩選清單中的所有項目。

Remove-FsspFilterList

刪除篩選清單。

Add-FsspFilterListEntry

新增一個或多個項目至現有的篩選清單。

Remove-FsspFilterListEntry

從篩選清單中移除一個或多個項目。

下表包含在排程掃描期間供篩選使用的 cmdlet。

 

Cmdlet 功能

Set-FsspScheduledFilter

啟用篩選,進行設定,然後將篩選與排程掃描相關聯。

Get-FsspScheduledFilter

擷取已設定的排程掃描篩選。

下表包含在即時掃描期間供篩選使用的 cmdlet。

 

Cmdlet 功能

Set-FsspRealtimeFilter

啟用篩選,進行設定,然後將篩選與即時掃描相關聯。

Get-FsspRealtimeFilter

擷取已設定的即時掃描篩選。

下表包含在隨選掃描期間供篩選使用的 cmdlet。

 

Cmdlet 功能

Set-FsspOnDemandFilter

啟用篩選,進行設定,然後將篩選與隨選掃描相關聯。

Get-FsspOnDemandFilter

擷取已設定的隨選掃描篩選。

下表包含用來管理引擎的 cmdlet。

 

Cmdlet

功能

Set-FsspEngineManagement

設定特屬引擎的設定值。

Get-FsspEngineManagement

擷取特屬引擎的設定值。

下表包含用來控制定義更新的 cmdlet。

 

Cmdlet 功能

Set-FsspSignatureOptions

設定定義更新選項。

Get-FsspSignatureOptions

擷取定義更新的設定。

Set-FsspSignatureUpdate

設定更新引擎定義的排程。

Get-FsspSignatureUpdate

擷取更新引擎定義的排程。

Start-FsspSignatureUpdate

立即啟動定義更新。

下表包含用來控制其他各種設定的 cmdlet。

 

Cmdlet 功能

Set-FsspAdvancedOptions

設定進階選項。

Get-FsspAdvancedOptions

擷取進階選項。

Set-FsspLoggingOptions

設定記錄及診斷選項。

Get-FsspLoggingOptions

擷取記錄選項。

Set-FsspTracing

設定追蹤選項。

Get-FsspTracing

擷取追蹤選項。

下表包含用來擷取事件和隔離記錄的 cmdlet。

 

Cmdlet 功能

Get-FsspIncident

擷取事件資料庫的記錄。

Remove-FsspIncident

移除事件資料庫的項目。

Set-FsspIncidentOptions

設定事件資料庫選項。

Get-FsspIncidentOptions

擷取事件資料庫選項。

Get-FsspQuarantine

擷取隔離資料庫的記錄。

Export-FsspQuarantine

將隔離項目儲存到磁碟。

Remove-FsspQuarantine

刪除隔離資料庫的項目。

Set-FsspQuarantineOptions

設定隔離資料庫選項。

Get-FsspQuarantineOptions

擷取隔離資料庫選項。

下表包含用來設定通知的 cmdlet。

 

Cmdlet 功能

Set-FsspNotification

設定通知值。

Get-FsspNotification

擷取通知值。

Set-FsspNotificationOptions

設定用來傳送電子郵件通知的 SMTP 設定。

Get-FsspNotificationOptions

擷取傳送電子郵件通知的 SMTP 設定。

下表包含用來控制報告的 cmdlet。

 

Cmdlet 功能

Get-FsspReport

擷取有關 FPSP 活動的統計資料報告。

Clear-FsspReport

重設有關 FPSP 活動的報告。

下表包含用來擷取 Forefront 產品資訊的 cmdlet。

 

Cmdlet 功能

Get-FsspProductInfo

擷取伺服器和 Forefront 產品資訊。

Set-FsspLicensing

為 FPSP 設定必要的授權參數。

Get-FsspLicensing

擷取產品的目前授權狀態。

下表包含用來控制匯入或匯出組態設定的 cmdlet。

 

Cmdlet 功能

Import-FsspSettings

從 XML 檔案匯入組態設定。

Export-FsspSettings

匯出組態設定至 XML 檔案。

下表包含用來控制擴充選項 (用於測試和疑難排解) 的 cmdlet。

 

Cmdlet 功能

Set-FsspExtendedOption

設定擴充選項。

Get-FsspExtendedOption

擷取擴充選項值。

New-FsspExtendedOption

建立新的擴充選項。

Remove-FsspExtendedOption

刪除擴充選項。

下表包含用來檢查系統健康狀態的 cmdlet。

 

Cmdlet

功能

Get-FsspHealth

擷取 FPSP 系統的目前健康狀態。

 
顯示: