Как передать аргумент скрипту PowerShell?

EDIT: Я вижу, что OP запускает Windows из предыдущего комментария, однако следующая информация может приносить пользу пользователям Eclipse на платформе Linux, если Eclipse чтит псевдоним.


Вы запускаете Eclipse в Linux? Если это так, попробуйте сгладить команду gcc; запустите это на терминале:

alias gcc='gcc -Wall -pedantic -ansi'

Это обычный метод в Linux, чтобы указать параметры по умолчанию для приложения. Однако Eclipse может выполнить фактическое приложение gcc и игнорировать псевдоним; Я не тестировал его.

378
задан Boris Pavlović 14 August 2012 в 07:37
поделиться

5 ответов

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

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
532
ответ дан ErikE 14 August 2012 в 07:37
поделиться

Вы также можете определить переменную непосредственно в командной строке 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
}
1
ответ дан Froggy 14 August 2012 в 07:37
поделиться

Вы также можете использовать переменную $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
323
ответ дан Liam 14 August 2012 в 07:37
поделиться

пусть 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
    }
5
ответ дан ZEE 14 August 2012 в 07:37
поделиться

Сценарий Вызова из файла ванны (*.bat) или Ядро CMD

Powershell

pwsh.exe -NoLogo -ExecutionPolicy Bypass -Command "./Script.ps1 -Param1 Hello -Param2 World"

pwsh.exe -NoLogo -ExecutionPolicy Bypass -Command "path-to-script/Script.ps1 -Param1 Hello -Param2 World"

<час> Powershell

powershell.exe -NoLogo -ExecutionPolicy Bypass -Command "./Script.ps1 -Param1 Hello -Param2 World"

powershell.exe -NoLogo -ExecutionPolicy Bypass -Command "path-to-script/Script.ps1 -Param1 Hello -Param2 World"

Вызов от powershell

Powershell Базовый или Windows Powershell

& path-to-script/Script.ps1 -Param1 Hello -Param2 World
& ./Script.ps1 -Param1 Hello -Param2 World
<час>

Сценарий ps1 - Код Сценария

param(
    [Parameter(Mandatory=$True, Position=0, ValueFromPipeline=$false)]
    [System.String]
    $Param1,

    [Parameter(Mandatory=$True, Position=1, ValueFromPipeline=$false)]
    [System.String]
    $Param2
)

Write-Host $Param1
Write-Host $Param2
5
ответ дан 22 November 2019 в 23:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: