使用內容物件搭配 PowerShell 主動監控工具
- Last Updated: May 21, 2026
- 4 minute read
- WhatsUp Gold
- Version 2026
可用的監控物件與屬性
PowerShell 主動監控工具指令碼提供兩個實體化的工作階段物件。
- 內容:IScriptContext 介面實作。這個物件讓您取得執行階段變數,也提供將結果傳回用戶端的機制。以下列出幾個實用的方法:
- object GetProperty(string propertyName):可根據名稱擷取環境變數值。
- object SetProperty(string propertyName, string propertyValue):可根據名稱指定環境變數值。
- void SetResult(int resultCode, ResultsString):讓指令碼能設定代表執行成敗的值,通常 0 = 成功,1 = 失敗。
- Logger:ILog 介面實作。此物件提供 C# 應用程式可使用的相同方法。以下列出幾個實用的方法:
- void Error(string message):建立特定錯誤的記錄項目,並包含訊息。
- void Information(string message):建立特定資訊的記錄項目,並包含訊息。
- void WriteLine(string message):建立一般性的記錄項目,並包含訊息。
取得或設定內容物件的屬性
您可以使用 PowerShell 主動監控工具指令碼來擷取內容屬性的值。
語法
Property-Value = Context.GetProperty("Property-Name")
Context.SetProperty(" Property-Name "," Property-Value ")
範例
$DeviceIpAddress = $Context.GetProperty("Address")
$Context.SetProperty("Timeout", "180")
設定結果字串及監控工具狀態指標
您所設定的結果字串將會被加入監控工具的狀態變更說明中。您所設定的狀態旗標(0、1)上線/離線會決定顯示在狀態變更時間軸中的指標。
# 在成功取得裝置 IP 後,設定為結果及成功旗標 ...
$Context.SetResult(0, "Device IP address is: " + $DeviceIpAddress)
內容物件屬性
以下的屬性可從建立的連線物件存取(在執行 PowerShell 主動監控工具指令碼語法範例時)。
屬性名稱 |
說明 |
|---|---|
|
DeviceID |
WhatsUp Gold 裝置識別字串。 |
|
位址 |
IP 位址: |
|
逾時 |
此工作階段的逾時值。(以秒計) |
內容物件認證屬性
可為 PowerShell 主動監控工具指令碼語法範例 設定以下的認證屬性。當在使用主動監控工具建立初始 PowerShell 連線之後,如需要再連線到其他服務、平台或應用程式時,這項功能就非常實用。
屬性名稱 |
說明 |
|---|---|
|
CredWindows:DomainAndUserid |
Windows 認證的網域和使用者。 |
|
CredWindows:Password |
設定 Windows 密碼。 |
|
CredSnmpV1:ReadCommunity |
SNMPv1 讀取群體字串。 |
|
CredSnmpV1:WriteCommunity |
SNMPv1 寫入群體字串。 |
|
CredSnmpV2:ReadCommunity |
SNMPv2 讀取群體字串。 |
|
CredSnmpV2:WriteCommunity |
SNMPv2 寫入群體字串。 |
|
CredSnmpV3:AuthPassword |
SNMPv3 密碼。 |
|
CredSnmpV3:AuthProtocol(integer-value) |
SNMPv3 身分驗證通訊協定。值:1 = 無、2 = MD5、3 = SHA |
|
CredSnmpV3:EncryptProtocol(integer-value) |
可為下列其中一個整數值:
|
|
CredSnmpV3:EncryptPassword |
SNMPv3 加密密碼。 |
|
CredSnmpV3:Username |
SNMPv3 使用者。 |
|
CredSnmpV3:Context |
SNMPv3 內容。 |
|
CredADO:Password |
ADO 密碼。 |
|
CredADO:Username |
ADO 使用者名稱。 |
|
CredSSH:Username |
SSH 使用者名稱。 |
|
CredSSH:Password |
SSH 密碼。 |
|
CredSSH:EnablePassword |
啟用密碼旗標。 |
|
CredSSH:Port |
若非預設則為 SSH 連接埠。 |
|
CredSSH:Timeout |
SSH 工作階段逾時。 |
|
CredVMware:Username |
VMware 使用者名稱。 |
|
CredVMware:Password |
VMware 密碼。 |
|
CredTelnet:Timeout |
Telnet 連線的逾時值。 |
|
CredTelnet:Port |
Telnet 連接埠(若非預設的話)。 |
|
CredTelnet:Username |
Telnet 使用者名稱。 |
|
CredTelnet:Password |
Telnet 密碼。 |
|
CredJMX:Username |
Java Management Extensions 使用者名稱。 |
|
CredJMX:Password |
Java Management Extensions 密碼。 |
|
CredSMIS:Timeout |
儲存管理逾時。 |
|
CredSMIS:Port |
儲存管理連接埠。 |
|
CredSMIS:Protocol |
儲存管理通訊協定。 |
|
CredSMIS:Username |
儲存管理使用者名稱。 |
|
CredSMIS:Password |
儲存管理密碼。 |
|
CredAWS:AccessKeyID |
Amazon Web Services 帳號 ID。 |
|
CredAWS:SecureAccessKey |
Amazon Web Services 存取金鑰。 |
|
CredAzure:TenantID |
Azure 訂用帳戶 ID。 |
|
CredAzure:ClientID |
Azure 用戶端帳戶 ID。 |
|
CredAzure:SecureKey |
Azure 帳戶金鑰。 |
|
CredRestAPI:Username |
您必須輸入使用者名稱才能向裝置進行身分驗證。 |
|
CredRestAPI:Password |
與使用者名稱對應的密碼。 |
| CredRedfish:Username | 硬體裝置存取所需的使用者名稱。 |
| CredRedfish:Password | 硬體裝置存取所需的密碼。 |
|
CredRedfish:Protocol |
用來與裝置進行安全通訊的通訊協定。 |
|
CredRedfish:Port |
用來與裝置進行通訊的連接埠號碼。 |
| CredRedfish:Timeout | 連線應嘗試的時間長度。 |
|
CredRedfish:Retries |
WhatsUp Gold 應嘗試與裝置進行通訊的次數。 |
|
CredRedfish:IgnoreCertificateErrors |
略過憑證錯誤。 |
範例:檢查服務是否正在執行
建立一個只有當 DNS 用戶端使用儲存的認證來執行時才顯示上線狀態的 PowerShell 主動監控工具。
# 要輪詢的裝置
$DeviceIpAddress = $Context.GetProperty("Address")
# 直接設定電腦名稱,或者...
# $CompName = mydb02.corpnet.example.com (for example)
# ...使用 WMI 來取得...
$WmiRes = Invoke-Command -ComputerName $DeviceIpAddress -ScriptBlock { Get-WmiObject Win32_Computersystem }
$CompName = $WMIRes.PSComputerName
# 在遠端裝置上執行命令
$PsResult = Invoke-Command -ComputerName $DeviceName -ScriptBlock { Get-Service | where { $_.Name -match "Dnscache" } }
# 檢查「執行中」的條件
if ($PsResult.Status -match 'Running') {
$RespondingMessage = "Process '" + $processName + "' running on " + $DeviceIpAddress + " is responding."
$Context.SetResult(0, $RespondingMessage )
} else {
$NotRunningMessage = "Process '" + $processName + "' running on " + $DeviceIpAddress + " is not responding."
$Context.SetResult(1, $NotRunningMessage )
}