PowerShell : Différence entre versions

De Kono Phil Ceci est la tagline
Aller à : navigation, rechercher
m (Exemple)
m (Exemple)
Ligne 22 : Ligne 22 :
 
Création de fenêtre de dialogue :
 
Création de fenêtre de dialogue :
 
* https://docs.microsoft.com/fr-fr/powershell/scripting/samples/creating-a-custom-input-box?view=powershell-6
 
* https://docs.microsoft.com/fr-fr/powershell/scripting/samples/creating-a-custom-input-box?view=powershell-6
 +
 +
=== Fenêtre de dialogue et sélection multiple ===
 +
<pre># Original example posted at http://technet.microsoft.com/en-us/library/ff730950.aspx
 +
 +
Add-Type -AssemblyName System.Windows.Forms
 +
Add-Type -AssemblyName System.Drawing
 +
 +
# Fonction pour la création de boite de message
 +
function Show-Message {
 +
    param (
 +
        [string]$Message = "Veuillez entrer votre message",
 +
        [string]$Titre = "Titre de la fenêtre",
 +
        [switch]$OKCancel,
 +
        [switch]$AbortRetryIgnore,
 +
        [switch]$YesNoCancel,
 +
        [switch]$YesNo,
 +
        [switch]$RetryCancel,
 +
        [switch]$IconErreur,
 +
        [switch]$IconQuestion,
 +
        [switch]$IconAvertissement,
 +
        [switch]$IconInformation
 +
        )
 +
 +
    # Affecter la valeur selon le type de boutons choisis
 +
    if ($OKCancel) { $Btn = 1 }
 +
    elseif ($AbortRetryIgnore) { $Btn = 2 }
 +
    elseif ($YesNoCancel) { $Btn = 3 }
 +
    elseif ($YesNo) { $Btn = 4 }
 +
    elseif ($RetryCancel) { $Btn = 5 }
 +
    else { $Btn = 0 }
 +
 +
    # Affecter la valeur pour l'icone
 +
    if ($IconErreur) {$Icon = 16 }
 +
    elseif ($IconQuestion) {$Icon = 32 }
 +
    elseif ($IconAvertissement) {$Icon = 48 }
 +
    elseif ($IconInformation) {$Icon = 64 }
 +
    else {$Icon = 0 }
 +
   
 +
    # Charger la biblithèque d'objets graphiques Windows.Forms
 +
    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null
 +
 +
    # Afficher la boite de dialogue et renvoyer la valeur de retour (bouton appuyé)
 +
    $Reponse = [System.Windows.Forms.MessageBox]::Show($Message, $Titre , $Btn, $Icon)
 +
    Return $Reponse
 +
    }
 +
    # Fin de la fonction pour la création de boite de message
 +
 +
# Création de la fenêtre de dialogue
 +
$hauteurfenetre = 250
 +
$form = New-Object System.Windows.Forms.Form
 +
$form.Text = "Profils à supprimer"
 +
$form.Size = New-Object System.Drawing.Size(320,$hauteurfenetre)
 +
$form.StartPosition = "CenterScreen"
 +
 +
$OKButton = New-Object System.Windows.Forms.Button
 +
$OKButton.Location = New-Object System.Drawing.Point(75,($hauteurfenetre-80))
 +
$OKButton.Size = New-Object System.Drawing.Size(75,23)
 +
$OKButton.Text = "OK"
 +
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
 +
$form.AcceptButton = $OKButton
 +
$form.Controls.Add($OKButton)
 +
 +
$CancelButton = New-Object System.Windows.Forms.Button
 +
$CancelButton.Location = New-Object System.Drawing.Point(150,($hauteurfenetre-80))
 +
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
 +
$CancelButton.Text = "Cancel"
 +
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
 +
$form.CancelButton = $CancelButton
 +
$form.Controls.Add($CancelButton)
 +
 +
$label = New-Object System.Windows.Forms.Label
 +
$label.Location = New-Object System.Drawing.Point(10,20)
 +
$label.Size = New-Object System.Drawing.Size(280,20)
 +
$label.Text = "Sélectionner les profils à supprimer ; sélection multiple"
 +
$form.Controls.Add($label)
 +
 +
$listBox = New-Object System.Windows.Forms.Listbox
 +
$listBox.Location = New-Object System.Drawing.Point(10,40)
 +
$listBox.Size = New-Object System.Drawing.Size(280,($hauteurfenetre-120))
 +
 +
$listBox.SelectionMode = "MultiExtended"
 +
 +
## Exemple pour la suppression de profil local # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 +
# $profileliste = Get-WmiObject -ClassName Win32_UserProfile | Where-Object {$_.special -ne "true"} | foreach localpath
 +
#
 +
# foreach ($profile in $profileliste) {
 +
# $listBox.Items.Add($profile)
 +
# }
 +
## à compléter...
 +
 +
## Exemple pour la suppression de dossier # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 +
$dossierliste = Get-childitem "c:\"
 +
 +
foreach ($dossier in $dossierliste) {
 +
$listBox.Items.Add($dossier)
 +
}
 +
 +
$form.Controls.Add($listBox)
 +
$form.Topmost = $True
 +
 +
$result = $form.ShowDialog()
 +
 +
if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
 +
    $x = $listBox.SelectedItems
 +
    if ($x.count -eq 0) {
 +
        $reponse = show-Message -Message "Aucun élément de sélectionné !" -Titre "Sélection" -IconAvertissement
 +
        }
 +
    else {
 +
        $maliste = $x -join "`n"
 +
        # $x
 +
        $reponse = show-Message -Message "Confirmez-vous la suppression des éléments ci-dessous ?`n`n$maliste" -Titre "Confirmation" -YesNo -IconQuestion
 +
        if ($reponse -eq "Yes") {
 +
            foreach ($elem in $x) {
 +
                Get-ChildItem "c:\$elem"
 +
                }
 +
            }
 +
        else {
 +
            $reponse = show-Message -Message "Suppression annulée !" -Titre "Annulation" -IconAvertissement
 +
            }
 +
        }
 +
    }
 +
</pre>
  
 
==== Image et redimensionnement ====
 
==== Image et redimensionnement ====

Version du 8 novembre 2019 à 23:30

PowerShell est un langage de programmation pour les systèmes Microsoft Windows.

Référence

Source de script

Gérer les autorisations NTFS avec PowerShell :

Copie de fichiers avec BITS (Background Intelligent Transfer Service) :

Exemple

Fenêtre de dialogue

Powershell-formulaire-01.png

Création de fenêtre de dialogue :

Fenêtre de dialogue et sélection multiple

# Original example posted at http://technet.microsoft.com/en-us/library/ff730950.aspx

Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# Fonction pour la création de boite de message
function Show-Message {
    param (
        [string]$Message = "Veuillez entrer votre message",
        [string]$Titre = "Titre de la fenêtre",
        [switch]$OKCancel,
        [switch]$AbortRetryIgnore,
        [switch]$YesNoCancel,
        [switch]$YesNo,
        [switch]$RetryCancel,
        [switch]$IconErreur,
        [switch]$IconQuestion,
        [switch]$IconAvertissement,
        [switch]$IconInformation
        )

    # Affecter la valeur selon le type de boutons choisis
    if ($OKCancel) { $Btn = 1 }
    elseif ($AbortRetryIgnore) { $Btn = 2 }
    elseif ($YesNoCancel) { $Btn = 3 }
    elseif ($YesNo) { $Btn = 4 }
    elseif ($RetryCancel) { $Btn = 5 }
    else { $Btn = 0 }

    # Affecter la valeur pour l'icone 
    if ($IconErreur) {$Icon = 16 }
    elseif ($IconQuestion) {$Icon = 32 }
    elseif ($IconAvertissement) {$Icon = 48 }
    elseif ($IconInformation) {$Icon = 64 }
    else {$Icon = 0 }
    
    # Charger la biblithèque d'objets graphiques Windows.Forms
    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") | Out-Null

    # Afficher la boite de dialogue et renvoyer la valeur de retour (bouton appuyé)
    $Reponse = [System.Windows.Forms.MessageBox]::Show($Message, $Titre , $Btn, $Icon)
    Return $Reponse
    }
    # Fin de la fonction pour la création de boite de message

# Création de la fenêtre de dialogue
$hauteurfenetre = 250
$form = New-Object System.Windows.Forms.Form 
$form.Text = "Profils à supprimer"
$form.Size = New-Object System.Drawing.Size(320,$hauteurfenetre) 
$form.StartPosition = "CenterScreen"

$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(75,($hauteurfenetre-80))
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)

$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Point(150,($hauteurfenetre-80))
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = "Cancel"
$CancelButton.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
$form.CancelButton = $CancelButton
$form.Controls.Add($CancelButton)

$label = New-Object System.Windows.Forms.Label
$label.Location = New-Object System.Drawing.Point(10,20) 
$label.Size = New-Object System.Drawing.Size(280,20) 
$label.Text = "Sélectionner les profils à supprimer ; sélection multiple"
$form.Controls.Add($label) 

$listBox = New-Object System.Windows.Forms.Listbox 
$listBox.Location = New-Object System.Drawing.Point(10,40) 
$listBox.Size = New-Object System.Drawing.Size(280,($hauteurfenetre-120)) 

$listBox.SelectionMode = "MultiExtended"

## Exemple pour la suppression de profil local # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
# $profileliste = Get-WmiObject -ClassName Win32_UserProfile | Where-Object {$_.special -ne "true"} | foreach localpath
# 
# foreach ($profile in $profileliste) {
# $listBox.Items.Add($profile)
# }
## à compléter...

## Exemple pour la suppression de dossier # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 
$dossierliste = Get-childitem "c:\"

foreach ($dossier in $dossierliste) {
$listBox.Items.Add($dossier)
} 

$form.Controls.Add($listBox) 
$form.Topmost = $True

$result = $form.ShowDialog()

if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
    $x = $listBox.SelectedItems
    if ($x.count -eq 0) {
        $reponse = show-Message -Message "Aucun élément de sélectionné !" -Titre "Sélection" -IconAvertissement
        }
    else {
        $maliste = $x -join "`n"
        # $x
        $reponse = show-Message -Message "Confirmez-vous la suppression des éléments ci-dessous ?`n`n$maliste" -Titre "Confirmation" -YesNo -IconQuestion
        if ($reponse -eq "Yes") {
            foreach ($elem in $x) {
                Get-ChildItem "c:\$elem"
                }
            }
        else {
            $reponse = show-Message -Message "Suppression annulée !" -Titre "Annulation" -IconAvertissement
            }
        }
    }

Image et redimensionnement

PowerShell et fonction :