Die Lösung ist einfach:
Mit Hilfe des Skript Sensor für PowerShell kannst Du Deine eigenen PowerShell Skripte beisteuern und so dynamische Tasks überwachen. Hierzu kopierst Du einfach das PowerShell Skript in das vorgesehene „script“ Verzeichnis im Serve-Eye Ordner (auf dem entsprechenden Server).
Anschließend kannst Du im Sensor selbst über die entsprechende Einstellung Dein Skript auswählen.
Bezüglich Deines erstellten Skripts gibt es noch wichtige Informationen, die es zu beachten gilt, damit eine fehlerfreie Funktionsweise in Server-Eye möglich ist.
- Füge ein Beschreibungsfeld hinzu. Dazu muss in einem Kommentarbereich <description> </description> hinzugefügt werden mit der passenden Beschreibung zum Skript. Lässt man dieses Feld weg erscheint keine Beschreibung im OCC
- Achte darauf das Dein Skript für einen Erfolgs- und Fehlerfall klare Rückgabewerte definiert. (Beispiel exit 0 für OK und exit 1 für einen Fehler) so kannst Du später anhand des Rückgabewertes genau vertiefen, wo ein Fehler aufgetreten ist
Willst Du Befehle auf der Exchange Management Shell ausführen ist es notwendig folgender Skript Teil vor der eigentlichen Logik zu platzieren
$s = Get-PSSession | Where-Object {$_.ConfigurationName -eq 'Microsoft.Exchange'}
if($s){
Write-Host "Exchange Management Shell already loaded"
}
else
{
Write-Host "Exchange Management Shell not found - Loading..." -ForegroundColor Yellow
. "$env:ExchangeInstallPath\bin\RemoteExchange.ps1"
Write-Host "Exchange Management Shell loaded $nl" -ForegroundColor green
Write-Host "Connecting to Exchange server $nl"
Connect-ExchangeServer -auto
Write-Host "Connected to Exchange Server $nl" -ForegroundColor green
}
Damit stellst Du sicher, dass die Exchange Management Shell geladen wird und Deine Befehle korrekt erkannt werden.
Nun folgt ein Beispielskript welches einen simplen Ping ausführt:
$err=“false“
$srv=@('google.de','yahoo.de','bing.de')
foreach($s in $srv)
{
echo "Pinging $s..."
$r = [string]::Empty
$r = ping $s|select-string "100% loss|could not find host"
if([string]::IsNullOrEmpty($r))
{
echo "`t$s found"
}
else
{
$err=”true”
echo "`t$s not found"
}
}
if($err -eq "false"){
exit 0
}else{
exit 2
}