with switch script pass parameter example define command-line powershell automation itunes argument-passing

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í.