#powershell #iis
#powershell #iis
Вопрос:
Я хочу найти и сохранить физический путь сайта IIS к переменной, однако в показанном результате так много строк, можно ли просто сохранить «C:inetpubwwwroot » в переменной типа $Directory в следующих строках?
МОЯ КОМАНДА
$Site = Get-IISSite "Default Web Site"
$Site
###РЕЗУЛЬТАТ
Name ID State Physical Path Bindings
---- -- ----- ------------- --------
Default Web Site 1 Started **C:inetpubwwwroot** http *:80:
http 192.168.97.7:80:
net.tcp 808:*
net.msmq localhost
msmq.formatname localhost
net.pipe *
Спасибо
Ответ №1:
Чтобы сделать код из Pba еще короче, вы можете использовать «точечную нотацию» для расширения нужных атрибутов:
$Directory =
Get-IISSite "Default Web Site" |
Foreach-Object {$_.Applications.VirtualDirectories.PhysicalPath}
$Directory
Таким образом, еще проще увидеть отношения атрибутов.
Комментарии:
1. Еще короче, нет необходимости в foreach:
(Get-IISSite "Default Web Site").Applications.VirtualDirectories.PhysicalPath
Ответ №2:
Это дает мне ожидаемый результат
Записанная версия:
$Directory = Get-IISSite "Default Web Site" | Foreach-Object {$_.Applications} | Foreach-Object {$_.VirtualDirectories} | Foreach-Object {$_.PhysicalPath}
Версия псевдонима для небольшого более короткого кода (менее читаемого, поэтому не рекомендуется)
$Directory = Get-IISSite "Default Web Site" | % {$_.Applications} | % {$_.VirtualDirectories} | % {$_.PhysicalPath}
Это перебирает IIS и возвращает рабочие каталоги. Имейте в виду, что вы получите больше результатов, когда начнете использовать приложения или виртуальные каталоги, поэтому в этом случае вам нужно немного повозиться с циклами foreach.
Комментарии:
1. Я бы рекомендовал избегать псевдонимов и, с другой стороны, использовать отступы, чтобы сделать ваш код более читаемым. 😉
2. Верно! Я отредактирую ответ с помощью более подробного описания!