New-Сбой веб-приложения при использовании сетевого пути в параметре physicalpath в powershell

#powershell #iis

#powershell #iis

Вопрос:

Мы пытаемся создать список приложений на определенном сайте, для этого у нас есть csv, который содержит необходимую информацию для создания сайта. Ниже приведен формат:

введите описание изображения здесь

Ниже приведен сценарий, который мы используем для создания приложения в IIS:

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

Проблема заключается в приложении, код которого хранится на некотором сетевом пути, например \networkWebappsappname , выдает ошибку ниже:

New-WebApplication: не удается найти параметр, соответствующий имени параметра ‘physicalPath’.

в то время как папка приложения, расположенная на том же сервере, создается без каких-либо проблем,

Также test-path \networkwebappsappname это привело к true

В чем проблема и как ее устранить?

Комментарии:

1. Можете ли вы показать вывод get-command new-webapplication -ShowCommandInfo ?

Ответ №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
 

Комментарии:

1. Приложение работает на другом сервере с сетевым путем, нет такого случая, чтобы VD работал в сети, а приложение нет

Ответ №3:

Есть ли вероятность, что это так? Эта ошибка звучит так, как будто это проблема с командлетом, а не с данными, которые вы ему передаете.

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?форум=windowscontainers

в частности:

Вам необходимо импортировать модуль веб-администрирования. Если вы находитесь в контейнере через docker exec, просто используйте:

Импорт-Модуль веб-администрирования

Комментарии:

1. Импорт модуля веб-администрирования выполнен правильно, поэтому он выдает ошибку из модуля с указанием physicalPath not found