gpt4 book ai didi

powershell - 将参数从 bat 文件传递​​给 PowerShell

转载 作者:行者123 更新时间:2023-12-03 17:13:26 26 4
gpt4 key购买 nike

我拼命地尝试将参数从批处理文件传递到 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 文件。

    最佳答案

    在您的情况下,我将使用:

    [parameter(Mandatory=$true,
    ValueFromRemainingArguments=$true)]
    [String[]]
    $services

    您的批量调用将如下所示
    powershell.exe -File .\nsrservices.ps1 -cmd running nsrexecd stisvc

    更多详情请看 about_Functions_Advanced_Parameters

    关于powershell - 将参数从 bat 文件传递​​给 PowerShell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34451335/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com