Verwendung von $ site | Set-Item speichert die Änderungen nicht auf der IIS-Site

8

Ich bin dabei, einige automatisierte Skripte zu schreiben, um IIS-Sites auf einem Server mit PowerShell zu erstellen / zu aktualisieren.

Ziel ist es, ein Konfigurationsobjekt zu haben, das dann von einem einzigen Skript gehandhabt werden kann, um alle schweren Aufgaben zu erledigen.

Meine Konfiguration HashTable sieht folgendermaßen aus:

%Vor%

Mein Skript verwendet dann die Konfiguration, um jeden Anwendungspool und jede Website zu verarbeiten:

%Vor%

Wie Sie sehen, ist der Prozess praktisch identisch (abgesehen von den Artikelpfaden und dem Typ, der erstellt wird). Dies wird natürlich umgestaltet, wenn ich die Dinge zum Laufen bringe!

Ich habe eine Funktion namens Set-PropertiesFromHash geschrieben. Dies flacht die Hash-Tabelle im Grunde auf einen Eigenschaftspfad ab:

%Vor%

Die erzeugte scriptblock in der else -Klausel führt zur Ausführung von $on.ProcessModel.IdentityType = $properties.IdentityType (das Eigenschaftsobjekt in jeder Schleife ist der letzte gefundene HashTable-Wert, so dass dieser den richtigen Wert zugewiesen hat)

Die Frage

Immer noch hier? Danke!

Alle oben genannten Funktionen funktionieren wie erwartet für Anwendungspools, aber schlägt vollständig für Websites fehl . Warum funktioniert das nur bei Websites?

Ich weiß, dass ich Set-ItemProperty verwenden kann, aber das Ziel ist, dass das config-Objekt die Eigenschaften steuert, die gesetzt werden.

Ein einfacheres Beispiel ist unten aufgeführt:

%Vor%

Nachdem Set-Item aufgerufen wurde, werden die Elemente erneut abgerufen $ap hat den aktualisierten Wert, aber $site enthält den aktualisierten Wert nicht.

Ich verwende PowerShell v2 und IIS7

Partielle Auflösung ... mehr von einer Arbeit

Ich habe Set-PropertiesFromHash so geändert, dass es wie folgt funktioniert:

%Vor%

Was mir erlaubt hat, für jetzt fortzufahren. Aber meine ursprüngliche Frage steht immer noch.

Warum funktioniert $site | Set-Item für Websites nicht?

    
Kieranties 26.10.2012, 12:27
quelle

1 Antwort

1
___ qstnhdr ___ Verwendung von $ site | Set-Item speichert die Änderungen nicht auf der IIS-Site ___ tag123iis7 ___ IIS (Internetinformationsdienste) Version 7 - ist eine Webserveranwendung und eine Reihe von Funktionserweiterungsmodulen, die von Microsoft zur Verwendung mit Microsoft Windows erstellt wurden. Veröffentlicht mit Windows Server 2008 und Windows Vista. ___ qstntxt ___

Ich bin dabei, einige automatisierte Skripte zu schreiben, um IIS-Sites auf einem Server mit PowerShell zu erstellen / zu aktualisieren.

Ziel ist es, ein Konfigurationsobjekt zu haben, das dann von einem einzigen Skript gehandhabt werden kann, um alle schweren Aufgaben zu erledigen.

Meine Konfiguration %code% sieht folgendermaßen aus:

%Vor%

Mein Skript verwendet dann die Konfiguration, um jeden Anwendungspool und jede Website zu verarbeiten:

%Vor%

Wie Sie sehen, ist der Prozess praktisch identisch (abgesehen von den Artikelpfaden und dem Typ, der erstellt wird). Dies wird natürlich umgestaltet, wenn ich die Dinge zum Laufen bringe!

Ich habe eine Funktion namens %code% geschrieben. Dies flacht die Hash-Tabelle im Grunde auf einen Eigenschaftspfad ab:

%Vor%

Die erzeugte %code% in der %code% -Klausel führt zur Ausführung von %code% (das Eigenschaftsobjekt in jeder Schleife ist der letzte gefundene HashTable-Wert, so dass dieser den richtigen Wert zugewiesen hat)

Die Frage

Immer noch hier? Danke!

Alle oben genannten Funktionen funktionieren wie erwartet für Anwendungspools, aber schlägt vollständig für Websites fehl . Warum funktioniert das nur bei Websites?

Ich weiß, dass ich %code% verwenden kann, aber das Ziel ist, dass das config-Objekt die Eigenschaften steuert, die gesetzt werden.

Ein einfacheres Beispiel ist unten aufgeführt:

%Vor%

Nachdem %code% aufgerufen wurde, werden die Elemente erneut abgerufen %code% hat den aktualisierten Wert, aber %code% enthält den aktualisierten Wert nicht.

Ich verwende PowerShell v2 und IIS7

Partielle Auflösung ... mehr von einer Arbeit

Ich habe %code% so geändert, dass es wie folgt funktioniert:

%Vor%

Was mir erlaubt hat, für jetzt fortzufahren. Aber meine ursprüngliche Frage steht immer noch.

Warum funktioniert %code% für Websites nicht?

    
___ tag123powershellv20 ___ Themen und Probleme speziell für Windows PowerShell 2.0. PowerShell 2.0 wird mit den Versionen von Windows 7 und Windows Server 2008 R2 ausgeliefert. Verwenden Sie für allgemeine PowerShell-Themen das Tag "PowerShell". ___ tag123powershell ___ PowerShell ist ein Befehlszeilen- und Skriptprogramm für Windows. Verwenden Sie dieses Tag nur für Fragen zum Schreiben und Ausführen von PowerShell-Skripts. Programmierungsfragen speziell für die plattformübergreifende Version PowerShell Core (Windows, macOS, Linux) sollte mit [powershell-core] gekennzeichnet werden. Fragen zur Systemverwaltung sollten auf SuperUser gestellt werden. ___ antwort13235924 ___

Das scheint zu funktionieren

%Vor%     
___
quelle