變數和函式

Security Controls 會為每個指令碼提供一組 PowerShell 變數和函式。 所有的變數名稱都會以 "ST_" 開頭。 所有的函式名稱都會以 "ST-" 開頭。 您可以在指令碼中使用這些變數和函式。

PowerShell 變數可以有不同範圍:

  • 全域: 可供目前 PowerShell 工作階段使用
  • 指令碼: 在指令碼 (函式以外) 和該指令碼的本機上宣告
  • 私人: 在函式和該函式的本機中宣告
  • 本機: 目前的範圍,可以是全域、指令碼或私人

Security Controls 一起提供的變數會在全域範圍中宣告。 由於每個目標電腦都會在自己的 PowerShell 工作階段中執行,這等同於在指令碼的範圍中宣告。

執行變數

下表列出 per-run 變數。 針對這些變數,所有電腦都會看見相同的值。 若變數已標示為 [Read-only],請勿修改該變數的值。

變數名稱 說明
ST_OutputDirectory 基本輸出目錄的完整路徑。 系統會建立一個子目錄以用於執行。 [Read-only]
ST_RunDirectory 執行輸出目錄的完整路徑。 [Read-only]
ST_RunErrorFile 執行錯誤檔案的完整路徑。 非特定於特殊電腦的錯誤應寫入此檔案。 此檔案也包含不會解析為 IP 位址的電腦相關訊息,且系統不會為無法解析的電腦建立電腦特定子資料夾。 [Read-only]
ST_RunName 起始或排程執行時在使用者介面中指定的執行名稱,並附加執行時間。 預設值是指令碼或範本的名稱。 [Read-only]
ST_RunOnConsole 若指令碼使用 PowerShell 遠端則設為 $false;否則應設為 $true。 [Read-only]
ST_RunOutputFile 標準執行輸出檔案的完整路徑。 在命令提示字元中執行時,顯示於控制台的所有輸出都會置於此檔案中。 [Read-only]
ST_RunResult 這是會顯示在作業監視器中的簡短執行結果。 長度以 100 個字元為限。 若您並未在指令碼中明確設定此變數,則它會設為表示發生錯誤的電腦數量,以及電腦解析錯誤的數量。

電腦變數

下表列出每部電腦變數。 這些變數的值對於每部目標電腦來說可能並不相同。 若變數已標示為 [Read-only],請勿修改該變數的值。

變數名稱 說明
ST_ComputerName 目標電腦的名稱。 [Read-only]
ST_Credential PSCredential 物件,其中包含用來連接目標電腦的使用者名稱和 SecureString 密碼。 此變數可傳送至任何支援 Credential 參數的命令。 [Read-only]
ST_DomainName 目標電腦網域或工作群組的名稱。 [Read-only]
ST_MachineDirectory 電腦目錄的完整路徑。 這通常會是電腦名稱,但如果電腦名稱中包含資料夾名稱中所不允許的字元,則這些字元將會被底線字元取代。 [Read-only]
ST_MachineError 一種布林值,表示在執行以此特定電腦為目標的指令碼時所偵測到的一個或多個錯誤。
ST_MachineErrorFile 電腦錯誤檔案的完整路徑。 在指令碼執行期間所偵測到的錯誤都會顯示在此檔案中。 [Read-only]
ST_MachineOutputFile 電腦輸出檔案的完整路徑。 指令碼所產生至標準輸出的輸出會在該檔案中擷取。
ST_MachineResult 這是會顯示在作業監視器中的簡短電腦結果。 長度以 100 個字元為限。 若您並未在指令碼中明確設定此變數,當未偵測到電腦錯誤時會設為「成功」,或設為該電腦發生第一次錯誤的錯誤訊息。 使用 ST-SetMachineResult 函式以明確設定此變數的值。
ST_MachineResultSet 此布林值表示指令碼設定 ST_MachineResult 變數。 使用 ST-SetMachineResult 函式以設定 ST_MachineResult 變數與此變數。

函式

Security Controls 會針對您建立的每個指令碼提供一組可用的函式。 它們會列於下表中。

變數名稱 說明
ST-GetTargetOS 此函式會嘗試連線至目標系統、查詢 WMI 並擷取 Win32_OperatingSystem 物件。
ST-SetMachineResult 此函式會擷取字串參數。 它會將 ST_MachineResult 變數設為傳入的字串,並將 ST_MachineResultSet 設為 $true。
ST-SetMachineError 此函式會擷取字串引數。 它會將 ST_MachineResult 變數設為傳入的字串。 它也會將 ST_MachineResultSet 和 ST_MachineError 變數設為 $true。
ST-SendMessage 此函式會擷取字串參數。 字串將會在作業監視器內顯示。 使用此函式以監控長時間執行的指令碼的進度。 當指令碼完成時,ST_MachineResult 中的字串會顯示在作業監視器中。 除非您正在進行偵錯,否則應避免在快速執行的指令碼中呼叫此方法。 若傳入較長的字串,則該字串會截斷至 100 個字元。
ST-CreateMachineDirectory 通常在寫入輸出之前都不會建立電腦目錄。 若您的指令碼正在電腦目錄中建立檔案,您應叫用此函式,以在向目錄寫入任何內容之前先建立該目錄。 呼叫此函式多次並不會造成負面影響。
ST-CreateRunDirectory 通常在執行寫入一些輸出之前都不會建立電腦目錄。 若您的指令碼正在執行目錄中建立檔案,您應叫用此函式,以在向目錄寫入任何內容之前先建立該目錄。 呼叫此函式多次並不會造成負面影響。
ST-ComputerAndCredential 此函式會傳回適當的值,以用於目標電腦的 ComputerName 和 Credential 參數。 如需詳細資訊,請參閱指定 ComputerName 與認證參數
ST-SubCC 此函式會擷取字串參數,它會是有效的 PowerShell 命令。 此函式會以適當的值替換該命令字串中的 "$ST_CC",以用於命令的 ComputerName 和 Credential 參數。 然後它會執行產生的命令並傳回執行結果。 如需詳細資訊,請參閱指定 ComputerName 與認證參數