Ich habe eine IIS 8-Website mit einer darin enthaltenen Anwendung eingerichtet.
Wie kann ich mithilfe von Powershell die Einstellung „Anmeldetyp für physische Pfadanmeldeinformationen“ (standardmäßig ClearText) sowohl für die Hauptseite als auch für die Anwendung erhalten?
Was ich versucht habe,
Richten Sie für jede Anwendung einen bestimmten Benutzer und einen nicht standardmäßigen „Anmeldetyp“ ein.
(get-item IIS:\Sites\MYSITE).physicalPath
(get-item IIS:\Sites\MYSITE).username
(get-item IIS:\Sites\MYSITE).password
Ich erhalte genau die Werte, die ich erwarten würde, aber es ist keine Eigenschaft „Anmeldetyp“ verfügbar.
(get-item IIS:\Sites\MYSITE).virtualDirectoryDefaults
Zeigt Pfad, physischen Pfad, Benutzernamen und Kennwort alle leer an und hat für „Anmeldemethode“ den Standardwert „Klartext“ festgelegt.
(get-item IIS:\Sites\MYSITE).Collection[0].virtualDirectoryDefaults
Und
(get-item IIS:\Sites\MYSITE).Collection[1].virtualDirectoryDefaults
beide zeigen das Gleiche an, Pfad, physischer Pfad, Benutzername und Passwort sind alle leer und die „Anmeldemethode“ ist auf den Standardwert „Klartext“ eingestellt.
Der Grund, warum ich dies möchte, besteht darin, einem Skript eine Prüfung hinzuzufügen, die sicherstellt, dass Sites eine „Einstellungsprüfliste“ erfüllen, wobei ich alle anderen Einstellungen aus Powershell zuordnen konnte.
Antwort1
Die Lösung besteht darin, von derWebAdministrationModul und inMicrosoft.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
kehrt zurück
ClearText
Die Anwendungen[1] geben die zweite Anwendung an, Anwendungen[0] ist die Stammanwendung.
DerAdd-TypDie Version ist wichtig, um ein Laden der IIS-Express-Serverinstanz zu vermeiden.
Zu Ihrer Information: Da Sie eine Instanz des Servers erstellen müssen, sind alle Änderungen im IIS-Manager erst verfügbar, wenn Sie das Objekt neu erstellen.
Antwort2
Ich glaube, Sie sind bereits auf die Antwort gestoßen. Es scheint keine explizite Eigenschaft dafür zu geben, da die angegebenen Anmeldeinformationen nur zum Überschreiben der normalen Thread-Anmeldeinformationen verwendet werden.
Sie können jedoch überprüfen, ob der Benutzername oder das Passwort festgelegt sind und eine Funktion wie diese erstellen
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
Antwort3
Im Folgenden werden der physische Pfad des virtuellen Verzeichnisses und die Anmeldemethode zurückgegeben. Ich bin zuversichtlich, dass dies so durchgeführt werden kann, dass Sie ein bestimmtes „Anwendungsverzeichnis“ ansprechen können.
Get-Item IIS:\Sites\* | Select-Object -ExpandProperty Collection | Select-Object -ExpandProperty Collection | Select-Object -Property physicalPath,logonMethod