我将竭尽全力将批处理文件中的参数传递给PowerShell脚本,该脚本检查Windows服务是否正在运行。
这是我的完全可操作的命令:
.\nsrservices.ps1 -cmd running nsrexecd,stisvc
但问题在于该命令的行为:
- 在PowerShell窗口中,服务名称被视为两个(或更多),因此先检查'nsrexecd',然后检查'stisvc'
- 在批处理文件中,服务名称作为唯一值传递给PowerShell,因此检查'nsrexecd,stisvc'
以下是我的批处理文件:
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文件。
ValueFromRemainingArguments=$true
。你可以在这里查看更多内容https://technet.microsoft.com/en-us/library/hh847743.aspx。或者只需将其作为单个字符串引入,并使用`-split ","`。 - Matt.cmd
е’Њ.bat
文件дёҚиѓҢ独立执иҰЊпәЊж‚Ёеү…йҰ»дҢүз”Ёcmd.exe
жқӨиүђиҰЊе®ѓд»¬гЂ‚ - Bill_Stewart