Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Powershell对bat文件提示符运行命令?_Powershell - Fatal编程技术网

如何让Powershell对bat文件提示符运行命令?

如何让Powershell对bat文件提示符运行命令?,powershell,Powershell,我正在使用Powershell运行一个bat文件,该bat文件将打开一个单独的命令提示符。在新的命令提示符中,我必须为它指定特定的文件路径以及文件和扩展名才能运行更新。BAT文件正在调用加载该文件的JAR文件 以下是我所拥有的: <# Variables #> $RBT = "\\Testserver\D$\Test\Tool\Update_Loader.bat" $RB = "\\Testserver\D$\Test\Tool\Funtimes.met"

我正在使用Powershell运行一个bat文件,该bat文件将打开一个单独的命令提示符。在新的命令提示符中,我必须为它指定特定的文件路径以及文件和扩展名才能运行更新。BAT文件正在调用加载该文件的JAR文件

以下是我所拥有的:

  <#     Variables      #>

$RBT = "\\Testserver\D$\Test\Tool\Update_Loader.bat"

$RB = "\\Testserver\D$\Test\Tool\Funtimes.met"

<#  Process  #>

<#  Test #1 = Failed; Just a blank window

Start-Process "cmd.exe" "/c $RBT" -Verb RunAs -Wait

#>


<# Test #2 = Partial Fail; BAT file command prompt opened but waited for the file path insertion

Start-Process .\Update_Loader.bat

.\Update_Loader.bat \\Testserver\D$\Test\Tool\Funtimes.met

#>


<# Test #3 = Fail;  Just a blank window

Start-Process cmd -ArgumentList "/c D:\Test\Tool\Update_Loader.bat" -RedirectStandardOutput "D:\Test\Tool\Funtimes.met"

#>


<# Test #4 = Partial Fail; BAT file command prompt opened but did not deploy the file

Invoke-Command -ScriptBlock {Start-Process "cmd.exe" "/k D:\Test\Tool\Update_Loader.bat" -Verb RunAs | Invoke-Expression "D:\Test\Tool\Funtimes.met"}

#>


<# Test #5 = Partial Fail; BAT file command prompt opened but did not deploy the file

Start-Process "cmd.exe"

Invoke-Command -ScriptBlock {"D:\Test\Tool\Update_Loader.bat" | Start-Process "D:\Test\Tool\Funtimes.met"}

#>



$RBT=“\\Testserver\D$\Test\Tool\Update\u Loader.bat”
$RB=“\\Testserver\D$\Test\Tool\Funtimes.met”
正如你所看到的,我已经尽了一切努力使它尽可能简单。我担心我会把事情弄得比实际需要的更复杂。我想我只是缺少一个参数或使用了错误的命令。

试试这个。。。 一个简单的函数,允许将命令传递给PSWindows或PSCore

Function Start-ConsoleCommand
{
    [CmdletBinding(SupportsShouldProcess)]

    [Alias('scc')]

    Param  
    ( 
        [string]$ConsoleCommand,
        [switch]$PoSHCore
    )

    If ($PoSHCore)
    {Start-Process pwsh -ArgumentList "-NoExit","-Command  &{ $ConsoleCommand }" -Wait}
    Else
    {Start-Process powershell -ArgumentList "-NoExit","-Command  &{ $ConsoleCommand }" -Wait}
}

冒着听起来愚蠢的风险,您是否验证过直接运行
Update_Loader.bat
(在常规的
cmd
命令提示符下在PowerShell之外)确实有效,并且不会给您相同的“空白窗口”,这可能表明后台发生了什么事情?bat文件在PowerShell之外有效。我只是想为自己简化这个过程,减少输入文件路径时的人为错误。很抱歉回复太晚,我会尽快尝试你的功能。