1

リモートサーバーからWebサイトの名前、ID、ログファイルの場所を取得できました。各サイトのルートの物理パスを見つけることは直感的ではなく、このメッセージの最後でループしています。それは各サイトの物理パスにアクセスする正しい方法ですか?各サイトのディスク使用量を測定するためにこれが必要になります。

[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$server = [Microsoft.Web.Administration.ServerManager]::OpenRemote($machine)
$sites = $server.Sites #| Select Id, Name, LogFile

IF ( $sites.count -ne 0 ) 
{
    $logRootDir =$sites[0].LogFile.Directory
    write-host "log root dir = $logRootDir" 
}
ELSE 
{
    write-host "there are no IIS websites on this machine"
    Exit
}

foreach ($site in $sites) 
{
    write-host $site.Id $site.Name
    $rootApp = $site.Applications | where { $_.Path -eq "/" }
    $rootVdir = $rootApp.VirtualDirectories | where { $_.Path -eq "/" }
    write-host "root dir = " $rootVdir.PhysicalPath
}
4

2 に答える 2

0

あなたはこれから始めることができます:

$lf = @{n='LogFile';e={Join-Path ($_.LogFile.Directory -replace '^%SystemDrive%','C:') "W3SVC$($_.Id)"}}
$pp = @{n='PhysicalPath';e={$_.Applications['/'].VirtualDirectories['/'].PhysicalPath}}

$server.Sites | Select Id,Name,$lf,$pp
于 2013-03-20T14:50:42.723 に答える
0

タブ区切りのリストをテキストファイルとして保存するには:

New-Item c:\sites.txt -type file -force
[Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
$sm = New-Object Microsoft.Web.Administration.ServerManager
foreach($site in $sm.Sites)
{
    $root = $site.Applications | where { $_.Path -eq "/" }
    $rootVdir = $root.VirtualDirectories | where { $_.Path -eq "/" }
    Write-Output ($site.Name + "`t" + $site.State + "`t" + $rootVdir.PhysicalPath + "`t" + $site.Id + "`t" + $site.Bindings + "`t" + $root.ApplicationPoolName) >> c:\sites.txt
}
于 2015-12-10T15:57:40.723 に答える