Как передать аргумент скрипту PowerShell? - PullRequest
376 голосов
/ 08 апреля 2011

Существует сценарий PowerShell с именем itunesForward.ps1, который ускоряет перемотку iTunes вперед на 30 секунд:

$iTunes = New-Object -ComObject iTunes.Application

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

Это выполняется с помощью командной строки:

powershell.exe itunesForward.ps1

Можно ли передать аргумент из командной строки и применить его в сценарии вместо жестко заданного значения 30 секунд?

Ответы [ 5 ]

530 голосов
/ 08 апреля 2011

Проверено как работающее:

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
323 голосов
/ 08 апреля 2011

Вы можете также использовать переменную $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
5 голосов
/ 09 ноября 2018

пусть Powershell проанализирует и определит тип данных
Внутренне использует «Вариант» для этого ...
и вообще делает хорошую работу ...

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

или если вам нужно передать несколько параметров

param( $x1, $x2 )
$iTunes = New-Object -ComObject iTunes.Application
if ( $iTunes.playerstate -eq 1 ) 
    { 
    $iTunes.PlayerPosition = $iTunes.PlayerPosition + $x1 
    $iTunes.<AnyProperty>  = $x2
    }
2 голосов
/ 19 декабря 2018

Создайте сценарий powershell со следующим кодом в файле.

param([string]$path)
Get-ChildItem $path | Where-Object {$_.LinkType -eq 'SymbolicLink'} | select name, target

Это создает сценарий с параметром пути.В нем будут перечислены все символические ссылки в указанном пути, а также указана цель символической ссылки.

1 голос
/ 16 мая 2019

Вы также можете определить переменную непосредственно в командной строке PowerShell, а затем выполнить скрипт. Переменная тоже будет там определена. Это помогло мне в случае, когда я не мог изменить подписанный скрипт.

Пример:

 PS C:\temp> $stepsize = 30
 PS C:\temp> .\itunesForward.ps1

с iTunesForward.ps1, равным

$iTunes = New-Object -ComObject iTunes.Application

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