PowerShell ermöglicht den Remote-Zugriff auf das überwachte Gerät und die Nutzung von dort installierten PowerShell-Modulen und .NET-Bibliotheken.
WhatsUp Gold verwendet eine 32-Bit-PowerShell-Engine (d. h. x86). Es werden nur 32-Bit-PowerShell-Snap-ins unterstützt. Die reinen 64-Bit-Snap-ins funktionieren nicht. Snap-ins, die sowohl 32-Bit- als auch 64-Bit-Betriebssysteme unterstützen, sind standardmäßig für 64-Bit-Systeme konfiguriert und müssen manuell für die 32-Bit-PowerShell-Engine konfiguriert werden, damit sie mit WhatsUp Gold funktionieren.
Anforderungen an Remote-Verbindungen
Folgende Bedingungen müssen erfüllt werden, damit der WhatsUp Gold-Computer über PowerShell eine Verbindung mit dem (abgefragten) Zielgerät herstellen kann.
Enable-PSRemoting
. Aktiviert PowerShell-Remoting auf dem (abgefragten) Zielgerät. Weitere Informationen finden Sie unter dem Link zur MSDN-Dokumentation.Es gibt unter Anderem folgende Konfigurationsfelder für diesen aktiven Monitor:
In Skripten für aktive PowerShell-Monitore stehen zwei instanziierte Sitzungsobjekte zur Verfügung.
Sie können Werte für Kontexteigenschaften mit Skripten in aktiven PowerShell-Monitoren abrufen.
Syntax
Property-Value = Context.GetProperty("
Property-Name")
Context.SetProperty("
Property-Name","
Property-Value")
Beispiel:
$DeviceIpAddress = $Context.GetProperty(„Address")
$Context.SetProperty("Timeout", "180")
Der festgelegte Ergebnistext wird zur Beschreibung der Statusänderung hinzugefügt. Das festgelegte Status-Flag (0, 1) erreichbar/nicht erreichbar legt fest, welcher Indikator in der Zeitachse der Zustandsänderungen angezeigt wird.
# Nach erfolgreichem Abrufen (Get) der IpAdresse wird das Ergebnis (SetResult) und das Erfolgs-Flag festgelegt …
$Context.SetResult(0, "Die IP-Adresse des Geräts lautet " + $DeviceIpAddress)
Auf folgende Eigenschaften kann vom Verbindungsobjekt, das bei der Ausführung von PowerShell erstellt wurde, zugegriffen werden.
Eigenschaft |
Beschreibung |
DeviceID |
Geräte-ID in WhatsUp Gold. |
Address |
IP-Adresse. |
Zeitüberschreitung |
Zeitüberschreitung für diese Sitzung (in Sekunden). |
Folgende Eigenschaften für Anmeldeinformationen können für PowerShell festgelegt werden. Diese Eigenschaften sind nützlich, wenn Verbindungen zu anderen Diensten, Plattformen oder Anwendungen hergestellt werden müssen, nachdem die erste PowerShell-Verbindung über den aktiven Monitor hergestellt wurde.
Eigenschaft |
Beschreibung |
CredWindows:DomainAndUserid |
Domäne und Benutzer für Windows-Anmeldeinformationen. |
CredWindows:Password |
Legt das Windows-Kennwort fest. |
CredSnmpV1:ReadCommunity |
Lese-Community-Zeichenkette für SNMPv1. |
CredSnmpV1:WriteCommunity |
Schreib-Community-Zeichenkette für SNMPv1. |
CredSnmpV2:ReadCommunity |
Lese-Community-Zeichenkette für SNMPv2. |
CredSnmpV2:WriteCommunity |
Schreib-Community-Zeichenkette für SNMPv2. |
CredSnmpV3:AuthPassword |
SNMPv3-Kennwort. |
CredSnmpV3:AuthProtocol(Ganzzahlwert) |
SNMPv3-Authentifizierungsprotokoll. |
CredSnmpV3:EncryptProtocol(Ganzzahlwert) |
Folgende Zahlenwerte stehen zur Verfügung:
|
CredSnmpV3:EncryptPassword |
Verschlüsselung des Kennworts für SNMPv3. |
CredSnmpV3:Username |
SNMPv3-Benutzer. |
CredSnmpV3:Context |
SNMPv3-Kontext. |
CredADO:Password |
ADO-Kennwort. |
CredADO:Username |
ADO-Benutzername. |
CredSSH:Username |
SSH-Benutzername. |
CredSSH:Password |
SSH-Kennwort. |
CredSSH:EnablePassword |
Kennwort-Flag aktivieren. |
CredSSH:Port |
SSH-Port, falls dieser vom Standardwert abweicht. |
CredSSH:Timeout |
Zeitüberschreitung für SSH-Sitzungen. |
CredVMware:Username |
VMware-Benutzername. |
CredVMware:Password |
VMware-Kennwort. |
CredTelnet:Timeout |
Zeitüberschreitungswert für Telnet-Verbindung. |
CredTelnet:Port |
Telnet-Port, falls dieser vom Standardwert abweicht. |
CredTelnet:Username |
Telnet-Benutzername. |
CredTelnet:Password |
Telnet-Kennwort. |
CredJMX:Username |
Benutzername für JMX (Java Management Extensions). |
CredJMX:Password |
Kennwort für JMX (Java Management Extensions). |
CredSMIS:Timeout |
Zeitüberschreitung für die Speicherverwaltung. |
CredSMIS:Port |
Port für die Speicherverwaltung. |
CredSMIS:Protocol
|
Protokoll für die Speicherverwaltung. |
CredSMIS:Username
|
Benutzername für die Speicherverwaltung. |
CredSMIS:Password
|
Kennwort für die Speicherverwaltung. |
CredAWS:AccessKeyID
|
Konto-ID für Amazon Web Services (AWS). |
CredAWS:SecureAccessKey
|
Zugriffsschlüssel für Amazon Web Services (AWS). |
CredAzure:TenantID
|
Azure-Abonnement-ID. |
CredAzure:ClientID
|
Konto-ID für Azure-Client. |
CredAzure:SecureKey |
Schlüssel für Azure-Konto. |
CredRestAPI:Username |
Benutzername, der für eine Authentifizierung für das Gerät erforderlich ist. |
CredRestAPI:Password |
Zu dem Benutzernamen zugehöriges Kennwort. |
CredUbiquiti:Username |
Der Benutzername, der für eine Authentifizierung beim Ubiquiti Unifi-Controller verwendet wird. |
CredUbiquiti:Password |
Zu dem Benutzernamen zugehöriges Kennwort. |
CredUbiquiti:Port |
Die Nummer des Ports, über den der Ubiquiti Unifi-Controller API-Anfragen beantwortet. |
Erstellt einen aktiven PowerShell-Monitor, der den Status erreichbar nur dann anzeigt, wenn ein DNS-Client ausgeführt wird und die gespeicherten Anmeldeinformationen verwendet.
# Abzufragende Geräte
$DeviceIpAddress = $Context.GetProperty(„Address")
# Computernamen direkt festlegen oder ...
# $CompName = mydb02.corpnet.beispiel.de (Beispiel)
# ... mit WMI abrufen (Get) ...
$WmiRes = Invoke-Command -ComputerName $DeviceIpAddress -ScriptBlock { Get-WmiObject Win32_Computersystem }
$CompName = $WMIRes.PSComputerName
# Befehl auf Remote-Gerät ausführen
$PsResult = Invoke-Command -ComputerName $DeviceName -ScriptBlock { Get-Service | where { $_.Name -match "Dnscache" } }
# Auf Bedingung „wird ausgeführt“ prüfen
if ($PsResult.Status -match 'Running') {
$RespondingMessage = „Prozess '" + $processName + "' auf der IP-Adresse " + $DeviceIpAddress + " ist erreichbar."
$Context.SetResult(0, $RespondingMessage )
} else {
$NotRunningMessage = „Prozess '" + $processName + "' auf der IP-Adresse " + $DeviceIpAddress + " ist nicht erreichbar."
$Context.SetResult(1, $NotRunningMessage )
}