美好的一天

我想设置一个通用脚本,我可以在调用 .ps1 时从 .bat 脚本传递服务器名称

在我的 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 中识别的变量。

任何帮助将不胜感激。

鲍勃

最佳答案

更新您的脚本以使用参数:

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%' "

关于powershell v2.0 从批处理 cmd 文件传递​​变量计算机名参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5941940/

10-13 03:39