PowerShell 提供对受监控设备的远程访问功能,并能利用设备安装的 PowerShell 模块和 .NET 库。
WhatsUp Gold 使用 32 位(即 x86)PowerShell 引擎。只支持 32 位的 PowerShell 管理单元,纯 64 位管理单元不能正常工作。在 32 位和 64 位操作系统中均可使用的管理单元默认配置为 64 位系统,并且必须手动配置为 32 位 PowerShell 引擎才能正常使用 WhatsUp Gold。
远程连接要求
必须确保以下要素才能支持 WhatsUp Gold 计算机使用 PowerShell 连接到目标(被轮询的)设备。
Enable-PSRemoting
.在目的(被轮询)设备上启用 PowerShell 远程处理。如需详细信息,请参阅所提供的 MSDN 文档链接。此主动监控器的配置字段包括:
PowerShell 主动监控工具脚本提供两个实体化的会话对象。
您可以通过 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 验证协议。 |
CredSnmpV3:EncryptProtocol(integer-value) |
整数值可以是以下其中一种:
|
CredSnmpV3:EncryptPassword |
SNMPv3 加密密码。 |
CredSnmpV3:用户名 |
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:超时 |
telnet 连接的超时值。 |
CredTelnet:端口 |
Telnet 端口(如不是默认)。 |
CredTelnet:用户名 |
Telnet 用户名。 |
CredTelnet:密码 |
Telnet 密码。 |
CredJMX:用户名 |
Java 管理扩展用户名。 |
CredJMX:密码 |
Java 管理扩展密码。 |
CredSMIS:超时 |
“存储管理”超时。 |
CredSMIS:端口 |
“存储管理”端口。 |
CredSMIS:协议
|
“存储管理”协议。 |
CredSMIS:用户名
|
“存储管理”用户名。 |
CredSMIS:密码
|
“存储管理”密码。 |
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 主动监控器。
# 要轮询的设备
$DeviceIpAddress = $Context.GetProperty("Address")
# 直接设置计算机名称,或...
# $CompName = mydb02.corpnet.example.com(举例)
# ...用 WMI 获取...
$WmiRes = Invoke-Command -ComputerName $DeviceIpAddress -ScriptBlock { Get-WmiObject Win32_Computersystem }
$CompName = $WMIRes.PSComputerName
# 在远程设备上运行命令
$PsResult = Invoke-Command -ComputerName $DeviceName -ScriptBlock { Get-Service | 其中 { $_.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 )
}