Hi zusammen,
wir haben ein Script zum auswählen eines Standard Drucker, welches leider mittlerweile einen Fehler auswirft.
Fehler:
<#
Automatisierung Export. Werte aus der Active
Directory in die config_file exportieren.
Syntax config_file [username];[printername]
#>
### Parameter ###
$config_file = "\\SERVER\NETLOGON\default_printers\default_printer.txt"
$config_file_temp = "\\SERVER\NETLOGON\default_printers\default_printer_temp.txt"
$ADAttribut = "extensionAttribute13"
### Code ###
import-module ActiveDirectory
$t = ';'
$Users = get-aduser -Filter *
foreach($User in $Users)
{
$attribut = Get-ADUser $User.SamAccountName -Properties * | select -Property $ADAttribut
$username = $User.SamAccountName
$parameter = $username + $t + $attribut
$parameter = $parameter.TrimEnd('}')
$parameter = $parameter -replace ‘@{extensionAttribute13=’,''
If(!$parameter.Split(";")[1]) {
$parameter = ""
} else {
$parameter | Out-File -FilePath $config_file_temp -Append
}
}
Copy-Item $config_file_temp $config_file
Remove-Item $config_file_temp
Exit
Anbei der Code:
<#
GUI für die Automatisierung des Standarddruckers
#>
### Parameter ###
$printer_list_file = "\\SERVER\NETLOGON\default_printers\printers.txt"
$dir = "\\SERVER\NETLOGON\default_printers\"
### LOAD ###
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[void] [System.Reflection.Assembly]::LoadWithPartialName("System.Drawing")
import-module ActiveDirectory
$printers = Get-Content -Path $printer_list_file -Encoding UTF8
### CODE ###
#-------------------------------------------------------------------------------------------
# Fenster 1
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Standarddrucker setzten"
$objForm.Size = New-Object System.Drawing.Size(300,600)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objListBox.SelectedItem;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(60,540)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$username=$objListBox.SelectedItem;$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,540)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Abbrechen"
$CancelButton.Add_Click({$objForm.Close()
$username = ""})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Bitte einen Benutzer auswählen:"
$objForm.Controls.Add($objLabel)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Location = New-Object System.Drawing.Size(10,40)
$objListBox.Size = New-Object System.Drawing.Size(260,20)
$objListBox.Height = 480
# Fenster 1 CODE
$Users = get-aduser -Filter *
foreach($User in ($Users|sort))
{
$username_blank = $User.Name
$username_logon = $User.SamAccountName
[void] $objListBox.Items.Add($username_blank + " " +"(" + $username_logon + ")")
}
$objForm.Controls.Add($objListBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
#-------------------------------------------------------------------------------------------
# Fenster 2
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Standarddrucker setzten"
$objForm.Size = New-Object System.Drawing.Size(300,600)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objListBox.SelectedItem;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(60,540)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$printername=$objListBox.SelectedItem;$objForm.Close()})
$objForm.Controls.Add($OKButton)
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(150,540)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Abbrechen"
$CancelButton.Add_Click({$objForm.Close()
$printername = ""})
$objForm.Controls.Add($CancelButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,20)
$objLabel.Text = "Bitte einen Drucker auswählen:"
$objForm.Controls.Add($objLabel)
$objListBox = New-Object System.Windows.Forms.ListBox
$objListBox.Location = New-Object System.Drawing.Size(10,40)
$objListBox.Size = New-Object System.Drawing.Size(260,20)
$objListBox.Height = 480
# Fenster 2 CODE
[void] $objListBox.Items.Add("< Löschen >")
$Users = get-aduser -Filter *
foreach($printer in ($printers|sort))
{
[void] $objListBox.Items.Add($printer)
}
$objForm.Controls.Add($objListBox)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
#-------------------------------------------------------------------------------------------
# CODE
$username = $username.TrimEnd(')')
$username_blank = $username.Split("(")[0]
$username_blank = $username_blank.Trim()
$username = $username.Split("(")[1]
If($username -and $printername) {
$switch = 1
}
If($printername -eq "< Löschen >") {
$switch = 2
}
If(!$username -or !$printername) {
$switch = 3
}
switch ($switch) {
1 { Set-ADUser $username –replace @{extensionAttribute13=$printername}
$dir = $dir + "default_printer_Export.ps1"
& $dir
$ausgabe = "Der Standardrucker des Benutzers $username_blank wurde auf den Drucker `"$printername`" geändert."
}
2 { Set-ADUser $username –replace @{extensionAttribute13="0"}
Set-ADUser $username –remove @{extensionAttribute13="0"}
$dir = $dir + "default_printer_Export.ps1"
& $dir
$ausgabe = "Der Standardrucker des Benutzers $username_blank wurde gelöscht."
}
3 { $ausgabe = "Kein Wert angegeben"
}
default { $ausgabe = "Fehler" }
}
#-------------------------------------------------------------------------------------------
# Fenster 3
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = "Standarddrucker setzten"
$objForm.Size = New-Object System.Drawing.Size(300,160)
$objForm.StartPosition = "CenterScreen"
$objForm.KeyPreview = $True
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Enter")
{$x=$objListBox.SelectedItem;$objForm.Close()}})
$objForm.Add_KeyDown({if ($_.KeyCode -eq "Escape")
{$objForm.Close()}})
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(108,100)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.Add_Click({$objForm.Close()})
$objForm.Controls.Add($OKButton)
$objLabel = New-Object System.Windows.Forms.Label
$objLabel.Location = New-Object System.Drawing.Size(10,20)
$objLabel.Size = New-Object System.Drawing.Size(280,60)
$objLabel.Text = $ausgabe
$objForm.Controls.Add($objLabel)
$objForm.Topmost = $True
$objForm.Add_Shown({$objForm.Activate()})
[void] $objForm.ShowDialog()
Exit
Kann mir jemand helfen, den Fehler zu fixen? :)