如何在Powershell Invoke-Command 中使用appcmd 添加虚拟目录?

How to use appcmd in Powershell Invoke-Command to add a virtual directory?

我想在 Powershell 中使用带有 Invoke-Command 的 appcmd 添加虚拟目录。

我使用的参考来自: 1) appcmd to create virtual directory 2) Powershell Invoke-Command

这是代码片段:

$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 代码段以便我可以创建虚拟目录?谢谢

您似乎遇到了引用问题以及一些无关字符。 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}