deHangman2:
Status: Im Review bei Apple.

deHangman2 basiert auf den bekannten Hangmanspiel!

Ziel des Spieles ist es, die Begriffe zu erraten ohne dabei erhängt zu werden. Man sollte deswegen seine Buchstaben nicht sinnlos wählen, sondern etwas nachdenken und rätseln.
Das Spiel enthält knapp 1000 Wörter und wird mit Updates erweitert.

Neue Features in deHangman2:
Änderungen zum Vorgänger:

    - komplette Grafiken und Code überarbeitet
    – 2 Spieler Modus vorhanden
    – längere Wörter sind nun möglich
    – dynamische Hintergründe
    – Highscore kann an Twitter gesendet werden
    – komplett neue Soundkulisse
    – und noch einiges mehr…

Screenshots:


Wenn dir dieser Artikel gefallen hat, kannst du ihn mit einem Klick auf die folgenden Buttons weiterempfehlen. Möchtest du in Zukunft keine neuen Beiträge mehr verpassen? Dann abonniere doch den RSS Feed dieses Blogs. Vielen Dank!

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()

Wenn dir dieser Artikel gefallen hat, kannst du ihn mit einem Klick auf die folgenden Buttons weiterempfehlen. Möchtest du in Zukunft keine neuen Beiträge mehr verpassen? Dann abonniere doch den RSS Feed dieses Blogs. Vielen Dank!