我拼命地尝试将参数从批处理文件传递到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 …Run Code Online (Sandbox Code Playgroud) 我定义GENERATOR_PLATFORM为一个空的环境变量,然后我想将它设置为我的 Windows 版本。但是,变量永远不会被设置:
env:
GENERATOR_PLATFORM:
steps:
- name: windows-dependencies
if: startsWith(matrix.os, 'windows')
run: |
$generator= "-DCMAKE_GENERATOR_PLATFORM=x64"
echo "Generator: ${generator}"
echo "GENERATOR_PLATFORM=$generator" >> $GITHUB_ENV
- name: Configure CMake
shell: bash
working-directory: ${{github.workspace}}/build
run: cmake $GITHUB_WORKSPACE $GENERATOR_PLATFORM
Run Code Online (Sandbox Code Playgroud) 有没有一种方法可以检查正在运行PowerShell脚本的操作系统,并发出一条If声明:
[伪代码]
if its this OS
do this
if its this other OS
do this
Run Code Online (Sandbox Code Playgroud)
仅针对脚本中的特定行?我必须制作一个设置私人消息队列的PowerShell脚本。遗憾的是,我公司的某些客户端未使用Windows Server 2012,因此添加私有消息队列的更简单版本无法在Windows Server 2008和过时的PowerShell版本上使用。要解决此问题,我还必须改用非常复杂的旧方法,但是我希望这两种方法都存在。