已編寫指令碼的條件
在這個部分中:
關於已編寫指令碼條件
使用已編寫指令碼條件透過 VBScript、JScript 和 PowerShell 來建立、匯入及匯出條件。您可以使用「已編寫指令碼條件」以符合不屬於 應用程式控制 控制台標準條件的狀況。例如,檢查 Windows 防火牆是否開啟。
這些指令碼會保留在 AAMP 組態中、複製到執行階段的磁碟,並在執行完成後刪除。您可以匯入和匯出指令碼以重複使用。
警告: 大型的指令碼和大量的指令碼會增加 AAMP 組態的大小,這會影響將組態部署至組態所需要的時間,也會影響組態執行時間。
由於條件指令碼會以批次模式執行,因此不會顯示任何提示或訊息方塊,指令碼也會逾時而不執行。為了確保條件指令碼可正確執行,請在指令碼中移除任何提示或訊息方塊或去除其註解。
當建立已編寫指令碼條件時,以確認有足夠的時間執行指令碼並評估任何其他條件。應用程式控制 有 10 秒的逾時期間來評估自訂規則的任何條件。若所有條件未能在 10 秒內完成評估,便不會套用該自訂規則。此外,會以非同步方式評估條件。也就是說,當觸發運算式評估時,代理程式會等候指令碼完成以評估下一個條件。代理程式會懸置自訂規則的應用程式,直到完成所有條件的評估或逾時為止。因此,即使您設定「已編寫指令碼條件」執行少於 10 秒鐘,若有其他要評估的條件並且剩餘時間不足以執行,您仍可以讓評估逾時。
Windows PowerShell 指令碼會使用各種執行原則以阻止指令碼執行,或僅允許受信任發行者簽署的指令碼執行。「應用程式控制項」會覆寫執行原則並略過任何限制,使 PowerShell 指令碼得以執行。
應用程式控制 相容於 PowerShell 版本 2.0 或更新版本。
所需的版本視您所使用的作業系統而定。Windows XP 和 Server 2003 需要 PowerShell 2.0。Windows Server 2008 R2 SP1 x64 和 Windows 7 SP1 需要 PowerShell 3.0。更新版的作業系統則需要 PowerShell 3.0 或更新版本。
離開代碼
已編寫指令碼條件的所有指令碼都必須指定離開代碼,當傳回此代碼時,應用程式控制 代理程式會使用它來判斷指令碼通過或失敗。若指令碼不含離開代碼,代理程式會將其視為成功 (0 值)。
每個指令碼類型都必須使用特定結束陳述式:
語言 |
結束陳述式 |
---|---|
VBScript |
WScript.Quit [value] |
JScript |
WScript.Quit([value]) |
PowerShell |
exit ([value]) |
以指令碼的離開代碼取代 [value]: 0 為成功,1 為失敗。例如: WScript.Quit 0、WScript.Quit(0)、exit (0)。針對 Powershell 指令碼,任何非零值皆代表失敗。
建立已編寫指令碼的條件
- 選取自訂規則的節點。
-
在規則的工作區域中,開啟「條件」下拉式功能表並選取已編寫指令碼。
「已編寫指令碼條件」對話方塊隨即顯示。
- 選取指令碼類型: PowerShell、VBScript 或 JScript。
-
在執行時間捲動方塊中,設定允許指令碼執行的時間。
這是指令碼終止之前的秒數。您可輸入的最大值為 10 秒。將值設為 0 或將欄位保留空白可給予指令碼無限時間直到完成。不過,如果指令碼超過了進行評估條件的 10 秒逾時期間,指令碼會逾時且不套用自訂規則。
已編寫指令碼條件會覆寫預設節點和條件逾時,但不會覆寫 10 秒逾時期間以評估條件。此值為硬式編碼
- 按一下選項下拉式清單並依需要設定下列選項:
- 每個工作階段評估一次 - 選取此選項以於工作階段期間執行條件一次並快取結果。否則,每次在組態中呼叫時都會評估條件。
- 以系統使用者身分執行 - 選取此選項,使指令碼能夠使用目前登入之使用者無法存取的功能。
- 使用下列其中一種方法來輸入指令碼:
- 直接輸入至欄位內
- 從其他位置拖放或複製並貼上。
- 按一下匯入按鈕,並在指令碼欄位內選取要開啟並使用的檔案。
- 按一下確定以儲存指令碼。
當觸發時,指令碼會執行至完成為止,偵錯記錄檔案中也會詳細說明成功或失敗的結果。
逾時的指令碼會被歸類為失敗,且任何子節點及其相關聯的動作都不會執行。
匯出條件指令碼
您可以在「已編寫指令碼條件」對話方塊中匯出及儲存指令碼,並將其匯入其他條件和組態。
- 按一下匯出按鈕並選取儲存檔案的位置。
- 按一下儲存以完成匯出。