Hallo zusammen,
ich entwickel gerade ein Tool das Verwaltungsaufgaben für uns Admins einfacher machen soll. Dazu gibt es ein Feld namens "tbUserDetail", in den Der username oder Samaccountname eingetragen wird. Der Canvas-Block ist mein Versuch aus einem Anderen Skript, welches ich gefunden hatte, die Logik zu adaptieren.
[xml]$xaml = @"<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Title="Toolbox" Height="500" Width="850" SizeToContent="Manual"><Grid><Grid.RowDefinitions><RowDefinition Height="0.1*"/><RowDefinition Height="0.8*"/><RowDefinition Height="0.1*"/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><ListBox Name="tbMain" Margin="10,124,240,10" RenderTransformOrigin="0,1" MinWidth="500" MinHeight="300"><ListBoxItem></ListBoxItem></ListBox><Button Name="btnLager" Content="Lager" Margin="0,125,37,0" VerticalAlignment="Top" Height="40" HorizontalAlignment="Right" Width="125"/><Button Name="btnUnbekannt" Content="Unbekannte" Margin="0,203,37,0" VerticalAlignment="Top" Height="40" HorizontalAlignment="Right" Width="125"/><Button Name="btnUserPc" Content="User Oder PC" Margin="0,292,37,0" VerticalAlignment="Top" Height="40" HorizontalAlignment="Right" Width="125"/><Button Name="btnUserDetail" Content="User Komplett" Margin="0,390,37,0" VerticalAlignment="Top" Height="40" Width="126" HorizontalAlignment="Right"/><TextBox Name="tbUserPc" Margin="0,270,37,0" Text="" TextWrapping="Wrap" VerticalAlignment="Top" HorizontalAlignment="Right" Width="125" Height="18"/><TextBox Name="tbUserDetail" Margin="0,367,36,0" Text="" TextWrapping="Wrap" VerticalAlignment="Top" Width="126" HorizontalAlignment="Right" Height="18"/><Canvas VerticalAlignment="Stretch" HorizontalAlignment="Stretch" ><Border Name="searchUserListBorder" BorderBrush="#f3f3f3" Margin="0,0,0,0" Visibility="Collapsed" BorderThickness="1" MinWidth="420"><ListBox Foreground="Black" MaxHeight="150" Name="searchUserList" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="-1,0" DisplayMemberPath="{Binding}"><ListBox.ItemTemplate><DataTemplate><TextBlock Text="{Binding ItemData}" TextWrapping="Wrap" FontWeight="Normal" /></DataTemplate></ListBox.ItemTemplate></ListBox></Border></Canvas><TextBox HorizontalAlignment="Left" Margin="112,104,0,0" Text="" TextWrapping="Wrap" Width="120" Height="18" VerticalAlignment="Top"/><Button Name="btnSuchen" Content="Suchen" HorizontalAlignment="Left" Margin="242,103,0,0" VerticalAlignment="Top"/><Button Name="btnWeitersuchen" Content="Weitersuchen" HorizontalAlignment="Left" Margin="293,103,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.177,-0.449" VerticalContentAlignment="Top" HorizontalContentAlignment="Left"/></Grid></Window>"@ #Read the form $Reader = (New-Object System.Xml.XmlNodeReader $xaml) $Form = [Windows.Markup.XamlReader]::Load($reader) #AutoFind all controls $xaml.SelectNodes("//*[@*[contains(translate(name(.),'n','N'),'Name')]]") | ForEach-Object { New-Variable -Name $_.Name -Value $Form.FindName($_.Name) -Force } $ $tbUserDetail.Add_TextChanged({ $searchUserList.Items.Clear() #Check for a non-empty list selection if($selectionChangedSatus -eq $false -and $selectionChangedSatus -ne $null -and $tbUserDetail.Text -ne ''){ $QryAllCmd = Get-AdUser -Filter "SamAccountName -like '*$($tbUserDetail.Text)*' -or Name -like '*$($tbUserDetail.Text)*'" -Properties SamAccountName, Name | Select-Object SamAccountName, Name #If user exist in Active Directory then show $WPFsearchUserListBorder and populate $searchUserList if($QryAllCmd -ne $null){ #Add Items to Live Search List $searchUserList.Dispatcher.Invoke("Background",[action]{ $QryAllCmd | % {$searchUserList.Items.Add([PSCustomObject]@{'ItemData' = "$($_.Name)"})} }) $searchUserListBorder.Visibility = "Visible" }else{ $searchUserListBorder.Visibility = "hidden" $searchUserList.Items.Add([PSCustomObject]@{'ItemData' = "Your search - '$($tbUserDetail.Text)' - did not match any documents."}) } }elseif($tbUserDetail.Text -eq ''){ $searchUserListBorder.Visibility = "hidden" }else{ #Set $selectionChangedSatus to false when TextChanged occur from SelectionChanged $selectionChangedSatus = $false } }) [void]$Form.ShowDialog()
allerdings wird mir das Fenster/Auswahlmenü nie angezeigt, was mache ich dabei Falsch?
Es existieren auch anderen Funktionen für die anderen Buttons, sind aber meiner Meinung nach nicht relevant für diese Funktion.