Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Fehler PowerShell Script Active Directory

$
0
0

Hallo,

bei meinem PowerShell Script, dass ermitteln soll, welche Benutzerkonten abgelaufen sind, alle Gruppenmitgliedschaften des jeweiligen Benutzers bis auf "Domänen-Benutzer" entfernt, diesen dann in die OU für deaktivierte Benutzer verschieben und deaktivieren soll bekomme ich eine Fehlermeldung und ich steh ehrlich gesagt auf dem Schlauch...

Hier mal das Script

# ActiveDirectory Modul importieren
Import-Module ActiveDirectory -Verbose:$false

#Abgelaufene Benutzerkonten
Write-Verbose 'Suche nach abgelaufenen Benutzerkonten'
$ExpiredAccounts = Search-ADAccount -AccountExpired -UsersOnly | Where-Object { $_.Enabled -eq $true }
Write-Verbose "$(@($ExpiredAccounts).count) abgelaufene Benutzerkonten gefunden"

#Gruppen die nicht entfernt werden sollen
$ExcludedGroups = @(
'CN=Domänen-Benutzer,OU=Users,DC=xx,DC=yy'
)

#Abgelaufene Benutzerkonten in die folgende OU verschieben
$DisabledOU = 'OU=__disabled,DC=xx,DC=yy'

#Aktuelles Datum abrufen
$Date = Get-Date -Format g

#Deaktivierte Benutzer durchforsten
ForEach($User in $ExpiredAccounts) {
  Write-Verbose "Gruppenmitgliedschaften von $($user.SamAccountName) werden kontrolliert"
  #Gruppenmitgliedschaften des Benutzers abrufen
  $userMembership = Get-ADUser $user.SamAccountName -Properties MemberOf | Select-Object -ExpandProperty memberoff
  Write-Verbose "Benutzerkonto ist mitgleid von: $(@($userMembership.Count)) Gruppen"

  foreach($member in $userMembership) {
    # Benutzer aus Gruppen entfernen
    if (!$ExcludedGroups.Contains($member)){
      try{
        Write-Verbose "Entferne Benutzer $($User.SamAccountName) aus $($member)"
        Get-ADGroup $member | Remove-ADGroupMember -Members $user.SamAccountName -Confirm:$false
      }
      catch{
        Write-Error "Fehler beim Benutzer $($User.Name) beim entfernen aus der Gruppe `'$member`'"
      }
    }
  }

  #Benutzer verschieben und deaktivieren
  try{
    # Beschreibung ändern und deaktivieren
    Write-Verbose "Ändere Beschreibung des Benutzers: `"Deaktiviert am $Date`""
    Set-ADUser -Identity $User.SamAccountName -Description "Deaktiviert am $Date" -Enabled $false
    # Benutzer in __disabled OU verschieben
    Write-Verbose 'Verschiebe Benutzer in die OU __disabled'
    Get-ADUser -identity $User.SamAccountName | Move-ADobject -targetpath $DisabledOU
  }
  catch{
    Write-Error "Fehler bei folgendem Benutzer `'$($User.DistinguishedName)`'"
  }
}
Get-ADUser : Das Argument für den Parameter "Identity" kann nicht überprüft werden. Das Argument ist NULL. Geben Sie ein Argument an, das nicht NULL ist, und führen Sie dann den Befehl erneut aus.
Bei xx.ps1:20 Zeichen:41
+   $BenutzerMitgliedschaften = Get-ADUser <<<<  $user.SamAccountName -Properties MemberOf | Select-Object -ExpandProperty memberoff
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
 
Fehler beim Aufrufen der Methode, da [System.Object[]] keine Methode mit dem Namen "Contains" enthält.
Bei xx.ps1:23 Zeichen:42
+     if (!$AuszuschließeneGruppen.Contains <<<< ($member)){
    + CategoryInfo          : InvalidOperation: (Contains:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
 
xx.ps1 : Fehler bei folgendem Benutzer ''
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,xx.ps1

Desweiteren, muss ich bei jedem Write-Error und Write-Verbose das Argument -Message anfügen oder reicht es  $VerbosePrefence = "Continue" zu definieren?




Viewing all articles
Browse latest Browse all 2314


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>