美好的一天
我想设置一个通用脚本,我可以在调用 .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/