我拼命地尝试将参数从批处理文件传递到PowerShell脚本,该脚本检查Windows服务是否正在运行.
这是我完全可操作的命令:
.\nsrservices.ps1 -cmd running nsrexecd,stisvc
但问题是命令的行为:
在PowerShell窗口中,服务名称被视为两个(或更多),因此检查'nsrexecd'然后检查'stisvc'
在批处理文件中,服务名称作为唯一值传递给PowerShell,因此检查'nsrexecd,stisvc'
这是我的bat文件:
powershell.exe -File .\nsrservices.ps1 -cmd running nsrexecd,stisvc ECHO.%ERRORLEVEL% exit /B %ERRORLEVEL%
在我的PS文件中,参数定义如下:
param([string]$cmd=$(throw "Type d'action manquante !"),[string[]]$srv)
在日志文件中,我得到了这两个结果(抱歉法国输出).
在PowerShell窗口中:
24/12/2015 09:02:50-Paramètres appelés : cmd=running srv=stisvc nsrexecd 24/12/2015 09:02:50-Début test de l'état running du service : stisvc 24/12/2015 09:02:50- Début évaluation de l'état du service : stisvc 24/12/2015 09:02:50- Fin évaluation de l'état du service : stisvc 24/12/2015 09:02:50-Le service tourne 24/12/2015 09:02:50-Fin test de l'état running du service : stisvc 24/12/2015 09:02:50-Début test de l'état running du service : nsrexecd 24/12/2015 09:02:50- Début évaluation de l'état du service : nsrexecd 24/12/2015 09:02:50- Fin évaluation de l'état du service : nsrexecd 24/12/2015 09:02:50-Le service tourne 24/12/2015 09:02:50-Fin test de l'état running du service : nsrexecd
这意味着服务按顺序进行测试
从.bat文件:
24/12/2015 09:04:24-Paramètres appelés : cmd=running srv=nsrexecd,stisvc 24/12/2015 09:04:24-Début test de l'état running du service : nsrexecd,stisvc 24/12/2015 09:04:24- Début évaluation de l'état du service : nsrexecd,stisvc 24/12/2015 09:04:24- Le service nsrexecd,stisvc n'existe pas ! 24/12/2015 09:04:24- Fin évaluation de l'état du service : nsrexecd,stisvc 24/12/2015 09:04:24-Fin test de l'état running du service : nsrexecd,stisvc
这意味着名为"nsrexecd,stisvc"的服务不存在.
我的两个名字之间的逗号似乎在使用.bat文件时会引起混淆
所以我正在努力找到一个解决方法来赢得这个血腥的.bat文件.
我试过报价,单引号,-File,-Command,但没有成功.
任何线索或解决方案都会非常受欢迎,因为我在这个论坛上的研究没有给我一些可用的东西.
当然,之后我想用参数调用.bat文件.