小编Boo*_*Roo的帖子

从bat文件将参数传递给PowerShell

我拼命地尝试将参数从批处理文件传递到PowerShell脚本,该脚本检查Windows服务是否正在运行.

这是我完全可操作的命令:

.\nsrservices.ps1 -cmd running nsrexecd,stisvc
Run Code Online (Sandbox Code Playgroud)

但问题是命令的行为:

  • 在PowerShell窗口中,服务名称被视为两个(或更多),因此检查'nsrexecd'然后检查'stisvc'
  • 在批处理文件中,服务名称作为唯一值传递给PowerShell,因此检查'nsrexecd,stisvc'

这是我的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)

powershell batch-file

6
推荐指数
1
解决办法
3583
查看次数

Github 操作:使用 PowerShell 为 Windows 构建设置环境变量

我定义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 environment-variables github-actions

4
推荐指数
1
解决办法
329
查看次数

使用IF语句运行命令之前先执行Powershell OS检查

有没有一种方法可以检查正在运行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版本上使用。要解决此问题,我还必须改用非常复杂的旧方法,但是我希望这两种方法都存在。

powershell operating-system message-queue

1
推荐指数
1
解决办法
9989
查看次数