Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $ProgressPreference = 'SilentlyContinue'
- $Version = "6.8"
- # Load Icon
- # Convert base64 string to bytes
- $base64Icon = "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"
- # Convert base64 string to byte array
- $imageBytes = [Convert]::FromBase64String($base64Icon)
- # Create a temporary file path with .png extension
- $tempFilePath = [System.IO.Path]::Combine([System.IO.Path]::GetTempPath(), [System.IO.Path]::GetRandomFileName() + ".png")
- # Write the image bytes to the temporary PNG file
- [System.IO.File]::WriteAllBytes($tempFilePath, $imageBytes)
- $domainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext("Domain", $env:USERDNSDOMAIN)
- $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($domainContext)
- $PDC = ($domain.PdcRoleOwner).Name
- if (!(Test-NetConnection -ComputerName $PDC)) {
- $ErrorXML = @'
- <Window
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:Error"
- mc:Ignorable="d"
- ResizeMode="NoResize"
- Title="Error" Height="150" Width="400"
- <Grid>
- <Button x:Name="exitUI" Content="Exit" HorizontalAlignment="center" Margin="10" VerticalAlignment="Bottom" Height="30" Width="80"/>
- <TextBlock Text="Es konnte keine Verbindung zum Druckserver hergestellt werden, bitte mit VPN verbinden." TextWrapping="Wrap" VerticalAlignment="Top" Foreground="red" FontSize="16" FontWeight="Bold" Margin="10" />
- </Grid>
- </Window>
- '@
- $ErrorXML = $ErrorXML -replace 'mc:Ignorable="d"', '' -replace 'x:N', 'N' -replace '^<Win.*', '<Window'
- [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
- [xml]$ErrorXAML = $ErrorXML
- #Read XAML
- $ErrorReader = (New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $ErrorXAML)
- try
- {
- $ErrorForm = [Windows.Markup.XamlReader]::Load( $ErrorReader )
- }
- catch
- {
- Write-Host -Object 'Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed.'
- }
- #===========================================================================
- # Store Form Objects In PowerShell
- #===========================================================================
- $ErrorXAML.SelectNodes('//*[@Name]') | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $ErrorForm.FindName($_.Name)
- }
- $ErrorForm.WindowStartupLocation = [Windows.WindowStartupLocation]::CenterScreen
- #Load Icon
- $ErrorForm.Icon = $tempFilePath
- #===========================================================================
- # Add events to Form Objects
- #===========================================================================
- $exitUI.Add_Click({
- $ErrorForm.DialogResult = $false
- Exit
- })
- $ErrorFormEnd = $ErrorForm.ShowDialog() #| Out-Null
- }
- #===========================================================================
- # Add events to Form Objects
- #===========================================================================
- # Start Loading Xaml
- $LoadingXaml = @'
- <Window
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
- MinWidth="200"
- Width ="550"
- ResizeMode="NoResize"
- Title="Druckerauswahl"
- Topmost="True" Height="140">
- <Grid>
- <Label Content="Verfügbare Drucker werden ermittelt, bitte haben Sie etwas Geduld..." HorizontalAlignment="Left" Margin="20,3,0,0" VerticalAlignment="Top" FontSize="16"/>
- <ProgressBar Height="20" Margin="20,54,20,0" VerticalAlignment="Top" Minimum="0" Maximum="100" Value="0" Name="pbStatusTotal"/>
- <TextBlock Text="{Binding ElementName=pbStatusTotal, Path=Value, StringFormat={}{0:0}%}" HorizontalAlignment="Center" Margin="20,36,20,0" />
- </Grid>
- </Window>
- '@
- #endregion
- #region Code Behind
- function Convert-XAMLtoWindow {
- param
- (
- [Parameter(Mandatory=$true)]
- [string]
- $LoadingXaml
- )
- Add-Type -AssemblyName PresentationFramework
- $reader = [XML.XMLReader]::Create([IO.StringReader]$LoadingXaml)
- $result = [Windows.Markup.XAMLReader]::Load($reader)
- $reader.Close()
- $reader = [XML.XMLReader]::Create([IO.StringReader]$LoadingXaml)
- while ($reader.Read())
- {
- $name=$reader.GetAttribute('Name')
- if (!$name) { $name=$reader.GetAttribute('x:Name') }
- if($name)
- {$result | Add-Member NoteProperty -Name $name -Value $result.FindName($name) -Force}
- }
- $reader.Close()
- $result
- }
- function Show-WPFWindow {
- param
- (
- [Parameter(Mandatory=$true)]
- [Windows.Window]
- $Window
- )
- $result = $null
- $null = $window.Dispatcher.InvokeAsync{
- $result = $window.ShowDialog()
- Set-Variable -Name result -Value $result -Scope 1
- }.Wait()
- $result
- }
- #endregion Code Behind
- #region Convert XAML to Window
- $loadingwindow = Convert-XAMLtoWindow -LoadingXaml $LoadingXaml
- $loadingwindow.WindowStartupLocation = [Windows.WindowStartupLocation]::CenterScreen
- #endregion
- #region Manipulate Window Content
- $pbStatusTotal = $loadingwindow.FindName('pbStatusTotal')
- $pbStatusTotal.Value = 0
- #endregion
- #Load Icon
- $loadingwindow.Icon = $tempFilePath
- $syncHash = [hashtable]::Synchronized(@{})
- $syncHash.pbValue = 0
- $newRunspace = [runspacefactory]::CreateRunspace()
- $newRunspace.ApartmentState = "STA"
- $newRunspace.ThreadOptions = "ReuseThread"
- $newRunspace.Open()
- $newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
- $newPowershell = [powershell]::Create()
- $syncHash.Printers = @()
- $syncHash.localobjResult = @()
- $newPowershell.AddScript({
- $domainContext = New-Object System.DirectoryServices.ActiveDirectory.DirectoryContext("Domain", $env:USERDNSDOMAIN)
- $domain = [System.DirectoryServices.ActiveDirectory.Domain]::GetDomain($domainContext)
- $PDC = ($domain.PdcRoleOwner).Name
- $SearchString = "LDAP://"
- $SearchString += $PDC + "/"
- $DistinguishedName = "DC=$($domain.name.Replace('.', ',DC='))"
- $SearchString += $DistinguishedName
- $Searcher = New-Object System.DirectoryServices.DirectorySearcher([ADSI]$SearchString)
- $Searcher.Filter = '(&(objectCategory=printqueue)(description=*\*))'
- $Searcher.PropertiesToLoad.Add("ServerName") | Out-Null
- $Searcher.PropertiesToLoad.Add("location") | Out-Null
- $Searcher.PropertiesToLoad.Add("Name") | Out-Null
- $Searcher.PropertiesToLoad.Add("Description") | Out-Null
- $Searcher.PropertiesToLoad.Add("uNCName") | Out-Null
- $results = $Searcher.FindAll()
- #Installed Printer
- $localprinters = Get-Printer
- $Defaultprinter = (Get-WmiObject -Class win32_printer | Where-Object -FilterScript { $_.Default -eq $True }).name
- $totalentries = $results.Count + $localprinters.count
- $processedentries = 0
- $objTemplate = '' | Select-Object -Property Company, Group, Model, location, servername, uncname
- $objResult = @()
- foreach ($result in $results){
- $objTemp = $objTemplate | Select-Object *
- $processedentries++
- $objTemp.Company = $result.Properties.description.split('\')[0]
- $objTemp.Group = if ($result.Properties.description -match '^[^\\]+\\[^\\]+\\'){$result.Properties.description.split('\')[1]}
- $objTemp.Model = $result.Properties.description.split('\')[2]
- $objTemp.Location = $result.Properties.location
- $objTemp.servername = $result.Properties.servername
- $objTemp.uncname = $result.Properties.uncname
- $objResult += $objTemp
- # Update progress
- $syncHash.pbValue = ($processedentries / $totalentries) * 100
- }
- $syncHash.Printers = $objResult
- $localobjTemplate = '' | Select-Object -Property Type, Name, Comment, Location, Default
- $localobjResult = @()
- $EmojiNetwork = "🌍"
- $EmojiFollow = [System.Convert]::toInt32("1F463",16)
- $EmojiLocal = [System.Convert]::toInt32("1F4C2",16)
- foreach ($localresult in $localprinters){
- $localobjTemp = $localobjTemplate | Select-Object *
- $processedentries++
- $localobjTemp.Default = if ($localresult.name -match [regex]::Escape($Defaultprinter)) { $True } Else {$False}
- $localobjTemp.Type = if ($localresult.Type -eq 'Local'){[System.Char]::ConvertFromUtf32($EmojiLocal)+$localresult.Type}Elseif($localresult.Type -eq 'Connection' -and ($localresult.ComputerName -eq 'konicaprint01p' -or $localresult.Name -match 'Canon-Secure-Print')){[System.Char]::ConvertFromUtf32($EmojiFollow)+"FollowMe"}Else{$EmojiNetwork+"Netz"}
- $localobjTemp.Name = $localresult.Name
- $localobjTemp.Comment = $localresult.Comment.split('\')[2]
- $localobjTemp.Location = $localresult.location
- $localobjResult += $localobjTemp
- $syncHash.pbValue = ($processedentries / $totalentries) * 100
- }
- $syncHash.localobjResult = $localobjResult
- }) | out-null
- # create dispatcher timer on window
- $loadingwindow.add_SourceInitialized({
- $timer = New-Object System.Windows.Threading.DispatcherTimer
- $timer.Interval = [Timespan]'0:0:0.10'
- # timer action update progressbar value
- $timer.Add_Tick({
- $pbStatusTotal.Value = $syncHash.pbValue
- # Check if progress reached 100%
- if ($syncHash.pbValue -ge 100) {
- $loadingwindow.Close()
- }
- })
- $timer.Start()
- })
- # assign runspace and start script
- $newPowershell.Runspace = $newRunspace
- $handle = $newPowershell.BeginInvoke()
- # Show Window
- $result = Show-WPFWindow -Window $loadingwindow
- # Wait for PowerShell job to complete
- $newPowershell.EndInvoke($handle)
- $printers = $syncHash.Printers
- $localobjResult = $syncHash.localobjResult
- #==============================================================================================
- # XAML Code
- #==============================================================================================
- $inputXML = @'
- <Window
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:Druckerauswahl"
- mc:Ignorable="d"
- ResizeMode="NoResize"
- Title="" Height="750" Width="1100" Background="#F0F0F0">
- <Grid Margin="0,0,-0.2,0.2">
- <TextBox HorizontalAlignment="Left" Text="Firma" BorderThickness="0" Width="60" Margin="5,5,0,0" Height="23" TextWrapping="Wrap" IsReadOnly="True" VerticalAlignment="Top" TextAlignment="Center" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0" />
- <TextBox HorizontalAlignment="Left" Text="Hinweis:" BorderThickness="0" Width="60" Margin="294,5,0,0" Height="23" TextWrapping="Wrap" IsReadOnly="True" VerticalAlignment="Top" TextAlignment="Left" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <TextBox HorizontalAlignment="Left" Height="23" BorderThickness="0" TextWrapping="Wrap" IsReadOnly="True" Text="Neue Netzwerkdrucker:" VerticalAlignment="Top" Width="610" Margin="10,110,0,0" TextAlignment="Left" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <TextBox HorizontalAlignment="Left" Height="23" BorderThickness="0" TextWrapping="Wrap" IsReadOnly="True" Text="Installierte Drucker (Standarddrucker ist der grün Markierte):" VerticalAlignment="Top" Width="610" Margin="10,365,0,0" TextAlignment="Left" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <TextBox x:Name="hint" HorizontalAlignment="Left" Height="50" BorderThickness="0" TextWrapping="Wrap" IsReadOnly="True" Text="" VerticalAlignment="Top" Width="450" Margin="294,30,0,0" TextAlignment="Left" Foreground="blue" Background="#F0F0F0" FontWeight="Bold" BorderBrush="#F0F0F0"/>
- <Button x:Name="addprinter" Content="Drucker hinzufügen" HorizontalAlignment="Left" Margin="850,133,0,0" VerticalAlignment="Top" Height="30" Foreground="#000000" Width="200"/>
- <TextBox HorizontalAlignment="Left" Text="Hinweis:" BorderThickness="0" Width="60" Margin="850,170,0,0" Height="23" TextWrapping="Wrap" IsReadOnly="True" VerticalAlignment="Top" TextAlignment="Left" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <TextBox HorizontalAlignment="Left" Height="40" BorderThickness="0" TextWrapping="Wrap" IsReadOnly="True" Text="Während dieser Aktion ist die Benutzeroberfläche nicht bedienbar." VerticalAlignment="Top" Width="200" Margin="850,190,0,0" TextAlignment="Left" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <TextBox Height="38" BorderThickness="0" IsReadOnly="True" FontSize="32" Text="POCSO" FontFamily="Futura Lt BT" Width="115" Margin="900,622,0,0" TextAlignment="Left" Foreground="#E9E9E9" Background="#C0C0C0" BorderBrush="#C0C0C0" HorizontalAlignment="Left" VerticalAlignment="Top" />
- <TextBox x:Name="ver" HorizontalAlignment="Left" Text="" BorderThickness="0" Width="150" Margin="898,662,0,0" Height="40" TextWrapping="Wrap" IsReadOnly="True" VerticalAlignment="Top" TextAlignment="Left" Foreground="#000000" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <TextBox x:Name="doing" HorizontalAlignment="Left" Height="23" BorderThickness="0" TextWrapping="Wrap" IsReadOnly="True" Text="" VerticalAlignment="Top" Width="300" Margin="425,636,0,0" TextAlignment="Left" Foreground="blue" FontWeight="Bold" Background="#F0F0F0" BorderBrush="#F0F0F0"/>
- <Button x:Name="setasdefault" Content="Als Standard definieren" HorizontalAlignment="Left" Margin="10,630,0,0" VerticalAlignment="Top" Height="30" Foreground="#000000" Width="200"/>
- <Button x:Name="deleteprinter" Content="Drucker löschen" HorizontalAlignment="Left" Margin="215,630,0,0" VerticalAlignment="Top" Height="30" Foreground="#000000" Width="200"/>
- <Button x:Name="exit" Content="Exit" HorizontalAlignment="Left" Margin="740,630,0,0" VerticalAlignment="Top" Height="30" Foreground="#000000" Width="80"/>
- <StackPanel>
- <ListBox x:Name="mainListBox" Height="100" Width="100" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="70,5,0,0">
- <ListBox.ItemTemplate>
- <DataTemplate>
- <TextBlock Text="{Binding Name}"/>
- </DataTemplate>
- </ListBox.ItemTemplate>
- </ListBox>
- <ListView x:Name="listView" HorizontalAlignment="Left" Height="208" Margin="10,28,0,0" VerticalAlignment="top" Width="810">
- <ListView.View>
- <GridView>
- <GridViewColumn Header="Druckerstandort" DisplayMemberBinding="{Binding Druckerstandort}" Width="300"/>
- <GridViewColumn Header="Beschreibung" DisplayMemberBinding="{Binding Beschreibung}" Width="200"/>
- <GridViewColumn Header="Share" DisplayMemberBinding="{Binding Share}" Width="380"/>
- </GridView>
- </ListView.View>
- </ListView>
- <ListView x:Name="secondlistView" HorizontalAlignment="Left" Height="232" Margin="10,48,0,0" VerticalAlignment="top" Width="810">
- <ListView.View>
- <GridView>
- <GridViewColumn Header="Art" DisplayMemberBinding="{Binding Art}" />
- <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
- <GridViewColumn Header="Beschreibung" DisplayMemberBinding="{Binding Beschreibung}" />
- <GridViewColumn Header="Druckerstandort" DisplayMemberBinding="{Binding Druckerstandort}" />
- </GridView>
- </ListView.View>
- </ListView>
- </StackPanel>
- </Grid>
- </Window>
- '@
- $inputXML = $inputXML -replace 'mc:Ignorable="d"', '' -replace 'x:N', 'N' -replace '^<Win.*', '<Window'
- [void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework')
- [xml]$XAML = $inputXML
- #Read XAML
- $reader = (New-Object -TypeName System.Xml.XmlNodeReader -ArgumentList $XAML)
- try
- {
- $Form = [Windows.Markup.XamlReader]::Load( $reader )
- }
- catch
- {
- Write-Host -Object 'Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed.'
- }
- #===========================================================================
- # Store Form Objects In PowerShell
- #===========================================================================
- $XAML.SelectNodes('//*[@Name]') | ForEach-Object -Process {
- Set-Variable -Name ($_.Name) -Value $Form.FindName($_.Name)
- }
- #Load Icon
- $Form.Icon = $tempFilePath
- $exit.Add_Click({
- $Form.DialogResult = $false
- Exit
- })
- $defaulthintText = "Wählen Sie den gewünschten Drucker aus (Liste nach Ort sortiert)`nÜber die Schaltfläche können sie hinzugefügt werden."
- $addprinterhintText = "Drucker wird hinzugefügt, bitte warten..."
- $addmultipleprinterhintText = "Drucker werden hinzugefügt, bitte warten..."
- $defaultaddprinterText = "Drucker wurde hinzugefügt..."
- $multipleaddprinterText = "Drucker wurden hinzugefügt..."
- $defaultprinterchangedText = "Standard Drucker wurde geändert..."
- $defaultprinterdeleteText = "Drucker wurde entfernt..."
- $versionText = "Ver. $Version`n© Porsche Informatik"
- $ver.Text = $versionText
- $hint.Text = $defaulthintText
- function AddPrinter_Click {
- $selectedPrinters = $Form.FindName("listView").SelectedItems
- $syncHash = [hashtable]::Synchronized(@{})
- $newRunspace = [runspacefactory]::CreateRunspace()
- $newRunspace.ApartmentState = "STA"
- $newRunspace.ThreadOptions = "ReuseThread"
- $newRunspace.Open()
- $newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
- $newRunspace.SessionStateProxy.SetVariable("selectedPrinters",$selectedPrinters)
- $newPowershell = [powershell]::Create()
- $syncHash.localobjResult = @()
- $newPowershell.AddScript({
- if ($selectedPrinters -ne $null) {
- foreach ($selectedprinter in $selectedPrinters) {
- if(!(Get-Printer -Name $selectedPrinter.Share -ErrorAction SilentlyContinue)){
- Add-Printer -ConnectionName $selectedPrinter.Share
- }
- }
- }
- $processedentries = 0
- $localprinters = Get-Printer
- $Defaultprinter = (Get-WmiObject -Class win32_printer | Where-Object -FilterScript { $_.Default -eq $True }).name
- $localobjTemplate = '' | Select-Object -Property Type, Name, Comment, Location, Default
- $localobjResult = @()
- $EmojiNetwork = "🌍"
- $EmojiFollow = [System.Convert]::toInt32("1F463",16)
- $EmojiLocal = [System.Convert]::toInt32("1F4C2",16)
- foreach ($localresult in $localprinters){
- $localobjTemp = $localobjTemplate | Select-Object *
- $localobjTemp.Default = if ($localresult.name -match [regex]::Escape($Defaultprinter)) { $True } Else {$False}
- $localobjTemp.Type = if ($localresult.Type -eq 'Local'){[System.Char]::ConvertFromUtf32($EmojiLocal)+$localresult.Type}Elseif($localresult.Type -eq 'Connection' -and ($localresult.ComputerName -eq 'konicaprint01p' -or $localresult.Name -match 'Canon-Secure-Print')){[System.Char]::ConvertFromUtf32($EmojiFollow)+"FollowMe"}Else{$EmojiNetwork+"Netz"}
- $localobjTemp.Name = $localresult.Name
- $localobjTemp.Comment = $localresult.Comment.split('\')[2]
- $localobjTemp.Location = $localresult.location
- $localobjResult += $localobjTemp
- }
- $syncHash.localobjResult = $localobjResult
- }) | out-null
- # assign runspace and start script
- $newPowershell.Runspace = $newRunspace
- $handle = $newPowershell.BeginInvoke()
- # Wait for PowerShell job to complete
- $newPowershell.EndInvoke($handle)
- $localobjResult = $syncHash.localobjResult
- #Refresh UI
- $selectedPrinters = $Form.FindName("listView").SelectedItems
- $Collection = $Form.FindName("secondlistView")
- $Collection.Foreground = 'black'
- [Array]$output = $localobjResult | Select-Object -Property @{Name='Art';Expression={$_.Type}},@{Name='Name';Expression={$_.Name}}, @{Name='Beschreibung';Expression={$_.Comment}},@{Name='Druckerstandort';Expression={$_.location}},@{Name='Default';Expression={$_.Default}}| Sort-Object Druckerstandort
- $Collection.ItemsSource = $output
- $ListViewItemStyleXAML = @"
- <Style TargetType="ListViewItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
- <Setter Property="Background" Value="White" />
- <Style.Triggers>
- <DataTrigger Binding="{Binding Default}" Value="true">
- <Setter Property="Background" Value="#D0F6CA" />
- </DataTrigger>
- </Style.Triggers>
- </Style>
- "@
- # Parse the XAML definition using PowerShell XML parsing
- $ListViewItemStyle = [Windows.Markup.XamlReader]::Parse($ListViewItemStyleXAML)
- # Apply the created Style to the ItemContainerStyle property of the ListView
- $Collection.ItemContainerStyle = $ListViewItemStyle
- $Collection.Items.Refresh()
- $doing.Text = if ($selectedPrinters.count -gt '1'){$multipleaddprinterText}Else{$defaultaddprinterText}
- }
- function SetDefault_Click {
- $selectedPrinter = $Form.FindName("secondlistView").SelectedItem
- if ($selectedPrinter -ne $null) {
- $PRINTERTMP = Get-CimInstance -ClassName CIM_Printer | Where-Object Name -eq $selectedPrinter.Name
- $PRINTERTMP | Invoke-CimMethod -MethodName SetDefaultPrinter | out-null
- }
- $localprinters = Get-Printer
- $Defaultprinter = (Get-WmiObject -Class win32_printer | Where-Object -FilterScript { $_.Default -eq $True }).name
- $localobjTemplate = '' | Select-Object -Property Type, Name, Comment, Location, Default
- $localobjResult = @()
- $EmojiNetwork = "🌍"
- $EmojiFollow = [System.Convert]::toInt32("1F463",16)
- $EmojiLocal = [System.Convert]::toInt32("1F4C2",16)
- foreach ($localresult in $localprinters){
- $localobjTemp = $localobjTemplate | Select-Object *
- $localobjTemp.Default = if ($localresult.name -match [regex]::Escape($Defaultprinter)) { $True } Else {$False}
- $localobjTemp.Type = if ($localresult.Type -eq 'Local'){[System.Char]::ConvertFromUtf32($EmojiLocal)+$localresult.Type}Elseif($localresult.Type -eq 'Connection' -and ($localresult.ComputerName -eq 'konicaprint01p' -or $localresult.Name -match 'Canon-Secure-Print')){[System.Char]::ConvertFromUtf32($EmojiFollow)+"FollowMe"}Else{$EmojiNetwork+"Netz"}
- $localobjTemp.Name = $localresult.Name
- $localobjTemp.Comment = $localresult.Comment.split('\')[2]
- $localobjTemp.Location = $localresult.location
- $localobjResult += $localobjTemp
- }
- $Collection = $Form.FindName("secondlistView")
- $Collection.Foreground = 'black'
- [Array]$output = $localobjResult | Select-Object -Property @{Name='Art';Expression={$_.Type}},@{Name='Name';Expression={$_.Name}}, @{Name='Beschreibung';Expression={$_.Comment}},@{Name='Druckerstandort';Expression={$_.location}},@{Name='Default';Expression={$_.Default}}| Sort-Object Druckerstandort
- $Collection.ItemsSource = $output
- # Create the ListViewItem Style using XAML-based definition
- $ListViewItemStyleXAML = @"
- <Style TargetType="ListViewItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
- <Setter Property="Background" Value="White" />
- <Style.Triggers>
- <DataTrigger Binding="{Binding Default}" Value="true">
- <Setter Property="Background" Value="#D0F6CA" />
- </DataTrigger>
- </Style.Triggers>
- </Style>
- "@
- # Parse the XAML definition using PowerShell XML parsing
- $ListViewItemStyle = [Windows.Markup.XamlReader]::Parse($ListViewItemStyleXAML)
- # Apply the created Style to the ItemContainerStyle property of the ListView
- $Collection.ItemContainerStyle = $ListViewItemStyle
- $Collection.Items.Refresh()
- $doing.Text = $defaultprinterchangedText
- }
- function RemovePrinter_Click {
- $selectedPrinters = $Form.FindName("secondlistView").SelectedItems
- if ($selectedPrinters -ne $null) {
- foreach ($selectedprinter in $selectedPrinters) {
- Remove-Printer -Name $selectedPrinter.Name
- }
- }
- $localprinters = Get-Printer
- $Defaultprinter = (Get-WmiObject -Class win32_printer | Where-Object -FilterScript { $_.Default -eq $True }).name
- $localobjTemplate = '' | Select-Object -Property Type, Name, Comment, Location, Default
- $localobjResult = @()
- $EmojiNetwork = "🌍"
- $EmojiFollow = [System.Convert]::toInt32("1F463",16)
- $EmojiLocal = [System.Convert]::toInt32("1F4C2",16)
- foreach ($localresult in $localprinters){
- $localobjTemp = $localobjTemplate | Select-Object *
- $localobjTemp.Default = if ($localresult.name -match [regex]::Escape($Defaultprinter)) { $True } Else {$False}
- $localobjTemp.Type = if ($localresult.Type -eq 'Local'){[System.Char]::ConvertFromUtf32($EmojiLocal)+$localresult.Type}Elseif($localresult.Type -eq 'Connection' -and ($localresult.ComputerName -eq 'konicaprint01p' -or $localresult.Name -match 'Canon-Secure-Print')){[System.Char]::ConvertFromUtf32($EmojiFollow)+"FollowMe"}Else{$EmojiNetwork+"Netz"}
- $localobjTemp.Name = $localresult.Name
- $localobjTemp.Comment = $localresult.Comment.split('\')[2]
- $localobjTemp.Location = $localresult.location
- $localobjResult += $localobjTemp
- }
- $Collection = $Form.FindName("secondlistView")
- $Collection.Foreground = 'black'
- [Array]$output = $localobjResult | Select-Object -Property @{Name='Art';Expression={$_.Type}},@{Name='Name';Expression={$_.Name}}, @{Name='Beschreibung';Expression={$_.Comment}},@{Name='Druckerstandort';Expression={$_.location}},@{Name='Default';Expression={$_.Default}}| Sort-Object Druckerstandort
- $Collection.ItemsSource = $output
- # Create the ListViewItem Style using XAML-based definition
- $ListViewItemStyleXAML = @"
- <Style TargetType="ListViewItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
- <Setter Property="Background" Value="White" />
- <Style.Triggers>
- <DataTrigger Binding="{Binding Default}" Value="true">
- <Setter Property="Background" Value="#D0F6CA" />
- </DataTrigger>
- </Style.Triggers>
- </Style>
- "@
- # Parse the XAML definition using PowerShell XML parsing
- $ListViewItemStyle = [Windows.Markup.XamlReader]::Parse($ListViewItemStyleXAML)
- # Apply the created Style to the ItemContainerStyle property of the ListView
- $Collection.ItemContainerStyle = $ListViewItemStyle
- $Collection.Items.Refresh()
- $doing.Text = $defaultprinterdeleteText
- }
- # Add the event handler for the "addprinter" button click event
- $addprinter.Add_Click({
- AddPrinter_Click
- })
- $setasdefault.Add_Click({
- SetDefault_Click
- })
- $deleteprinter.Add_Click({
- RemovePrinter_Click
- })
- $Form.WindowStartupLocation = [Windows.WindowStartupLocation]::CenterScreen
- # Generate Title Name
- $Form.Title = "Druckerauswahl Ver. $Version"
- $mainlist = $Form.FindName("mainListBox")
- $CompanyTemp = $Printers | Where-Object { $_.Company -ne $null -and $_.Company -ne '' } | Select-Object -Unique Company -ExpandProperty Company | Sort-Object
- foreach ($entry in $CompanyTemp) {
- $itm = new-object System.Windows.Controls.ListboxItem
- $itm.Content = $entry
- $itm.Foreground = 'black'
- $mainlist.Items.Add($itm)
- }
- $Form.FindName("mainListBox").Add_SelectionChanged({
- $Output = $Form.FindName("mainListBox").SelectedItem.Content
- $Collection = $Form.FindName("listView")
- $Collection.Foreground = 'black'
- [Array]$output = $Printers | Where-Object { $_.Company -eq $Output -and $_.Company -ne $null } | Select-Object -Property @{Name='Druckerstandort';Expression={$_.location}}, @{Name='Beschreibung';Expression={$_.Model}}, @{Name='Share';Expression={$_.uncname}} | Sort-Object Druckerstandort
- $Collection.ItemsSource = $output
- })
- $Collection = $Form.FindName("secondlistView")
- $Collection.Foreground = 'black'
- [Array]$output = $localobjResult | Select-Object -Property @{Name='Art';Expression={$_.Type}},@{Name='Name';Expression={$_.Name}}, @{Name='Beschreibung';Expression={$_.Comment}},@{Name='Druckerstandort';Expression={$_.location}},@{Name='Default';Expression={$_.Default}}| Sort-Object Druckerstandort
- $Collection.ItemsSource = $output
- # Create the ListViewItem Style using XAML-based definition
- $ListViewItemStyleXAML = @"
- <Style TargetType="ListViewItem" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
- <Setter Property="Background" Value="White" />
- <Style.Triggers>
- <DataTrigger Binding="{Binding Default}" Value="true">
- <Setter Property="Background" Value="#D0F6CA" />
- </DataTrigger>
- </Style.Triggers>
- </Style>
- "@
- # Parse the XAML definition using PowerShell XML parsing
- $ListViewItemStyle = [Windows.Markup.XamlReader]::Parse($ListViewItemStyleXAML)
- # Apply the created Style to the ItemContainerStyle property of the ListView
- $Collection.ItemContainerStyle = $ListViewItemStyle
- #===========================================================================
- # Shows the form
- #===========================================================================
- $FormEnd = $Form.ShowDialog() #| Out-Null
Add Comment
Please, Sign In to add comment