Как использовать appcmd в Powershell Invoke-Command для добавления виртуального каталога? - PullRequest
0 голосов
/ 16 апреля 2019

Я хочу использовать appcmd с Invoke-Command в Powershell для добавления виртуального каталога.

Я использую ссылку из: 1) appcmd для создания виртуального каталога 2) Команда вызова Powershell

Вот фрагмент кода:

$appCmdCommand2 = [string]::Format(
{"appcmd.exe set config -section:system.applicationHost/sites /+"[name='Default Web Site'].[path='/'].[path='/MyWebsite/dev',physicalPath='{0}']" /commit:apphost"},$folderName)

Invoke-Command -ComputerName ComputerAA -ScriptBlock {$appCmdCommand2}

Когда я запускаю код выше, я получаю сообщение об ошибке:

Unexpected token 'name='Default Web Site'].[path='/'].[path='/MyWebsite/dev'' in expression or statement.

Я новичок в Powershell и всюду искал способ решения этой проблемы.

Если кто-нибудь может показать мне, как исправить мой фрагмент Powershell, чтобы я мог создать виртуальный каталог? Спасибо

1 Ответ

0 голосов
/ 16 апреля 2019

Похоже, у вас может быть проблема с цитатами в сочетании с посторонними персонажами.Символы {} в вызове String.Format ничего не делают для вас.Двойная кавычка здесь "appcmd.exe начинает строку, заканчивающуюся на /+", которая делает все после ошибки.Вы можете экранировать двойные кавычки в строке с символом обратного символа `.

[string]::Format("appcmd.exe set config -section:system.applicationHost/sites /+`"[name='Default Web Site'].[path='/'].[path='/MyWebsite/dev',physicalPath='{0}']`" /commit:apphost",$folderName)

В Powershell также есть оператор -f, который выполняет форматирование строки без необходимости вызывать string.format, но вам все равно нужно экранировать кавычки..

$appCmdCommand2 = "appcmd.exe set config -section:system.applicationHost/sites /+`"[name='Default Web Site'].[path='/'].[path='/MyWebsite/dev',physicalPath='{0}']`" /commit:apphost" -f $folderName

Invoke-Command -ComputerName ComputerAA -ScriptBlock {$appCmdCommand2}
...