Поиск физического пути в iis через power Shell

#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. Верно! Я отредактирую ответ с помощью более подробного описания!