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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 382998
Url: https://administrator.de/forum/powershell-gui-bestimmten-wert-aus-array-auswaehlen-und-bearbeiten-382998.html
Ausgedruckt am: 10.04.2025 um 12:04 Uhr
1 Kommentar
Hi,
schau mal hier
Remove a String from a Multi-Valued Attribute
Statt "-Replace" nimm "-Remove" und "-Add".
E.
schau mal hier
Remove a String from a Multi-Valued Attribute
Statt "-Replace" nimm "-Remove" und "-Add".
E.