【问题标题】:New-WebApplication fails using network path in physicalpath parameter in powershellNew-WebApplication 在 powershell 的物理路径参数中使用网络路径失败
【发布时间】:2021-01-01 11:35:32
【问题描述】:

我们正在尝试在特定站点中创建应用程序列表, 为此,我们有一个 csv,其中包含创建站点所需的信息。以下是格式:

以下是我们用于在 IIS 中创建应用程序的脚本:

foreach($app in $apps){
     $appname = $app.path.TrimStart("/")
     New-WebApplication -Name $appname -Site $app.Site -PhysicalPath $app.PhysicalPath -ApplicationPool $app.applicationPool -Verbose
}

问题是应用程序的代码存储在诸如\\network\Webapps\appname 之类的网络路径上,出现以下错误:

New-WebApplication : 找不到与参数名称“physicalPath”匹配的参数。

而位于同一服务器上的应用程序文件夹正在创建没有任何问题,

也做了test-path \\network\webapps\appname,结果是true

问题是什么以及如何解决?

【问题讨论】:

  • 你能显示get-command new-webapplication -ShowCommandInfo的输出吗?

标签: powershell iis


【解决方案1】:

问题已解决,我不知道其背后的确切原因,已更新我的脚本,基本上已将值分配给特定变量,而不是能够创建应用程序。

更新的脚本

foreach($app in $apps){
     $appname = $app.path.TrimStart("/")
     $appSite = $app.Site
     $appPath = $app.PhysicalPath
     $appPool = $app.applicationPool
     New-WebApplication -Name $appname -Site $appSite -PhysicalPath $appPath -ApplicationPool $appPool -Verbose
}

谢谢

【讨论】:

    【解决方案2】:

    首先你要确保powershell在创建站点的时候有权限访问网络路径对应的服务器。

    使用powershell创建站点时,如果站点的物理路径是本地磁盘中的文件,可以使用New-WebApplication,如果是UNC路径,则使用New-Item。

    一般情况下,UNC路径不会作为主站点的物理路径,而是作为虚拟目录添加。因为主站点的域名指向本地机器,UNC指向远程IP地址,所以两者会发生冲突,因为我通过IIS管理器创建站点时发生了服务器错误。

    $siteName = 'Default Web Site'
    $virtualDirectoryName = 'Test'
    $physicalPath = '\\UNC-path'
    
    ## Init
    $virtualDirectoryPath = "IIS:\Sites\$siteName\$virtualDirectoryName"
    
    ## Create Virtual Directory where physicalpath is an UNC-path (New-WebVirtualDirectory 
    wont do)
    New-Item $virtualDirectoryPath -type VirtualDirectory -physicalPath $physicalPath
    

    【讨论】:

    • 应用程序在其他具有网络路径的服务器上工作,不存在VD在网络上工作而应用程序不工作的情况
    【解决方案3】:

    有可能是这个吗?该错误听起来像是 cmdlet 的问题,而不是您提供给它的数据。

    https://social.msdn.microsoft.com/Forums/en-US/3e0cb076-6ad4-4b03-bb59-c912174266b0/container-with-iis-cant-create-application-using-powershell-physicalpath-parameter-not-found?forum=windowscontainers

    具体来说:

    您需要导入 WebAdministration 模块。如果您通过 docker exec 在容器中,只需使用:

    Import-Module WebAdministration

    【讨论】:

    • Web 管理模块导入是正确的,所以它从模块中给出错误声明 physicalPath not found
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多