powershell v2.0 передает переменную параметр computername из командного файла cmd - PullRequest
3 голосов
/ 10 мая 2011

Good Day All

Я хочу настроить общий скрипт, где я могу передать имя сервера из скрипта .bat при вызове .ps1

В моем скрипте bat естьутверждение:

set setver_name=our2008server
powershell -ExecutionPolicy RemoteSigned 
    -NonInteractive 
    -NoProfile 
    -command 
        "& '\\serverd1\d$\Program Files\%run_dir%\Dcls\PS\Stop_Bkgnd_%run_env%_01.ps1' " 
    -server_name %server_name%

в моем скрипте ps1 у меня есть:

gwmi win32_service -Computername $server_name -filter "name = 'BackgroundQueue'"  | 
    % {$_.StopService()}

Если я заменим $ server_name на фактическое имя сервера, оно будет работать нормально.Просто не могу получить переменную из файла .bat для распознавания в .ps1.

Любая помощь будет принята с благодарностью.

BobZ

Ответы [ 2 ]

4 голосов
/ 10 мая 2011

Обновите ваш скрипт для использования параметра:

param($server_name)
gwmi win32_service -Computername $server_name -filter "name = 'BackgroundQueue'"  | 
% {$_.StopService()}

И во время вызова переместите -server_name %server_name% в команду.

set setver_name=our2008server
powershell -ExecutionPolicy RemoteSigned 
    -NonInteractive 
    -NoProfile 
    -command 
        "& '\\serverd1\d$\Program Files\%run_dir%\Dcls\PS\Stop_Bkgnd_%run_env%_01.ps1 -server_name %server_name%' "
1 голос
/ 10 мая 2011

Самый простой способ - использовать переменную $args.Это массив, содержащий все аргументы, передаваемые скрипту PowerShell.

Пример использования:

Write-Host "Num Args:" $args.Length;
foreach ($arg in $args)
{
  Write-Host "Arg: $arg";
}

$args[0]
$args[1]

Так что в вашем примере я бы изменил параметр command на чтение

// Note the change at the end of this string
-command "& '\\path\to\my\powershell_script.ps1' %setver_name%"

и измените файл PS1 на

// Note I have used $args[0].
gwmi win32_service -Computername $args[0] -filter "name = 'BackgroundQueue'"  | 
    % {$_.StopService()}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...