![サイトとアプリケーションの「物理パス資格情報ログオン タイプ」を取得するにはどうすればよいですか?](https://rvso.com/image/668794/%E3%82%B5%E3%82%A4%E3%83%88%E3%81%A8%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%80%8C%E7%89%A9%E7%90%86%E3%83%91%E3%82%B9%E8%B3%87%E6%A0%BC%E6%83%85%E5%A0%B1%E3%83%AD%E3%82%B0%E3%82%AA%E3%83%B3%20%E3%82%BF%E3%82%A4%E3%83%97%E3%80%8D%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
アプリケーションを内蔵した IIS 8 Web サイトをセットアップしました。
Powershell を使用して、メイン サイトとアプリケーションの両方で「物理パス資格情報のログオン タイプ」設定 (デフォルトは ClearText) を取得するにはどうすればよいですか?
私が試したことは、
各アプリケーションに対して特定のユーザーとデフォルト以外の「ログオン タイプ」を設定します。
(get-item IIS:\Sites\MYSITE).physicalPath
(get-item IIS:\Sites\MYSITE).username
(get-item IIS:\Sites\MYSITE).password
期待どおりの値が取得されますが、「ログオン タイプ」プロパティは使用できません。
(get-item IIS:\Sites\MYSITE).virtualDirectoryDefaults
パス、physicalPath、ユーザー名、パスワードがすべて空白で、「logonMethod」がデフォルトの「ClearText」として設定されています。
(get-item IIS:\Sites\MYSITE).Collection[0].virtualDirectoryDefaults
そして
(get-item IIS:\Sites\MYSITE).Collection[1].virtualDirectoryDefaults
どちらも同じで、パス、physicalPath、ユーザー名、パスワードはすべて空白で、「logonMethod」はデフォルトの「ClearText」に設定されています。
これが必要な理由は、サイトが「設定チェックリスト」を満たしていることを確認するチェックをスクリプトに追加するためです。これにより、PowerShell から他のすべての設定をマップできるようになりました。
答え1
解決策は、Web管理モジュールとMicrosoft.Web.Administration.ServerManager
Add-Type -AssemblyName "Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"
$iis = new-object Microsoft.Web.Administration.ServerManager
($iis.Sites | where { $_.name -eq "MYSITE" }).applications[1] | select -ExpandProperty VirtualDirectories | select LogonMethod
戻り値
ClearText
applications[1]は2番目のアプリケーションを示し、applications[0]はルートアプリケーションです。
の追加タイプIIS-Express サーバー インスタンスのロードを回避するには、バージョンが重要です。
ちなみに、サーバーのインスタンスを作成する必要があるため、そのオブジェクトを再作成するまで IIS マネージャーでの変更は利用できません。
答え2
すでに答えを見つけたと思います。指定された資格情報は、通常のスレッド資格情報を上書きするために使用されるだけなので、これには明示的なプロパティはないようです。
ただし、ユーザー名やパスワードが設定されているかどうかを確認し、次のような関数を作成することができます。
function Get-PhysicalLogonType ($site) {
if($site.username -eq '' -and $site.password -eq '') {
return 'PassThrough'
}
return 'SpecificUser'
}
# ... use it somewhere in your script
$site = (get-item IIS:\site\mysite)
Get-PhysicalLogonType $site
答え3
以下は、VirtualDirectory の physicalPath と logonMethod を返します。特定の「アプリケーション ディレクトリ」をターゲットにできるような方法で実行できると確信しています。
Get-Item IIS:\Sites\* | Select-Object -ExpandProperty Collection | Select-Object -ExpandProperty Collection | Select-Object -Property physicalPath,logonMethod