Запуск процесса
Есть и другие способы сделать это. Сначала через Start-Process
:
$p = '-h 3 google.com'
start-process tracert -arg $p
Появляется новое окно. Если вы хотите запустить процесс внутри консоли, просто запустите его с -NoNewWindow
$p = '-h 3 google.com'
start-process tracert -arg $p -nonew
$params = "-New Application"
start-process "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe" -arg $params -nonew
Invoke-Expression
Invoke-Expression
тоже может помочь. Но это сложно, потому что у вас есть пробелы на пути к вашему исполняемому файлу. Это работает, потому что в пути нет места:
$p = '-h 3 google.com'
invoke-expression "tracert $p"
Но если есть пробел, вам нужно использовать &
внутри:
$params = "-New Application"
Invoke-Expression "& ""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe"" $params"
Обратите внимание, что "& ""C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe"" $params"
расширен до:
& "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\mage.exe" -New Application
что ты и хотел. Но если в одном из параметров снова есть пробел, то снова .. вам нужно заключить его в кавычки:
$file1 = 'c:\test path\file1.txt'
$file2 = 'c:\test path\file2.txt'
$params = """$file1"" ""$file2"""
Invoke-Expression "& someexecutable $params"
Разбор довольно сложный: |