【问题标题】:How to use appcmd in Powershell Invoke-Command to add a virtual directory?如何在 Powershell Invoke-Command 中使用 appcmd 添加虚拟目录?
【发布时间】:2019-04-15 21:58:59
【问题描述】:

我想在 Powershell 中使用 appcmd 和 Invoke-Command 来添加虚拟目录。

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

这里是sn-p的代码:

$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 sn-p 以便我可以创建一个虚拟目录?谢谢

【问题讨论】:

    标签: powershell virtual-directory invoke-command appcmd


    【解决方案1】:

    看起来您可能遇到了与一些无关字符相结合的引用问题。 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}
    

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-02-14
      • 1970-01-01
      • 2018-02-26
      • 2022-12-02
      • 2021-02-24
      相关资源
      最近更新 更多