PowerShell を使用すると、監視対象デバイスへのリモートアクセスが可能になり、そのデバイスにインストールされている PowerShell モジュールおよび .NET ライブラリを利用できます。
WhatsUp Gold は 32 ビット (すなわち「x86」) の PowerShell エンジンを使用します。32 ビットの PowerShell スナップインのみがサポートされており、64 ビットのみのスナップインは正常に機能しません。32 ビットと 64 ビットの両方のオペレーティングシステムで動作するスナップインは、デフォルトでは 64 ビットシステム用に設定されているため、32 ビットの PowerShell エンジンが WhatsUp Gold で正常に機能するには、手動で設定する必要があります。
リモート接続の要件
PowerShell を使用して、WhatsUp Gold マシンを接続先 (ポーリング先) のデバイスに接続できるようにするには、以下を準備してください。
PSRemoting を有効にする
。接続先 (ポーリング先) のデバイスで PowerShell リモートを有効にします。詳細については、提供されている MSDN ドキュメントのリンクを参照してください。このアクティブモニタには、以下の設定フィールドがあります。
PowerShell アクティブモニタスクリプトでは、2 つのインスタンス化セッションオブジェクトを利用できます。
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 デバイスの識別文字列。 |
Address |
[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 の認証プロトコル。 |
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 |
Storage Management のタイムアウト。 |
CredSMIS:Port |
Storage Management のポート。 |
CredSMIS:Protocol
|
Storage Management のプロトコル。 |
CredSMIS:Username
|
Storage Management のユーザー名。 |
CredSMIS:Password
|
Storage Management のパスワード。 |
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 |
ユーザー名に関連付けられたパスワード。 |
CredUbiquiti:Username |
Ubiquiti Unifi コントローラでの認証に使用するユーザー名。 |
CredUbiquiti:Password |
ユーザー名に関連付けられたパスワード。 |
CredUbiquiti:Port |
Ubiquiti Unifi コントローラが API 要求に応答するために使用するポート番号。 |
保存されている認証情報を使用して DNS クライアントが実行されている場合にのみ、稼働のステータスを示す PowerShell アクティブモニタを作成します。
# Device to Poll
$DeviceIpAddress = $Context.GetProperty("Address")
# Set the computer name directly, or...
# $CompName = mydb02.corpnet.example.com (for example)
# ...get it using WMI...
$WmiRes = Invoke-Command -ComputerName $DeviceIpAddress -ScriptBlock { Get-WmiObject Win32_Computersystem }
$CompName = $WMIRes.PSComputerName
# Run command on remote device
$PsResult = Invoke-Command -ComputerName $DeviceName -ScriptBlock { Get-Service | where { $_.Name -match "Dnscache" } }
# Check for condition of 'running'
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 )
}