Partage
  • Partager sur Facebook
  • Partager sur Twitter

Powershell avec interface graphique XAML/wpf

ps1 xaml wpf

    29 juin 2020 à 20:01:34

    Bonjour,

    J'ai développé un script powershell permettant de récupérer des IPs saisis par l'utilisateur pour ensuite créer un fichier et le compléter avec du texte pré-rédigé et avec les infos récupéré et stocké dans des variables.

    Je cherche à le faire évoluer de sorte à avoir une interface graphique afin d'avoir une vision plus globale des infos à saisir et de n'avoir à valider qu'une fois au lieu de valider à chaque infos demander ( et si possible dans un second temps pré-compléter les passerelles par rapports aux IPs.

    Sauf que lorsque que je tente de l'exécuter je mange des erreurs que je ne comprends malheureusement pas.

    Merci d'avance pour votre aide :)

    Voici mon début de code :

    # Chargement des Librairies
    [Reflection.Assembly]::LoadWithPartialName("PresentationFramework")
    [Reflection.Assembly]::LoadWithPartialName("PresentationCore")
    [Reflection.Assembly]::LoadWithPartialName("WindowsBase")
    
    
    Add-Type -AssemblyName PresentationFramework
    
    $XML = @"
        <Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:Name="Window" Title="GEN ZPL" Height="435" Width="460">
    
        <Grid OpacityMask="#FF444444">
            <Label Content="Paramètre IP WiFi" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,10,0,0" Cursor="None" FontWeight="Bold" FontSize="14"/>
            <Label Content="Adresse IP :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,44,0,0"/>
            <TextBox x:Name="ipwifi" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="10,75,0,0" SelectionOpacity="1"/>
            <Label Content="Masque Réseau :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,103,0,0"/>
            <TextBox x:Name="maskwifi" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="10,134,0,0" Text="255.255.255.0" SelectionOpacity="1"/>
            <Label Content="Passerelle :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,162,0,0"/>
            <TextBox x:Name="gatewifi" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="10,193,0,0" SelectionOpacity="1"/>
    
            <Label Content="Paramètre IP Filaire" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="277,10,0,0" Cursor="None" FontWeight="Bold" FontSize="14" RenderTransformOrigin="-0.863,2.59"/>
            <Label Content="Adresse IP :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="277,44,0,0" RenderTransformOrigin="-0.846,3.964"/>
            <TextBox x:Name="ipfilaire" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="277,75,0,0" SelectionOpacity="1"/>
            <Label Content="Masque Réseau :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="277,103,0,0" RenderTransformOrigin="-0.234,1.468"/>
            <TextBox x:Name="maskfilaire" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="277,134,0,0" Text="255.255.0.0" SelectionOpacity="1"/>
            <Label Content="Passerelle :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="277,162,0,0"/>
            <TextBox x:Name="gatefilaire" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="277,193,0,0" SelectionOpacity="1"/>
    
            <Label Content="Paramètre Réseau WiFi" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,235,0,0" Cursor="None" FontWeight="Bold" FontSize="14"/>
            <Label Content="SSID :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,269,0,0"/>
            <TextBox x:Name="ssid" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="10,300,0,0"/>
            <Label Content="Clé WiFi :" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="170,269,0,0"/>
            <TextBox x:Name="keywifi" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="227" Margin="170,300,0,0"/>
    
    
            <Label Content="Nom Imprimante wifi" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="10,328,0,0"/>
            <TextBox x:Name="nameprinter" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="120" Margin="10,359,0,0" Text="IMPR"/>
            
            <Button x:Name="Valider" Content="Valider" HorizontalAlignment="Left" VerticalAlignment="Top" Width="75" Margin="366,404,0,0"/>
        </Grid>
        </Window>
    "@
    
    
    
    
    
    $FormXML = (New-Object System.Xml.XmlNodeReader $XML)
    $Window = [Windows.Markup.XamlReader]::Load($FormXML)
    
    $Window.FindName("Valider").add_click({ 
        $Window.Close() 
    }) 
    
    
    
    $nameprinter = $Window.FindName('nameprinter')
    $ipwifi = $Window.FindName('ipwifi')
    $maskwifi = $Window.FindName('maskwifi')
    $gatewifi = $Window.FindName('gatewifi')
    $ipfilaire = $Window.FindName('ipfilaire')
    $maskfilaire = $Window.FindName('maskfilaire')
    $gatefilaire = $Window.FindName('Mytexte')
    $ssid = $Window.FindName('ssid')
    $keywifi = $Window.FindName('keywifi')
    
    
    
    
    
    
    $Window.ShowDialog() | Out-Null

    PS :

    voici le script sans interface graphique fonctionnel ( J'ai juste retiré retiré la partie création et écriture du fichier pour vous éviter le langage barbare)

    # Nom Fichier
    
    Write-Host
    Write-Host
    $filename = "dlcCourte "
    $magasin = Read-Host "Nom du magasin"
    $magasin = $magasin.ToUpper()
    $filename = $filename + $magasin
    $nameprinter = Read-Host "Nom Imprimante"
    $nameprinter = $nameprinter.ToUpper()
    $filename = $filename + " " + $nameprinter +  " .zpl"
    
    # Conf IP WiFi
    
    Write-Host
    Write-Host
    $ipwifi = Read-Host "IP WiFi"
    $maskwifi = Read-Host "Masque WiFi"
    $gatewifi = Read-Host "Passerelle WiFi"
    $lignIpWifi = "^WIP," + $ipwifi + "," + $maskwifi + "," + $gatewifi
    
    # Conf IP Filaire
    
    Write-Host
    Write-Host
    $ipfilaire = Read-Host "IP Filaire"
    $maskfilaire = Read-Host "Masque Filaire"
    $gatefilaire = Read-Host "Passerelle Filaire"
    $lignIpFil = "^ND2,P," + $ipfilaire + "," + $maskfilaire + "," + $gatefilaire
    
    #Conf WiFi
    
    Write-Host
    Write-Host
    $ssid = Read-Host "SSID"
    $ssid = $ssid.ToUpper()
    $lignssid = "^WS" + $ssid + ",I,L,,,"
    $keywifi = Read-Host "Clé Sécurité"
    $lignclewifi = "^WX09," + $keywifi

    -
    Edité par ClémentCastes 29 juin 2020 à 20:04:37

    • Partager sur Facebook
    • Partager sur Twitter

    Powershell avec interface graphique XAML/wpf

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown