Πώς να περάσετε ένα όρισμα σε μια δέσμη ενεργειών PowerShell;

Υπάρχει ένα σενάριο PowerShell με όνομα itunesForward.ps1 που κάνει το iTunes να προχωράει γρήγορα 30 δευτερόλεπτα μπροστά:

$iTunes = New-Object -ComObject iTunes.Application

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

Εκτελείται με εντολή γραμμής prompt:

powershell.exe itunesForward.ps1

Είναι δυνατόν να περάσετε ένα όρισμα από τη γραμμή εντολών και να εφαρμοστεί στο σενάριο αντί της σκληρά κωδικοποιημένης τιμής 30 δευτερολέπτων;

Λύση

Δοκιμασμένο ως λειτουργικό:

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
}

Καλέστε το με

powershell.exe -file itunesForward.ps1 -step 15
Σχόλια (13)

Μπορείτε επίσης να χρησιμοποιήσετε τη μεταβλητή $args (που είναι σαν τις παραμέτρους θέσης):

$step=$args[0]

$iTunes = New-Object -ComObject iTunes.Application

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

τότε μπορεί να γίνει κλήση όπως:

powershell.exe -file itunersforward.ps1 15
Σχόλια (4)

αφήστε την Powershell να αναλύσει και να αποφασίσει τον τύπο δεδομένων

Σχόλια (0)