command line - switch - ¿Cómo pasar un argumento a un script de PowerShell?
powershell script example with parameters (4)
Hay un script de PowerShell
llamado itunesForward.ps1
que hace que iTunes avance rápidamente 30 segundos:
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + 30
}
Se ejecuta con el comando de línea de solicitud:
powershell.exe itunesForward.ps1
¿Es posible pasar un argumento desde la línea de comandos y aplicarlo en el script en lugar de un valor de 30 segundos codificado?
Deje que Powershell analice y decida el tipo de datos
Utiliza internamente una ''Variante'' para esto ...
y generalmente hace un buen trabajo ...
param( $x )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 )
{ $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x }
o si necesitas pasar varios parámetros
param( $x1, $x2 )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 )
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $x1
$iTunes.<AnyProperty> = $x2
}
Probado como trabajando:
param([Int32]$step=30) #Must be the first statement in your script
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}
Llamalo con
powershell.exe -file itunesForward.ps1 -step 15
También puede usar la variable $args
(que es como parámetros de posición):
$step=$args[0]
$iTunes = New-Object -ComObject iTunes.Application
if ($iTunes.playerstate -eq 1)
{
$iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}
entonces se puede llamar como
powershell.exe -file itunersforward.ps1 15
& ''C:/Program Files/Notepad++/notepad++.exe''
& - Haz el trabajo por mí.