Ako odovzdať argument do skriptu prostredia PowerShell?

Existuje skript PowerShell s názvom itunesForward.ps1, ktorý umožňuje zrýchliť iTunes o 30 sekúnd dopredu:

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + 30
}

Spúšťa sa pomocou príkazu riadka prompt:

powershell.exe itunesForward.ps1

Je možné z príkazového riadku odovzdať argument a nechať ho použiť v skripte namiesto natvrdo zadanej hodnoty 30 sekúnd?

Riešenie

Testované ako funkčné:

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
}

Vyvolajte ho pomocou

powershell.exe -file itunesForward.ps1 -step 15
Komentáre (13)

Môžete použiť aj premennú $args (to je ako parametre pozície):

$step=$args[0]

$iTunes = New-Object -ComObject iTunes.Application

if ($iTunes.playerstate -eq 1)
{
  $iTunes.PlayerPosition = $iTunes.PlayerPosition + $step
}

potom to môže byť volané ako:

powershell.exe -file itunersforward.ps1 15
Komentáre (4)

nechajte Powershell analyzovať a rozhodnúť o type údajov
Interne sa na to používa 'Variant'...
a vo všeobecnosti odvádza dobrú prácu...

param( $x )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 ) 
    { $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x }

alebo ak potrebujete odovzdať viacero parametrov

param( $x1, $x2 )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 ) 
    { 
    $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x1 
    $iTunes.  = $x2
    }
Komentáre (0)