CreateUserGUI_V1.ps1:

Einer der anstregendsten Aufgaben, die Administratoren durchführen, ist das Anlegen neuer Benutzer. Wenn wir 50 bis 100 Nutzer anlegen müssen, wird man uns bei einer Reihe von sehr starren Mausklicks beobachten können. In diesem Fall sollte muss ein Powershell-Skript mit Hilfe einer csv-Datei zum Einsatz kommen.

Die o.a. GUI ist eher für die Benutzeranlage für einige wenige Benutzer während des Betriebs gedacht. Diese ist auf unseren Betrieb angepasst und erstellt zusätzlich auf einem Fileserver ein Benutzerordner, wo nur der angelegte Benutzer Schreibrechte hat + Administratoren.

Das Skript ist einfach aufgebaut. Man trägt die Daten für den Benutzer ein, wählt die OU und die Gruppen aus, wo der oder die Benutzer Mitglied werden soll.

[System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms") 

[system.windows.forms.messagebox]::Show("Only run in Quest Powershell!")

Function createmailbox{
	#Pfad zum Laufwerk, welches ggf. für den Benutzer angelegt werden soll
	$path = "\Server-IP-Addressdatenaustausch"

	#Richtige Domäne eintregen
	$objUser = [ADSI]“LDAP://localhost:389/dc=domain,dc=com”

	$OU = $OUhash1[$ouOuNameDrop.SelectedItem.ToString()]
	$OU = $OU.substring($OU.lastindexof("/")+1)
	$TSOU=[ADSI]“LDAP://localhost:389/ou=$OU,OU=Companies,dc=domain,dc=com”

	if($TSOU.true){

	foreach($row in $dgDataGrid.rows){
		if ($row.Cells[0].Value -ne $null){

			$CN=$row.Cells[1].Value + " " + $row.Cells[0].Value								

			$SN=$row.Cells[1].Value									

			$title="#"

			$description=$row.Cells[3].Value

			$department="#"

			$streetAddress=$row.Cells[5].Value

			$postalcode=$row.Cells[4].Value

			$telephoneNumber=$row.Cells[6].Value

			$givenName=$row.Cells[0].Value	

			$company=$row.Cells[7].Value	

			$mail="#"

			$userPrincipalName=$row.Cells[2].Value + "@domain.com"

			$Samaccountname=$row.Cells[2].Value

			$group1Name=$UD.Gruppe1inOU

			$group2Name=$UD.Gruppe2inOU

			$group3Name=$UD.Gruppe3

			$group4Name=$UD.Gruppe4

			$group5Name=$UD.Gruppe5

			$group6Name=$UD.Gruppe6

			$group7Name=$UD.Gruppe7

			$Location="Deutschland"

			$User=$TSOU.create(“user”,”cn=$cn”)

			$User.Put(“sAMAccountName”,$Samaccountname)

			$User.put(“SN”,$SN)

			$User.put(“Title”,$title)

			$User.put(“Description”,$description)

			$User.put(“department”,$department)

			$User.put(“streetAddress”,$streetAddress)

			$User.put(‘telephoneNumber’,$telephoneNumber)

			$User.put(‘givenName’,$givenName)

			$User.put(‘company’,$company)

			$User.put(‘mail’,$mail)

			$User.put(‘L’,$Location)

			$User.put(‘userPrincipalName’,$userPrincipalName)

			$User.setinfo()

			$User.psbase.Invoke(“SetPassword”,”Caliber1”)

			$User.psbase.InvokeSet(‘Accountdisabled’,$false)

			$User.psbase.CommitChanges()

			write-host "Bitte 5 Sekunden warten - Benutzer wird angelegt..." + $result
			[System.Threading.Thread]::Sleep(5000)
			[system.windows.forms.messagebox]::Show("User " + $row.Cells[0].Value + " " + $row.Cells[1].Value + " created")

			foreach ($objItem in $objListbox.SelectedItems)
   			{
				$group = $Grouphash1[$objItem]
				$groupname = $group.substring($group.lastindexof("/")+1)
				Write-Host $groupname

				Add-QADGroupMember  -Identity $groupname -Member $row.Cells[2].Value
			}

			if ($checkbox.Checked)
			{

			write-host "Datenaustauschlaufwerk anlegen..."

			if (!(Test-Path ($path + $row.Cells[2].Value))){
				new-item -path $path -name $row.Cells[2].Value -type directory
			}else {
				Write-Host $row.Cells[2].Value " folder already exists"
 			}

  			$Acl = Get-Acl ($path+ "" + $row.Cells[2].Value)
    		$Ar = New-Object system.security.accesscontrol.filesystemaccessrule($row.Cells[2].Value,"Modify","ContainerInherit,ObjectInherit","None","Allow")
    		$acl.setAccessRule($ar)
    		Set-Acl ($path + "" + $row.Cells[2].Value) $acl

			Write-Host "Datenaustauschlaufwerk wurde erfolgreich angelegt"
			}
		}
	}

	}else{Write-host “Error OU doesn’t exist to proceed further, please create one” -foregroundcolor RED}

}

$OUhash1 = @{ }
$Grouphash1 = @{ }
$MBhash1 = @{ }

$form = new-object System.Windows.Forms.form
$form.Text = "Quick User Create Form"
$form.size = new-object System.Drawing.Size(910,520) 

$msTable = New-Object System.Data.DataTable

$msTable.TableName = "GroupName"
$msTable.Columns.Add("FirstName")
$msTable.Columns.Add("LastName")
$msTable.Columns.Add("UserName")
$msTable.Columns.Add("Description")
$msTable.Columns.Add("Postal-Code")
$msTable.Columns.Add("StreetAddress")
$msTable.Columns.Add("Telephone")
$msTable.Columns.Add("Company")

# Add DataGrid View

$dgDataGrid = new-object System.windows.forms.DataGridView
$dgDataGrid.Location = new-object System.Drawing.Size(10,10)
$dgDataGrid.size = new-object System.Drawing.Size(870,200)
$dgDataGrid.AutoSizeRowsMode = "AllHeaders"
$form.Controls.Add($dgDataGrid)

$dgDataGrid.DataSource = $msTable

# Add OU Drop Down
$ouOuNameDrop = new-object System.Windows.Forms.ComboBox
$ouOuNameDrop.Location = new-object System.Drawing.Size(100,260)
$ouOuNameDrop.Size = new-object System.Drawing.Size(230,30)
$ouOuNameDrop.Items.Add("/Users")
$OUhash1.Add("/Users","Users")
$root = [ADSI]''
$searcher = new-object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = '(objectClass=organizationalUnit)'
$searcher.PropertiesToLoad.Add("canonicalName")
$searcher.PropertiesToLoad.Add("Name")
$searcher1 = $searcher.FindAll()
foreach ($person in $searcher1){
[string]$ent = $person.Properties.canonicalname
$OUhash1.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")),$ent)
$ouOuNameDrop.Items.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")))
}
$form.Controls.Add($ouOuNameDrop)

$objListbox = New-Object System.Windows.Forms.Listbox
$objListbox.Location = New-Object System.Drawing.Size(435,220)
$objListbox.Size = New-Object System.Drawing.Size(445,250) 

$objListbox.SelectionMode = "MultiExtended"

$objListbox.Height = 250

$form.Controls.Add($objListbox)

# Add OU DropLable
$ouOuNamelableBox = new-object System.Windows.Forms.Label
$ouOuNamelableBox.Location = new-object System.Drawing.Size(10,260)
$ouOuNamelableBox.size = new-object System.Drawing.Size(100,20)
$ouOuNamelableBox.Text = "OU Name"
$form.Controls.Add($ouOuNamelableBox) 

# Add Group Drop Down
$searcherGroup = new-object System.DirectoryServices.DirectorySearcher($root)
$searcherGroup.Filter = '(objectClass=group)'
$searcherGroup.PropertiesToLoad.Add("canonicalName")
$searcherGroup1 = $searcherGroup.FindAll()
foreach ($person2 in $searcherGroup1){
[string]$ent = $person2.Properties.canonicalname
$Grouphash1.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")),$ent)
$objListbox.Items.Add($ent.substring($ent.indexof("/"),$ent.length-$ent.indexof("/")))
}  

# Add Group DropLable
$snServerNamelableBox = new-object System.Windows.Forms.Label
$snServerNamelableBox.Location = new-object System.Drawing.Size(380,220)
$snServerNamelableBox.size = new-object System.Drawing.Size(100,20)
$snServerNamelableBox.Text = "Groups:"
$form.Controls.Add($snServerNamelableBox) 

# create radiobutton1
$checkbox = New-Object Windows.Forms.checkbox
$checkbox.text = "Datenaustauschlaufwerk anlegen?"
$checkbox.height = 20
$checkbox.width = 200
$checkbox.top = 300
$checkbox.left =10
$form.controls.add($checkbox)

# Add Create Button

$crButton = new-object System.Windows.Forms.Button
$crButton.Location = new-object System.Drawing.Size(10,360)
$crButton.Size = new-object System.Drawing.Size(150,23)
$crButton.Text = "Create User"
$crButton.Add_Click({CreateMailbox})
$form.Controls.Add($crButton)

$form.topmost = $true
$form.Add_Shown({$form.Activate()})
$form.ShowDialog()

2 Kommentare für “Benuteranlage GUI via Powershell”

  1. [...] den Beitrag weiterlesen: Codingstube.de » Benuteranlage GUI via Powershell Bookmarken Sie uns, Danke! Mit Klick auf diese Icons kann man diese Webseite mit anderen Social [...]

    23.09.2010 um 15:00


  2. Welche Werte willst du dir denn anzeigen lassen?

    01.04.2011 um 15:20


Kommentar abgeben


autoroute 2007 europe office word 2010 (64-bit) Corel WordPerfect Office X4 Standard after effects cs3 professional FileMaker Pro 11 Advanced creative suite 5 web premium Kingsoft Office 2009 premiere elements 10 Panic Transmit 4 MAC Acala AVI DivX MPEG XviD VOB to PSP windows vista ultimate with sp2 (32bit) microsoft office visio premium 2010 Native Instruments Guitar Rig 4.7 windows vista business with sp2 windows 8 (32 bit)