#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:
Есть ли вероятность, что это так? Эта ошибка звучит так, как будто это проблема с командлетом, а не с данными, которые вы ему передаете.
в частности:
Вам необходимо импортировать модуль веб-администрирования. Если вы находитесь в контейнере через docker exec, просто используйте:
Импорт-Модуль веб-администрирования
Комментарии:
1. Импорт модуля веб-администрирования выполнен правильно, поэтому он выдает ошибку из модуля с указанием
physicalPath not found