如何获得网站的“物理路径”属性

时间:2018-09-25 12:31:07

标签: powershell iis

当我只列出具有默认格式的网站时,它会显示物理路径。

PS C:\Windows\system32> $sm = Get-IISServerManager

PS C:\Windows\system32> $sm.Sites

Name             ID   State      Physical Path                  Bindings                                                                                                                                                                                                 
----             --   -----      -------------                  --------                                                                                                                                                                                                 
Default Web Site 1    Started    %SystemDrive%\inetpub\wwwroot  http *:80:                                                                                                                                                                                               
Test             2    Started    C:\inetpub\wwwroot_Test       http *:5007:                                                                                                                                                                                             



PS C:\Windows\system32> 

但是我在对象上找不到任何相应的属性。

$sm.Sites[0] | Format-List *



ApplicationDefaults        : Microsoft.Web.Administration.ApplicationDefaults
Applications               : {Default Web Site/, ...}
Bindings                   : {http *:80:}
Id                         : 1
Limits                     : Microsoft.Web.Administration.SiteLimits
LogFile                    : Microsoft.Web.Administration.SiteLogFile
Name                       : Default Web Site
ServerAutoStart            : True
State                      : Started
TraceFailedRequestsLogging : Microsoft.Web.Administration.SiteTraceFailedRequestsLogging
VirtualDirectoryDefaults   : Microsoft.Web.Administration.VirtualDirectoryDefaults
Attributes                 : {name, id, serverAutoStart, state}
ChildElements              : {bindings, limits, logFile, traceFailedRequestsLogging...}
ElementTagName             : site
IsLocallyStored            : True
Methods                    : {Start, Stop}
RawAttributes              : {[name, Default Web Site], [id, 1], [serverAutoStart, True], [state, 1]}
Schema                     : Microsoft.Web.Administration.ConfigurationElementSchema

直接问题:如何获取网站的物理路径?

间接问题:是否可以找到默认情况下对象的格式?然后我可以从那里查找物理路径。

5 个答案:

答案 0 :(得分:1)

反编译并调试了几个小时后,我发现powershell在内部使用了该表达式:

$_.Applications["/"].VirtualDirectories["/"].PhysicalPath

不知道您应该如何在不进行反编译的情况下找到答案。

答案 1 :(得分:1)

这非常适合我的需求。只要记住在脚本中将{target site name}定义为特定的站点名称,以防您在IIS下运行多个站点。

感谢@ΩmegaMan这个小宝石

答案 2 :(得分:1)

$physicalPath = (Get-Website "Default Web Site" | Select-Object).PhysicalPath

答案 3 :(得分:0)

我一直在使用

Import-Module Webadministration

gci "IIS:\Sites\{target site name}"                                `
                    | Where-Object {$_.NodeType -eq 'application'} `
                    | Sort-Object -Property PhysicalPath, name 

答案 4 :(得分:0)

您可以通过以下方式获得物理路径:

echo (Get-WebApplication "Your application" | Select-Object).PhysicalPath