私は完全な障害にぶつかっており、IIS 8
で各Webサイトの仮想ディレクトリを印刷する方法を理解できません。私はアプリケーションと空のnull引数エラーを取得し続け、仮想ディレクトリをリストする方法を見つけることができません。
仮想ディレクトリについて一覧表示するには、次のデータが必要です。
以下は私が使っていていじっていたコードです:
*See revised code below*
また、Appcmd.exe
コマンドを使用して、仮想ディレクトリを一覧表示しました。
C:\Windows\System32\inetsrv\appcmd.exe LIST VDIRS
しかし、まだ必要な出力が得られません。何かまたは助けていただければ幸いです!ありがとう!
数行をコメントアウトしてリストに表示する仮想ディレクトリを取得しましたが、名前と次のものだけが出力されます。
以下は改訂されたコードです:
Import-Module WebAdministration
$Websites = Get-ChildItem IIS:\Sites
foreach($Site in $Websites)
{
$webapps = Get-WebApplication -Site $Site.name
$VDir = Get-WebVirtualDirectory -Site $Site.name #-Application $webapps.name
foreach($webvdirectory in $VDir)
{
$webvdirectory2 = $webvdirectory.path
Write-Host $webvdirectory2.split("/")[-1]
#Write-Host $webvdirectory
#Write-Host $webvdirectory.name
}
#Write-Host $VDir
}
あなたはあなたがどのように検索するのか理解できないと書いています:
physicalPath
noteプロパティから直接アクセスできます$Site.name
)これらはすべて、既存のスクリプトを少し変更するだけで取得できます。
Import-Module WebAdministration
$Websites = Get-ChildItem IIS:\Sites
$AllVDirs = @()
foreach($Site in $Websites)
{
$VDirs = Get-WebVirtualDirectory -Site $Site.name
foreach($webvdirectory in $VDirs)
{
$vdir = New-Object psobject -Property @{
"Name" = ($webvdirectory.path -split "/")[-1]
"Site" = $Site.name
"Path" = $webvdirectory.path
"PhysicalPath" = $webvdirectory.physicalPath
"PhysicalPathCredentials" = $webvdirectory.userName
}
$AllVDirs += $vdir
}
}
$AllVDirs
これで、$AllVDirs
をXml、Csvにエクスポートしたり、PowerShellホストに出力したりできます。
@Mathias R. Jessenに感謝します。この投稿のことを忘れていたので、ほとんどがわかったので戻ってきたはずです。あなたのスクリプトは完璧に機能し、S&Gのためだけのものです。私がしなければならないのはオブジェクトとプロパティを呼び出すことだけだとは思いませんでした。
$Websites = Get-ChildItem IIS:\Sites
foreach($Site in $Websites)
{
$webapps = Get-WebApplication -Site $Site.name
$VDir = Get-WebVirtualDirectory -Site $Site.name #-Application $webapps.name
foreach($webvdirectory in $VDir)
{
$webvdirectory2 = $webvdirectory.path
Write-Host $webvdirectory2.split("/")[-1] "::: is the Virtual Directory" -ForegroundColor Green
Write-Host $webvdirectory.physicalPath
Write-Host $webvdirectory.userName
Write-Host $webvdirectory.password
Write-Host $webvdirectory.logonMethod
}
#Write-Host $VDir
}
また、別の問題があり、答えがあるかどうかわからなかった場合、Webアプリケーションの物理パスの資格情報プロパティを呼び出すにはどうすればよいですか?ユーザー名またはパスワードを出力できませんが、同じプロパティを使用するlogonMethodを出力できますか?以下は、私のWebアプリケーション用のコードです。これは、仮想ディレクトリのコードと非常によく似ています。
$Websites = Get-ChildItem IIS:\Sites
foreach($Site in $Websites)
{
$webapps = Get-WebApplication -Site $Site.name
foreach($webapp in $webAPPS)
{
Write-Host $webapp.applicationPool
Write-Host $WebApp.virtualDirectoryDefaults.userName
Write-Host $webapp.virtualDirectoryDefaults.password
Write-Host $webapp.virtualDirectoryDefaults.logonMethod
$webapp2 = $webapp.path
Write-Host $WebApp2.split("/")[-1] "::: is the Web Application" -ForegroundColor Green
}
}
これにより、サイト名、仮想ディレクトリ名、および仮想ディレクトリの物理パスを含むアレイが作成されます。
$SiteVirtualDirectories = @()
$Sites = gci IIS:\Sites
foreach($Site in $Sites)
{
$VirtualDirectories = gci "IIS:\Sites\$($Site.Name)" | ?{$_.NodeType -match "virtualDirectory"}
foreach($VirtualDirectory in $VirtualDirectories)
{
$SiteVirtualDirectories += @([pscustomobject]@{Site=$Site.Name;VirtualDirectory=$VirtualDirectory.Name;PhysicalPath=$VirtualDirectory.PhysicalPath})
}
}
Write-Host $SiteVirtualDirectories