Вызвать файл .cmd, используя имя переменной - PullRequest
0 голосов
/ 26 сентября 2019

Текущий скрипт PowerShell вызывает файл .cmd следующим образом:

cd $pathToCmdFile
.\Xyz.Web.deploy /y

Я хотел бы изменить это так, чтобы Xyz использовался в качестве переменной, что-то вроде:

$webAppName = "Xyz"
cd $pathToCmdFile
.\$webAppName.Web.deploy /y

Я уже пробовал

$cmd = ".\$webAppName.Web.deploy /y"
Invoke-Expression $cmd

Показывает

Термин '. \ Xyz.Web.deploy' не распознается как имя командлета, функции, файла сценария.или работоспособная программа ...

Я также пытался Invoke-Command, Invoke-Item, но, похоже, ничего не работает.Я также пытался поставить амперсанд ($cmd = "& .\$webAppName.Web.deploy /y"), но это тоже не сработало.

Ответы [ 2 ]

2 голосов
/ 26 сентября 2019

Правильный способ сделать то, что вы хотите, это использовать оператор вызова (&).Вы не должны включать оператор или аргументы команды в командной строке.

Это должно работать:

$webAppName = "Xyz"
cd $pathToCmdFile
& ".\${webAppName}.Web.deploy.cmd" /y

Я настоятельно рекомендую всегда указывать команды / сценарии с их расширением.

0 голосов
/ 26 сентября 2019

Так Invoke-Expressions должно работать:

test.cmd

set

test.ps1, звонки test.cmd

cd .
$webAppName = "Test"
Invoke-Expression ".\\$webAppName.cmd"

Итак, теперь вы запускаете скрипт powershell

> .\test.ps1
ALLUSERSPROFILE=C:\ProgramData
ANSICON=234x1000 (234x47)
ANSICON_DEF=7
...

Или вы можете сделать это, чтобы передать параметр в скрипт powershell

[CmdletBinding()]
Param(
    [Parameter(Mandatory=$True)]
    [string]$webAppName
)
cd .
Invoke-Expression ".\\$webAppName.cmd"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...