Jump to content

JensGoro

Members
  • Gesamte Inhalte

    3
  • Registriert seit

  • Letzter Besuch

Beiträge erstellt von JensGoro

  1. vor 11 Stunden schrieb MurdocX:

    Hallo JensGoro,

     

    willkommen an/im Board.

     

    $objListBox wurde vorher nicht definiert. Es existiert also nicht.

     

    Das ist der Grund warum das Object oben nicht existiert, denn es kommt erst ab Zeile 53, aufgerufen wird es schon in Zeile 28. Das funktioniert so nicht. Das muss < Zeile 27.

     

    • Vermeide Abkürzungen, wie z.B. "sort". Es sollte heißen Sort-Object. Das macht den Code lesbarer und weniger fehleranfällig.
    • $switch - ist eine Iterationsvariable, die Powershell ohne wenn und aber überschreiben kann. Verwende einen treffenderen Namen.
    • $printername - ist eine Variable die gesetzt, aber nie definiert wird. Sie ist also immer $null. Sie überschreibt sogar immer das Attribute extensionAttribute13 im AD.
    • $x - ist eine Variable die zwar in der Zeile 36 definiert, aber nie genutzt wird. Alles was also in der ListBox ausgewählt wird, geht ins Nirvana. Das übrigens 2x.

    Das Skript sollte dringend überarbeitet werden. :-) 

     

    Vielen lieben dank erst einmal an alle, es ist korrekt, dass das Script nicht von mir stammt, ich habe es auch nur übernommen und habe nur eingeschränkt erfahrung mit Scripten.

    Könnte mir jemand den Code ggf. überarbeiten? Ich weiß, es klingt frech, aber ich bin etwas hilflos :(

  2. 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? :)

×
×
  • Neu erstellen...