syntax1001
Goto Top

PowerShell GUI bestimmten Wert aus Array auswählen und bearbeiten

Hallo Zusammen,

ich baue derzeit eine PowerShell GUI um bestimmte Attribute eines AD-Users zu verändern.
Mein Problem ist, dass in einem Attribut mehr als ein Eintrag vorhanden ist. Ich lasse mir alle EInträge eines Attributes in einer Listbox ausgeben. Aus dieser Listbox wähle ich nun das gewünschte Attribut aus, um es zu verändern. Wenn ich es nun verändere, werden alle weiteren EInträge gelöscht und es ist nur noch das geänderte Attribut vorhanden.
Meine Frage: Wie kann ich das Attribut verändern OHNE, dass alle weiteren EInträge gelöscht werden ?

Hier der betroffene Teil des Codes:
#### ProxyAddresses Attribut eines Users in ListBox ausgeben ####

$usercombo.Add_SelectedIndexChanged({
    $MailList.Text = (Get-ADUser -Identity $usercombo.SelectedItem -Properties * | Select -ExpandProperty mail | Out-String)
    $ProxyAddresses = Get-ADUser -Identity $usercombo.SelectedItem -Properties * | Select -ExpandProperty ProxyAddresses 

    if($ProxyAddresses.Count -gt 1){
    $ProxyList.Items.Clear()
    $ProxyList.Items.Add($ProxyAddresses.SubString(5)) 
    $ProxyList.Items.Add($ProxyAddresses.SubString(5)[1])
    }
    else{
    $ProxyList.Items.Clear()
    $ProxyAddresses.Count -eq 0
    $ProxyList.Items.Add($ProxyAddresses.SubString(5))
    $ProxyAddresses = $ProxyAddresses | where {$_ -ne "sip:"}  
    }})
})

$usercombo = New-Object System.Windows.Forms.ComboBox
$usercombo.Location = New-Object System.Drawing.Size(35,55)
$usercombo.Size = New-Object System.Drawing.Size(175,175)

$objForm.Controls.Add($usercombo)

####  Button zum ändern des Attributes --> neue Object-Form mit TextBox####

$EditProxy = New-Object System.Windows.Forms.Button
$EditProxy.Location = New-Object System.Drawing.Size(120,450)
$EditProxy.Size = New-Object System.Drawing.Size(120,30)
$EditProxy.Text = "Edit ProxyAddresses"  
$EditProxy.Add_Click(
{
    $EditAddress = New-Object System.Windows.Forms.Form
    $EditAddress.Size = New-Object System.Drawing.Size(300,300)
    $EditAddress.Text = "Ändern Sie das ProxyAddresses Attribut"  
    $EditAddress.StartPosition = "CenterScreen"  

    $EditAddressesBox = New-Object System.Windows.Forms.TextBox
    $EditAddressesBox.Size = New-Object System.Drawing.Size(175,175)
    $EditAddressesBox.Location = New-Object System.Drawing.Size(25,50)
    $EditAddressesBox.Text = $ProxyList.SelectedItem 
    $EditAddress.Controls.Add($EditAddressesBox)

    $EditAddressesButton = New-Object System.Windows.Forms.Button
    $EditAddressesButton.Size = New-Object System.Drawing.Size(120,20)
    $EditAddressesButton.Location = New-Object System.Drawing.Size(25,100)
    $EditAddressesButton.Text = "Edit ProxyAddresses"  
    $EditAddressesButton.Add_Click(
    {
        Set-ADUser -Identity $usercombo.SelectedItem -Replace @{ProxyAddresses=$EditAddressesBox.Text}
        [System.Windows.Forms.MessageBox]::Show("Das Attribut wurde erfolgreich geändert")  
        $EditAddress.Close()

    })
    $EditAddress.Controls.Add($EditAddressesButton)

    $EditAddress.ShowDialog()
})

$objForm.Controls.Add($EditProxy)

In dem Abscnitt des $EditAddressesButton gibt es den Befehl Set-ADUser. Nach dem Replace Parameter will ich mit $EditAddressesBox.Text NUR den ausgewählten AEintrag des Attributes ändern. Und hier ist das Problem...Es werden ALLE Einträge überschrieben, anstatt der ausgewählte Eintrag.

Vielleicht sitze ich schon zu lange daran und ich übersehe einen einfachen Fehler ?

LG

rOMOP11

Content-Key: 382998

Url: https://administrator.de/contentid/382998

Printed on: April 24, 2024 at 01:04 o'clock

Member: emeriks
Solution emeriks Aug 10, 2018 at 12:19:27 (UTC)
Goto Top
Hi,
schau mal hier

Remove a String from a Multi-Valued Attribute

Statt "-Replace" nimm "-Remove" und "-Add".

E.