Den*_*s.A 6 powershell batch-file
我拼命地尝试将参数从批处理文件传递到PowerShell脚本,该脚本检查Windows服务是否正在运行.
这是我完全可操作的命令:
.\nsrservices.ps1 -cmd running nsrexecd,stisvc
Run Code Online (Sandbox Code Playgroud)
但问题是命令的行为:
这是我的bat文件:
powershell.exe -File .\nsrservices.ps1 -cmd running nsrexecd,stisvc
ECHO.%ERRORLEVEL%
exit /B %ERRORLEVEL%
Run Code Online (Sandbox Code Playgroud)
在我的PS文件中,参数定义如下:
param([string]$cmd=$(throw "Type d'action manquante !"),[string[]]$srv)
Run Code Online (Sandbox Code Playgroud)
在日志文件中,我得到了这两个结果(抱歉法国输出).
在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
Run Code Online (Sandbox Code Playgroud)
这意味着服务按顺序进行测试
从.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
Run Code Online (Sandbox Code Playgroud)
这意味着名为"nsrexecd,stisvc"的服务不存在.
我的两个名字之间的逗号似乎在使用.bat文件时会引起混淆
所以我正在努力找到一个解决方法来赢得这个血腥的.bat文件.
我试过报价,单引号,-File,-Command,但没有成功.
任何线索或解决方案都会非常受欢迎,因为我在这个论坛上的研究没有给我一些可用的东西.
当然,之后我想用参数调用.bat文件.
在你的情况下,我将使用:
[parameter(Mandatory=$true,
           ValueFromRemainingArguments=$true)]
[String[]]
$services
Run Code Online (Sandbox Code Playgroud)
您的批量调用将如下所示
powershell.exe -File .\nsrservices.ps1 -cmd running nsrexecd stisvc
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请查看about_Functions_Advanced_Parameters