PoshBootstrap |
Écrit par Gilles LAURENT | |
16-09-2014 | |
PoshBootstrap - Embarquer du code Powershell au sein d'un script de commandes Windows J'utilise ce principe pour mes scripts Perl. Ceci me permet de réaliser facilement des actions de Pré et Post traitement en langage de commandes Windows tout en bénéficiant dans le même fichier de script de la puissance du langage Perl. Suite à la demande d'un client, j'ai dû reproduire ce principe cette fois pour embarquer du code Powershell au sein d'un script de commandes Windows. Powershell exploite les fondations .Net et est de ce fait incontournable pour administrer les plateformes Windows modernes. Ce Shell offre des possibilités infinies, tant aux administrateurs qu'aux développeurs .Net. Cet essai le confirme. Historique : V1.2 - 20210102 - Support PowerShell Core V1.1 - 20192701 - fix: the parameter name 's' is ambiguous. Using -skip and -first V1.0 - 20140916 - Première Release Publique Plateformes supportées : Pré requis : Listing 1 : PoshBootstrap.cmd @rem = '--*-POWERSHELL-*--' ; @rem = 'Bootstrap sample v1.2' ; @rem = 'Runs Embedded Powershell script' ; @rem = 'Copyright (c) 2014-2021 GiL' ; @rem = ' @echo off setlocal enabledelayedexpansion pushd "%~dp0 set s=&set e=&set p=&set args=%* if defined args set args=%args:"=\"% for /f "delims=:" %%i in ('findstr /bn "#^! __" "%~f0"') do if not defined s (set s=%%i) else (set/a e=%%i-!s!-1) for %%i in (pwsh.exe,powershell.exe) do if not defined p (set p=%%~$PATH:i) %p% -nop -sta -com iex $('$args=^&{$args}%args%;'+[string]::join([environment]::newline,$(gc '%~f0'^|select -skip %s% -f %e%))) goto :endofposh @rem '; #!/Windows/System32/WindowsPowerShell/v1.0/powershell.exe { param ( [string]$arg0 = "<None>" ) write-host -f yellow "Powershell $($psversiontable.psedition) started." write-host -f green "Arguments received from batch file :" [pscustomobject]@{"#arg"=0;"value"=$arg0} for ($n=0; $n -lt $args.count; $n++) { [pscustomobject]@{"#arg"=$n+1;"value"=$args[$n]} } }.invoke($args) __END__ :endofposh pause endlocal popd Note : Le code Powershell écrit sous la forme d'un Script-Block doit se situer entre les balises Shebang (#!/<Path>) et __End__. Les commandes de Post-traitement doivent se situer après l'étiquette :endofposh Ce script permet le passage des arguments transmis au script de commandes Windows vers le script Powershell embarqué. Ci-dessous un exemple d'utilisation avec le passage de quatre arguments. C:\> .\PoshBootstrap.cmd -p 0 -r 1 Powershell Core started. Arguments received from batch file : #arg value ---- ----- 0 -p 1 0 2 -r 3 1 Press any key to continue... Téléchargement : Guide PDF : - |
|
Dernière mise à jour : ( 02-01-2021 ) |
Suivant > |
---|