Mittwoch, 27 Februar 2019 13:10

Ivanti DSM - Alle fehlgeschlagenen Policies auf Reinstall stellen

geschrieben von
Artikel bewerten
(0 Stimmen)

Manchmal läuft auch nach langer Test und Pilotinstallationsphase nicht immer alles rund. Fehlende Abhängigkeiten in Paketen oder anders installierte Produktivrechner können schonmal dafür sorgen das einige Policy-Instanzen in Ivanti DSM fehlgeschlagen. Manchmal kommen die Fehler auch nur durch TimeOuts. Mit den PSX Powershell Extensions von NWC-Services können Sie solche Policy-Instanzen einfach wieder auf Reinstallation stellen.

Natürlich ist dieses Script mit Vorsicht zu geniesen, meistens gibt es irgendeinen Grund warum die Policy-Instanzen fehlgeschlagen sind. Nutzen Sie das Script bitte mit Bedacht. Das Sie selbst für das Risiko verantwortlich sind sollte klar sein.


Das Powershell Script

 
param
(
  [string]$argServer = "localhost:8090",
  [string]$argUser = "domain\username",
  [string]$argPassword = "Passwort12345",
  [string]$loggedInUser = "", #optional für logging
  [string]$context = "emdb:\rootDSE\Managed Users & Computers\2. Computers\*"
)
 
import-module psx7 -DisableNameChecking
 
$Server = "\\$argServer";
$Username = $argUser;
 
$global:path = $context
$password = $argPassword | ConvertTo-SecureString -asPlainText -Force
 
$credential = New-Object System.Management.Automation.PSCredential($Username, $password)
 
Write-Host "Using context: " + $context
 
try
{
  new-psdrive -name emdb -root $Server -scope script -psprovider blsemdb -Credential $credential
  emdb:
 
  $computer = Get-EmdbComputer $context -Recurse
 
  foreach ($comp in $computer)
  {
    Write-Host "Getting policies for computer ID" + $comp.Name
 
    $PolicyList = $comp | Get-EmdbPolicyInstance
 
    Foreach ($instance in $PolicyList)
    {
      if ($instance.ComplianceState -eq "NotCompliant")
      {
        $instance.Reinstall();
        Write-Host $comp.Name " Set Policy " $instance.ID " " $instance.AssignedObjectName.ToString() "to reinstall."
 
        $file = "C:\temp\" + $loggedInUser + "_done.log"
        $stream = new-object IO.FileStream $file, 'Append', 'Write', 'Read'
        $sWriter = new-object System.IO.StreamWriter $stream;
        $ln = $loggedInUser + "; triggered a reinstall on policy instance: " + $instance.ID + " with the Policy Name: " + $instance.AssignedObjectName.ToString() + ";" + $comp.Name;
        $sWriter.WriteLine($ln)
        $sWriter.close()
      }
 
    }
  }
}
catch
{
  $stream = new-object IO.FileStream "C:\temp\detpolicies.log", 'Append', 'Write', 'Read'
  $sWriter = new-object System.IO.StreamWriter $stream;
  $sWriter.WriteLine($Error[0].Exception)
  $sWriter.close()
}
Gelesen 162 mal Letzte Änderung am Dienstag, 05 März 2019 10:52

Schreibe einen Kommentar

Bitte achten Sie darauf, alle Felder mit einem Stern (*) auszufüllen. HTML-Code ist nicht erlaubt.