Montag, 13 Mai 2019 16:21

Ivanti DSM - Fehlgeschlagene Policies auf Neuinstallieren setzen

Artikel bewerten
(0 Stimmen)

Jeder, der Ivanti DSM verwendet, kennt das Problem: Manchmal läuft es beim Verpacken und Ausrollen nicht immer reibungslos, selbst nach einer langen Test- und Pilotinstallationsphase.

Fehlende Abhängigkeiten in Paketen oder auf andere Weise installierten produktiven Computern können dazu führen, dass einige Richtlinieninstanzen in Ivanti DSM fehlschlagen. Oft treten die Fehler nur durch Zeitüberschreitungen auf. Mit den PSX Powershell-Erweiterungen von NWC-Services können Sie solche Richtlinieninstanzen problemlos auf "Neuinstallation" zurücksetzen.

Natürlich sollte dieses PowerShell-Skript mit Vorsicht verwendet werden. In den meisten Fällen gibt es einen gültigen Grund, warum die Richtlinieninstanzen fehlgeschlagen sind. Bitte verwenden Sie das Skript mit Bedacht. Es sollte klar sein, dass Sie selbst für das Risiko verantwortlich sind.

Das PSX PowerShell Script

param
(
  [string]$argServer = "localhost:8090",
  [string]$argUser = "domain\username",
  [string]$argPassword = "Passwort12345",
  [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()
}
Ersetzen Sie die Variablen im Powershell-Skript unter "Parameter" durch die Verbindungsinformationen Ihres Business Logic Servers (BLS) oder übertragen Sie die Parameter in das Skript. Das Powershell-Skript erledigt dann den Rest.
Gelesen 69 mal Letzte Änderung am Dienstag, 22 Dezember 2020 09:20

Schreibe einen Kommentar

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