Quantcast
Channel: Windows PowerShell Forum
Viewing all articles
Browse latest Browse all 2314

Powershell WPF XAML

$
0
0

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.



Viewing all articles
Browse latest Browse all 2314

Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>