Получить все названия приложений на сайте - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь написать скрипт powershell, который получает имена каждого приложения на веб-сайте в IIS, чтобы изменить связанный с ним пул приложений. Я могу получить веб-сайт, но не вижу четкого способа получить каждое из имен?

Например. Я хочу просмотреть их все: Api, Services и т. Д., А затем использовать

Set-ItemProperty "IIS:\Sites\RootSite\$loopedValue" -Name 'applicationPool' -Value $NewPool

Я пытаюсь это:

Get-WebApplication -Site 'ABC'

Name             Application pool   Protocols    Physical Path                                                                                                        
----             ----------------   ---------    -------------                                                                                                        
Api              ABC                http         C:\Api
Services         ABC                http         C:\Services
Director         ABC                http         C:\Director
ReportingServer  ABC                http         C:\ReportingServer

Но нет способа получить Name от членов Get-WebApplication.

Get-WebApplication | Get-Member


   TypeName: Microsoft.IIs.PowerShell.Framework.ConfigurationElement#site#application

Name                     MemberType            Definition                                                                                                             
----                     ----------            ----------                                                                                                             
ClearLocalData           Method                void ClearLocalData()                                                                                                  
Copy                     Method                void Copy(Microsoft.IIs.PowerShell.Framework.ConfigurationElement target, bool recurse)                                
Delete                   Method                void Delete()                                                                                                          
Equals                   Method                bool Equals(System.Object obj), bool IEquatable[ConfigurationElement].Equals(Microsoft.IIs.PowerShell.Framework.Conf...
GetAttribute             Method                Microsoft.IIs.PowerShell.Framework.ConfigurationAttribute GetAttribute(string attributeName)                           
GetAttributeValue        Method                System.Object GetAttributeValue(string attributeName)                                                                  
GetChildElement          Method                Microsoft.IIs.PowerShell.Framework.ConfigurationElement GetChildElement(string elementName), Microsoft.IIs.PowerShel...
GetCollection            Method                Microsoft.IIs.PowerShell.Framework.ConfigurationElementCollection GetCollection(string collectionName), Microsoft.II...
GetHashCode              Method                int GetHashCode()                                                                                                      
GetMetadata              Method                System.Object GetMetadata(string metadataType)                                                                         
GetParentElement         Method                Microsoft.IIs.PowerShell.Framework.ConfigurationElement GetParentElement()                                             
GetType                  Method                type GetType()                                                                                                         
LoadProperties           Method                void LoadProperties(System.Collections.Generic.Dictionary[string,System.Object] propCollection)                        
SetAttributeValue        Method                void SetAttributeValue(string attributeName, System.Object value)                                                      
SetMetadata              Method                void SetMetadata(string metadataType, System.Object value)                                                             
ToPSObject               Method                psobject ToPSObject(Microsoft.IIs.PowerShell.Framework.ConfigurationElement parent)                                    
ToString                 Method                string ToString()                                                                                                      
Update                   Method                void Update(Microsoft.IIs.PowerShell.Framework.ConfigurationElement source), bool Update(psobject data)                
UpdateCollection         Method                bool UpdateCollection(psobject[] arr)                                                                                  
applicationPool          NoteProperty          string applicationPool=ABC                                                                                           
Collection               NoteProperty          psobject[] Collection=System.Management.Automation.PSObject[]                                                          
ConfigurationPathType    NoteProperty          ConfigurationPathNodeType ConfigurationPathType=Location                                                               
enabledProtocols         NoteProperty          string enabledProtocols=http                                                                                           
ItemXPath                NoteProperty          string ItemXPath=/system.applicationHost/sites/site[@name='ABC' and @id='1']/application[@path='/API']            
Location                 NoteProperty          string Location=                                                                                                       
path                     NoteProperty          string path=/ApiDoc                                                                                                    
preloadEnabled           NoteProperty          bool preloadEnabled=False                                                                                              
PSPath                   NoteProperty          string PSPath=MACHINE/WEBROOT/APPHOST                                                                                  
serviceAutoStartEnabled  NoteProperty          bool serviceAutoStartEnabled=False                                                                                     
serviceAutoStartProvider NoteProperty          string serviceAutoStartProvider=                                                                                       
virtualDirectoryDefaults NoteProperty          Microsoft.IIs.PowerShell.Framework.ConfigurationElement#application#virtualDirectoryDefaults virtualDirectoryDefault...
Item                     ParameterizedProperty System.Object Item(string attributeName) {get;set;}                                                                    
Attributes               Property              Microsoft.IIs.PowerShell.Framework.ConfigurationAttributeCollection Attributes {get;}                                  
ChildElements            Property              Microsoft.IIs.PowerShell.Framework.ConfigurationChildElementCollection ChildElements {get;}                            
ElementTagName           Property              string ElementTagName {get;}                                                                                           
Methods                  Property              Microsoft.IIs.PowerShell.Framework.ConfigurationMethodCollection Methods {get;}                                        
Schema                   Property              Microsoft.IIs.PowerShell.Framework.ConfigurationElementSchema Schema {get;}                                            
PhysicalPath             ScriptProperty        System.Object PhysicalPath {get=$pquery = $this.ItemXPath + "/virtualDirectory[@path='/']/@physicalPath"...

Я действительно не хочу анализировать значение string из path или PhysicalPath, чтобы сделать это. Есть ли другой способ?

1 Ответ

1 голос
/ 13 июня 2019

Следующие имена предоставят имена приложений для всех сайтов:

(Get-ChildItem -Path 'IIS:\Sites' -Recurse | Where-Object {$_.NodeType -eq 'application'}).Name

Далее будут возвращены имена приложений для веб-сайта по умолчанию:

(Get-ChildItem -Path 'IIS:\Sites\Default Web Site' | Where-Object {$_.NodeType -eq 'application'}).Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...