2017-03-22 3 views
0

Ich bin ein Neuling, wenn es um Programmierung und Powershell kommt. Ich habe einen hohen Ehrgeiz, also habe ich mich selbst beauftragt, etwas viel schwierigeres zu schaffen, als es hätte sein sollen. Funktioniert bisher großartig, aber es könnte besser sein.Powershell mehrere Benutzereingabe Verzweigung

Mein Ziel: Erstellen Sie ein Powershell-Skript, das einen vorhandenen Benutzer kopiert, um einen neuen Benutzer mit ähnlichen Funktionen mit etwas Glocke und Pfiff zu erstellen.

Die Skriptfunktionen:

die Admin-Benutzer fragen, die AD Fragen Sie den Admin nennen Sie den neuen AD-Benutzer Ausgabe einiger Schriften und dann fragen Sie den Benutzer zur Bestätigung, bevor Sie mit Wahl Y oder N kopieren Wenn Geben Sie Y ein, fahren Sie mit dem Skript fort. Wenn der Administrator N eingeben, starten Sie das Skript neu. Wenn der Administrator etwas anderes eingibt, stellen Sie die Frage erneut.

Meine Frage: Wie implementiere ich eine Art von Fehlern bei Überprüfung der Server-Betreiber gibt die falschen AD Benutzer von kopieren, die nicht und einen Fehler wirft Code existieren? Ich möchte, dass die Konsole sie darauf aufmerksam macht, dass es falsch ist und sie erneut eingeben.

Code unten. Jeder Tipp, um es zu perfektionieren, würde auch sehr geschätzt werden.

PS: Ich habe gerade angefangen, mit Powershell und Kodierung im Allgemeinen zu arbeiten, also bin ich über die Spitze gegangen, etwas so einfaches zu tun, aber ich habe ziemlich viel gelernt. Ich plane, auch die Codes aufzuräumen. Vielleicht kann dieser Code nützlich sein, um jemand da die Suche nach etwas ähnlichen

Write-Host "****************************************************************" 
Write-Host "**" -nonewline 
Write-Host "    New User Creation Script      " -ForegroundColor yellow -nonewline 
Write-Host "**" 
Write-Host "****************************************************************`n" 



Do { 


Write-Host "Enter an AD Username to copy: " -ForegroundColor Green -NoNewline 

$InputUser = Read-Host 
$User = Get-AdUser -Identity $InputUser -Properties OfficePhone, Title, Department, State, Streetaddress, City, Country, Office, HomePage, Fax, Description, co, OfficePhone, PostalCode 
$DN = $User.distinguishedName 
$OldUser = [ADSI]"LDAP://$DN" 
$Parent = $OldUser.Parent 
$OU = [ADSI]$Parent 
$OUDN = $OU.distinguishedName 

Write-Host "Enter New Username: " -ForegroundColor Green -NoNewline 
$NewUser = Read-Host 

Write-Host "Enter First Name: " -ForegroundColor Green -NoNewline 
$FirstName = Read-Host 

Write-Host "Last Name: " -ForegroundColor Green -NoNewline 
$LastName = Read-Host 

$NewName = "$firstname $lastname" 

Write-Host "Domain Name such as `"" -ForegroundColor Green -NoNewline 
Write-Host "Datamartinc.net" -ForegroundColor Yellow -NoNewline 
Write-Host "`": " -ForegroundColor Green -NoNewline 
$Domain = Read-Host 

$upn = $NewUser+"@$Domain" 


Write-Host "`n---------------------------------------------------------------`n" 
Write-Host "`Username: " -ForegroundColor Yellow -NoNewline 
Write-Host "$NewUser" 
Write-Host "First Name: " -ForegroundColor Yellow -NoNewline 
Write-Host "$FirstName" 
Write-Host "Last Name: " -ForegroundColor Yellow -NoNewline 
Write-Host "$LastName" 
Write-Host "UPN:   " -ForegroundColor Yellow -NoNewline 
Write-Host "$upn" 
Write-Host "Copied User: " -ForegroundColor Yellow -NoNewline 
Write-Host "$InputUser" 

Do { 

Write-Host "`nPress " -NoNewline 
Write-Host "Y " -ForegroundColor Yellow -NoNewline 
Write-Host "to confirm and " -NoNewline 
Write-Host "N " -ForegroundColor Yellow -NoNewline 
Write-Host "to redo: " -NoNewline 
$confirm = Read-Host 

} until (($Confirm -eq 'y') -or ($Confirm -eq 'n')) 





if($Confirm -eq 'y') 
{ 
New-ADUser -SamAccountName $NewUser -userPrincipalName $upn -Name $NewName -GivenName $firstname -Surname $lastname -Instance $DN -Path "$OUDN" -AccountPassword (Read-Host "New Password: " -AsSecureString) –ChangePasswordAtLogon $false 
Get-ADUser -Identity $InputUser -Properties memberof | Select-Object -ExpandProperty memberof | Add-ADGroupMember -Members $NewUser 
Set-ADUser -Identity "$NewUser" -CannotChangePassword:$true -PasswordNeverExpires:$True 
Enable-ADAccount -Identity $NewUser 

$Completed = "y" 
; $Confirm ="n"} 

    else {Clear-Host 
    } 


     } 

Until ($Completed -eq "y") 

Write-Host "AD User Creation Completed Successfully" 

Antwort

0

Antwort auf Ihre Frage:

try 
{ 
    get-aduser $InputUser -Properties * -ErrorAction Stop 
} 
catch 
{ 
    write-host $_.Exception.Message 
} 

imho Powershell-Skript sollte die Zeit sparen und haben so wenig wie möglich Lese-Hosts.

+0

Das stimmt. Das ist hauptsächlich ein Experiment für mich. Es hat einige Verwendung, aber es wird mir nicht viel Zeit sparen oder die AD-Benutzerkopierrate um eine ganze Menge verbessern. – firebolt126

Verwandte Themen