可用的監控物件與屬性

PowerShell 動作指令碼有以下實體化的工作階段物件可供使用。

  • 內容:IScriptContext 介面實作。這個物件讓您可存取執行階段變數,並允許您取得或設定屬性、與監控環境互動,以及將結果傳回用戶端。以下列出幾個實用的方法:
    • object GetProperty(string Property-Name):可根據名稱擷取環境變數值。
    • object SetProperty (string Property-Name, string Property-Value ):可根據名稱指定環境變數值。
    • object LogMessage (string This is a log message.):將訊息記錄到 WhatsUp Gold 記錄檔。
    • object GetDeviceProperty (string Device-Property-Name):擷取特定於被監控裝置的屬性值。
    • object SetDeviceProperty (string Device-Property-Name, string Property-Value):設定特定於被監控裝置的屬性值。

您可以使用 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)

可為下列其中一個整數值:

  • 1 = 無
  • 2 = DES56
  • 3 = AES128
  • 4 = AES192
  • 5 = AES256
  • 6 = THREEDES

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 )

}