Diferença entre Get-IISSite e Get-ChildItem iis: \\ sites

1

Eu estou querendo saber se alguém pode me explicar uma diferença de comportamento que estou vendo.

Estou tentando encontrar o caminho físico de um site do IIS.

Este exemplo funciona, retornando corretamente o PhysicalPath

Import-Module WebAdministration
Get-ChildItem iis:\sites | Select PhysicalPath

Esta amostra não funciona. O PhysicalPath é retornado como nulo / vazio.

Get-IISSite | select PhysicalPath

Se eu estiver correto, as duas amostras devem retornar um objeto Microsoft.Web.Administration.Site . Por que o segundo está perdendo dados?

    
por Damien Sawyer 10.05.2017 / 03:08

1 resposta

2

Vamos ver:

Get-ChildItem iis: \ sites | get-Member | Onde name -like p * | Nome do objeto de classificação

    TypeName: System.Object

 Name          MemberType   Definition
 ----          ----------   ----------
 password      NoteProperty string password=
 physicalPath  NoteProperty string physicalPath=C:\inetpub\wwwroot
 PSChildName   NoteProperty string PSChildName=Default Web Site
 PSDrive       NoteProperty PSDriveInfo PSDrive=IIS
 PSIsContainer NoteProperty bool PSIsContainer=True
 PSParentPath  NoteProperty string PSParentPath=WebAdministration::\SANKNIGHT\Sites
 PSPath        NoteProperty string PSPath=WebAdministration::\SANKNIGHT\Sites\Default Web Site
 PSProvider    NoteProperty IIsProviderInfo PSProvider=WebAdministration

Get-IISSite | get-Member

    TypeName: Microsoft.Web.Administration.Site

 Name                       MemberType            Definition
 ----                       ----------            ----------
 ApplicationDefaults        Property              Microsoft.Web.Administration.ApplicationDefaults ApplicationDefault...
 Applications               Property              Microsoft.Web.Administration.ApplicationCollection Applications {get;}
 Attributes                 Property              Microsoft.Web.Administration.ConfigurationAttributeCollection Attri...
 Bindings                   Property              Microsoft.Web.Administration.BindingCollection Bindings {get;}
 ChildElements              Property              Microsoft.Web.Administration.ConfigurationChildElementCollection Ch...
 Delete                     Method                void Delete()

não tem membros começando com P e tem muito menos membros que Get-ChildItem. Você pode ver que eles não são o mesmo objeto.

Ao usar Get-ChildItem, cada provedor fornece algumas dicas sobre o que deve ser exibido. Eu acho que isso está em:

$pshome\Modules\WebAdministration\iisprovider.format.ps1xml

por causa disso, todas as informações extras são adicionadas.

    
por 10.05.2017 / 10:14

Tags