PowerShell
- Last Updated: September 25, 2024
- 6 minute read
- WhatsUp Gold
- Version 2024
PowerShell 讓您可從遠端存取監控的裝置,以及運用安裝在其上的 PowerShell 模組和 .NET 資料庫。
先決條件
WhatsUp Gold 使用 32 位元(亦即「x86」)PowerShell 引擎,只支援 32 位元的 PowerShell 嵌入式管理單元,而 64 位元的嵌入式管理單元無法正常運作。如果是能同時用於 32 位元和 64 位元作業系統的嵌入式管理單元,依預設是設定用於 64 位元系統,因此若要在 WhatsUp Gold 中發揮正常功能,必須針對 32 位元的 PowerShell 軟體引擎進行手動設定。
遠端連線要求:
在使用 PowerShell 來將 WhatsUp Gold 機器連線到目的地(輪詢的)裝置前,請先確認以下的設定皆已完備。
- Windows 認證:必須按照內容物件所提供的方法和屬性來明確使用認證。必須使用 HTTPS 來傳輸或者輪詢的裝置必須列在運行 WhatsUp Gold 的機器的 TrustedHosts 清單中。
- 網域和主機名稱:如果您使用使用者的預設認證。要單獨使用 IP 位址,您必須指定 PowerShell/WinRM 登入的認證。(如需詳細資訊,請參閱此 WinRM 故障排除說明。)
- 啟用 PowerShell 遠端:在目的地(輪詢的)裝置上啟用 PowerShell 遠端。如需詳細資訊,請參閱所提供的 MSDN 說明文件連結。
監控工具組態
此主動監控工具的組態欄位包括:
- 名稱:輸入主動監控工具的專屬名稱。此名稱會顯示在「監控工具資料庫」中。
- 說明:(選用)輸入監控工具的其他相關資訊。這段說明會顯示在「監控工具資料庫」中監控工具名稱的旁邊。
- 逾時(秒):輸入 WhatsUp Gold 嘗試連線到所選裝置的容許時間長度。
- 以裝置認證執行:啟用這個核取方塊就能利用裝置的 Windows 認證執行指令碼。
- 指令碼文字:輸入您的主動監控工具程式碼。
可用的監控物件與屬性
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 )
}