Salut,
me revoilà, ce petit code permet d'ajouter à la barre de menu un nouveau menu personnalisé destiné à l'ajout des add-ons, vous pouvez inclure cette fonction dans votre profil ISE pour qu'elle se charge à chaque session démarrée.
Bon Scripting ;)
me revoilà, ce petit code permet d'ajouter à la barre de menu un nouveau menu personnalisé destiné à l'ajout des add-ons, vous pouvez inclure cette fonction dans votre profil ISE pour qu'elle se charge à chaque session démarrée.
Function Add-AddOns { <# .synopsis affiche et/ou créer des add-ons .parameter List affiche tous les noms des add-ons disponibles .parameter Name nom du add-on .parameter ShortCut un raccourcis pour le add-on .parameter Action un bloc de script qui va s'executer à l'appel du add-on .example Add-AddOns -List .example PS> Add-AddOns -n "Effacer le volet de Script" -s "ctrl+shift+b" -a { >> $psISE.CurrentFile.Editor.Clear() >> } Créer un add-on pour effacer le volet script .example PS> Add-AddOns -RemoveAll Supprime tous les add-Ons .example PS> Add-AddOns -RemoveItem 1 Supprime l'add-on ayant l'index 1 .example PS> $sb = { Invoke-Expression 'c:\script.ps1' } PS> Add-AddOns "script.ps1" "Ctrl+shift+q" $sb Execute le script 'c:\script.ps1' #> [CmdletBinding(DefaultParameterSetName='List')] Param( [Parameter(Mandatory=$False,Position=0,ParameterSetName='List')] [Switch]$List, [Parameter(Mandatory=$True,Position=0,ParameterSetName='RemoveAll')] [Switch]$RemoveAll, [Parameter(Mandatory=$True,Position=0,ParameterSetName='RemoveItem')] [int]$RemoveItem, [Parameter(Mandatory=$True,Position=0,ParameterSetName='Name')] [String]$Name, [Parameter(Mandatory=$false,Position=1,ParameterSetName='Name')] $ShortCut=$null, [Parameter(Mandatory=$True,Position=2,ParameterSetName='Name')] [ScriptBlock]$Action ) if($Host.Name -ne 'Windows PowerShell ISE Host') { throw "fonctionne uniquement dans l'environment ISE" } Switch ($PSCmdlet.ParameterSetName) { "List" { $Items = $psISE.CurrentPowerShellTab.AddOnsMenu.Submenus for($i=0;$i -le $items.count-1;$i++) { Select -inp $Items @{n="Index";e={$i}}, @{n="Name";e={$_.Item($i).DisplayName}} } } "RemoveAll" { $psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Clear() } "RemoveItem" { $psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.RemoveAt($RemoveItem) } "Name" { $psISE.CurrentPowerShellTab.AddOnsMenu.Submenus.Add($Name,$Action,$ShortCut) } } }
Bon Scripting ;)
Aucun commentaire:
Enregistrer un commentaire