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

Objekt mit Namen bereits vorhanden

$
0
0

Hallo liebe Powershell Community, ich stehe leider vor einem ärgerlichen Problem. Ich lege in unserem Unternehmen Nutzer per Powershell Script an. Dies funktioniert tadellos, AUßER: Der Name ist bereits vorhanden. Ich verstehe leider nicht so richtig, warum das für Powershell ein Problem ist, denn ich kann ja normal in unser AD gehen und mir dort 15 mal einen Max Mustermann anlegen. Per Script würde aber bereits beim zweiten Mustermann ein Fehler angezeigt werden wie unten auf dem Bild. Kann man diesen Fehler umgehen? Ich poste ganz unten das verwendete Script, falls es Jemanden interessiert.

cls


# LÄD FUNKTION ZUM ÖFFNEN EINES INPUT-FENSTERS
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')



$title = 'Neuer Nutzer'
$msg   = 'Bitte Anrede des neuen Nutzers eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$anrede = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Bitte Nachname des neuen Nutzers eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$name = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Bitte Vorname des neuen Nutzers eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$vorname = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)


$title = 'Neuer Nutzer'
$msg   = 'Bitte Abteilung des neuen Nutzers eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$abtei = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Bitte Position eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$position = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Bitte Titel des neuen Nutzers eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$usertitel = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Art des Mitarbeiters angeben (Arzt, Pflege, Verwaltung, Sonstige):'


# ÖFFNET DAS INPUT-FENSTER

$art = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Bitte Personalnummer eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$persnr = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)

$title = 'Neuer Nutzer'
$msg   = 'Bitte Telefonnummer eingeben:'


# ÖFFNET DAS INPUT-FENSTER

$num = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)


$ReplaceMap = New-Object -TypeName System.Collections.Hashtable
$ReplaceMap['Ä'] = 'Ae'
$ReplaceMap['Ö'] = 'Oe'
$ReplaceMap['Ü'] = 'Ue'
$ReplaceMap['ä'] = 'ae'
$ReplaceMap['ö'] = 'oe'
$ReplaceMap['ü'] = 'ue'
$ReplaceMap['ß'] = 'ss'
$ReplaceMap['é'] = 'e'
$ReplaceMap['è'] = 'e'
$ReplaceMap['á'] = 'a'
$ReplaceMap['à'] = 'a'

$Correct = (Get-Culture).TextInfo
$vorname1 = $vorname
$vorname1 = $Correct.ToTitleCase($vorname1.ToLower())
$ReplaceMap.Keys | % {$vorname1 = $vorname1.Replace($_, $ReplaceMap[$_])}

$name1 = $name
$name1 = $Correct.ToTitleCase($name1.ToLower())
$ReplaceMap.Keys | % {$name1 = $name1.Replace($_, $ReplaceMap[$_])}

$name2=$name1
$vorname2=$vorname1
for($i = 1; $i -le 5; $i++) {

    $account = "$name1.$($vorname1.Substring(0,$i))"
    $user = Get-ADUser -server xxx.xxx.de -Filter "samaccountname -eq '$account'"

    if($user -eq $null){

        write-Host "User $account in Domain 1 NICHT gefunden"
        $user = Get-ADUser -server xxy.xxy.de -Filter "samaccountname -eq '$account'"

        if($user -eq $null){
            write-Host "User $account in Domain 2 NICHT gefunden"
	    break
        }
        else{
            write-Host "User $account in Domain 2 gefunden"
        }
    }
    else{
        write-Host "User $account in Domain 1 gefunden"
    }
}

$account


$check = Get-ADUser -server xxy.xxy.de -Filter "samaccountname -eq '$account'"


#Remove-ADUser $Account -Confirm:$false

if($usertitel){

New-ADUser -Name "$name, $vorname" -Path 'OU=Benutzer,OU=xxx,DC=xxy,DC=xxy,DC=de' -GivenName $vorname -Surname $name -accountPassword (ConvertTo-SecureString -AsPlainText "xxx" -Force) -ChangePasswordAtLogon $true -Enabled $True -City "xxx" -Company 'abc' -Description $abtei -Country 'DE' -DisplayName "$name, $vorname" -SamAccountName $account -ScriptPath "xxx\logon_xxx_komplett.bat" -State "xxx" -StreetAddress "xcv" -OtherAttributes @{'extensionAttribute9'="xxx";'extensionAttribute4'=$account;'extensionAttribute11'=$usertitel;'extensionAttribute14'=$abtei;'extensionAttribute10'=$anrede} -PostalCode "xxx" -HomePage "http://xxx.de" -Department $abtei -PasswordNeverExpires $False -title $position -OfficePhone $num

} else
{
 New-ADUser -Name "$name, $vorname" -Path 'OU=Benutzer,OU=xxx,DC=xxy,DC=xxy,DC=de' -GivenName $vorname -Surname $name -accountPassword (ConvertTo-SecureString -AsPlainText "xxx" -Force) -ChangePasswordAtLogon $true -Enabled $True -City "xxx" -Company 'abc' -Description $abtei -Country 'DE' -DisplayName "$name, $vorname" -SamAccountName $account -ScriptPath "aue\logon_xxx_komplett.bat" -State "xxx" -StreetAddress "xxx" -OtherAttributes @{'extensionAttribute9'="xxx";'extensionAttribute4'=$account;'extensionAttribute14'=$abtei;'extensionAttribute10'=$anrede} -PostalCode "xxx" -HomePage "http://xxx.de/xxx" -Department $abtei -PasswordNeverExpires $False -title $position -OfficePhone $num
}




Start-Sleep -s 2

Get-ADUser $account -prop otherMobile
Set-ADUser $account -Add @{otherMobile=$art}
Get-ADUser $account -prop postOfficeBox
Set-ADuser $account -Add @{postOfficeBox=$persnr}
Get-ADUser $account -prop info
Set-ADUser $account -Add @{info="Mailbox-Aktivierung"}
$user = Get-ADUser -Filter {(sAMAccountname -eq $account)}
#$group = Get-ADGroup "CN=xxx_Benutzer_xxx-xxx,OU=Gruppe,OU=xxx,DC=xxy,DC=xxy,DC=de"
Add-ADGroupMember -identity "xxx_Benutzer_xxy" –Members $user
Add-ADGroupMember -identity "Ordnerumleitung" –Members $user


Set-ADUser $account -UserPrincipalName ("{0}@{1}" -f $account,"xxy.xxy.de")


new-item -path "\\1.1.1.1\xxx$\$account" -ItemType Directory -force -ea stop
new-item -path "\\1.2.1.1\xxb$\$account" -ItemType Directory -force -ea stop



# ADMINISTRATOR WIRD IN ALLEN ORDNERN, UNTERORDNERN UND DATEIEN ZUM BESITZER

$username=”xxx_Server_xxx”
$domain=”xxy”
$rootPath = Join-Path "\\1.2.1.1\e$\home\" -childpath $account
$ID = new-object System.Security.Principal.NTAccount($domain, $username)
$acl = get-acl $rootPath
$acl.SetOwner($ID)
set-acl -path $rootPath -aclObject $acl
Get-ChildItem -Path $rootPath -recurse | set-acl -aclObject $acl

# DEAKTIVIERT DIE VERERBUNG DURCH ÜBERGEORDNETE ORDNER
$acl = Get-ACL $rootPath
$acl.SetAccessRuleProtection($true, $true)
Set-Acl -Path $rootPath -AclObject $acl


# ENTFERNT DIE GRUPPE "xxx-BENUTZER"

$DirectoryPath="\\1.2.1.1\xxx$\$account"
$IdentityRef = "xxx\xxx-Benutzer"  #User oder Group

$ACL = Get-ACL $DirectoryPath
$ACEs=(Get-Acl $DirectoryPath).Access | where {$_.IdentityReference -eq $IdentityRef}
$ACEs | foreach{
    try{
    $null=$ACL.RemoveAccessRule($_)
    Set-ACL $DirectoryPath $ACL
    "ACE für $IdentityRef erfolgreich entfernt"
    }
    catch{
    #keine ACE mehr vorhanden
    }
 }

# GEWÄHRT NUTZER VOLLZUGRIFF AUF HOME

$fullPath = „\\1.2.1.1\xxx$\{0}“ -f $account 

$User = Get-ADUser -Identity $account

if($User -ne $Null) { 
    
    $acl = Get-Acl $fullpath

    $FileSystemRights = [System.Security.AccessControl.FileSystemRights]“FullControl“ 
    $AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow 
    $InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]“ContainerInherit, ObjectInherit“ 
    $PropagationFlags = [System.Security.AccessControl.PropagationFlags]“None“

    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($User.SID, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType) 
    $acl.AddAccessRule($AccessRule)

    Set-Acl -Path $fullpath -AclObject $acl -ea Stop

    }

# GEWÄHRT NUTZER VOLLZUGRIFF AUF SCANS

$fullPath = „\\1.1.2.1\xxx$\{0}“ -f $account 

$User = Get-ADUser -Identity $account

if($User -ne $Null) { 
    
    $acl = Get-Acl $fullpath

    $FileSystemRights = [System.Security.AccessControl.FileSystemRights]“FullControl“ 
    $AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow 
    $InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]“ContainerInherit, ObjectInherit“ 
    $PropagationFlags = [System.Security.AccessControl.PropagationFlags]“None“

    $AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($User.SID, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType) 
    $acl.AddAccessRule($AccessRule)

    Set-Acl -Path $fullpath -AclObject $acl -ea Stop

    }



$account

pause


Viewing all articles
Browse latest Browse all 2314


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