Как мне заставить Powershell запустить команду в командной строке bat-файла? - PullRequest
0 голосов
/ 05 февраля 2020

Я использую Powershell для запуска файла bat, для которого этот файл bat откроет отдельную командную строку. В этой новой командной строке я должен указать ей c путь к файлу с файлом и расширением для запуска обновления. Файл 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"}

#>


Как вы можете видеть, я почти все перепробовал, чтобы сохранить его простым насколько это возможно. Я боюсь, что мне придется сделать это более сложным, чем нужно. Я думаю, что я просто пропускаю аргумент или использую неправильную команду.

1 Ответ

0 голосов
/ 06 февраля 2020

Попробуйте это ... Простая функция, которая позволяет передавать команду PS Windows или 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}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...