Přejít k obsahu webu
4.3.2020 / kaldy123

IIS Virtual Directory na core serveru.

Core IIS server sice lze pohodlně spravovat z remote IIS konzoly, nicméně, ale pokud máte virtuálních adresářů povícero a navíc, pokud máte farmu IIS serverů – je to k uklikání.
Dobře, máme powershell, ale ouha! Pokud se podíváte na parametry New-WebVirtualDirectory,  je zřejmé, že máme problém se zadáním pověření (credentials). A to může být docela problém, zejména, pokud máte virtuální adresáře na sdílených adresářích (shares).

New-WebVirtualDirectory [-Site <String>] [-Application <String>] [-Name] <String> [-PhysicalPath <String>] [-Force] [<CommonParameters>]

V tomto příspěvku uvádím tedy nástin PS příkazů, jak co nejvíce zautomatizovat řešení popsaného problému.

Zavedení modulu WebAdministration.

Abychom mohli s IIS dobře pracovat, zavedeme tento modul. Jeho nepřítomnost například zjistíme velmi rychle absencí PoverShell drive provideru IIS: .

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.

Try the new cross-platform PowerShell https://aka.ms/pscore6

PS C:\WINDOWS\system32> Import-Module WebAdministration
PS C:\WINDOWS\system32>

Vytvoření virtuálních adresářů

Pro jednoduchost uvádím 3 servery, na kterých máme share szar. Virtuální adresář bude mít vždy jméno serveru a bude ukazovat do zmíněného share.

PS C:\>
PS C:\> $servery='server1','server2','server3'
PS C:\> $servery|% {New-WebVirtualDirectory -site status.domena.cz -Name $_ -PhysicalPath ('\\' + $_ +'.domena.cz\szar') -force}

Name    PhysicalPath
----    ------------
server1 \\server1.domena.cz\szar
server2 \\server2.domena.cz\szar
server3 \\server3.domena.cz\szar

Použití parametru -force je na tomto místě docela kruciální. Příkaz se snaží po zadání validovat zadanou cestu, nicméně pracuje v lokálním kontextu a jaxi se mu to nepovede. Zadání pověření (credentials) v tomto kroku není možné – takže je potřebné validaci parametru nějako obejít. Parametr -force vynutí založení adreáře, i kdzž cesta je neplatná.

Doplnění credentials.

Toto provedeme nastavením vlastností na Power Shell drivu IIS: . Protože nemáme specializované parametry pro položku virtuálního adresáře, řešíme toto konstruktem, kdy zadáváme dvojici jmého_vlastnosti – hodnota_vlastnosti. Protože virtuální adresáře mají v tomto příkladě jména shodná se servery, do kterých ukazují, jedním příkazem nastavíme pro všechny 3 adresáře uživatelské jméno a druhým pro všechny 3 adresáře heslo. Jméno: potřebujeme doménového uživatele, anžto lezeme na sdílené adresáře v síti. Heslo se zadává kupodivu v otevřeném textu, ale v systému se ukládá šifrovaně.
(Soubor ApplicationHost.config)

PS C:\> $servery|% {Set-ItemProperty -Path ('iis:\sites\status.domena.cz\' + $_) -Name userName -Value domena\bfu}
PS C:\> $servery|% {Set-ItemProperty -Path ('iis:\sites\status.domena.cz\' + $_) -Name password -Value Pa55w.rd}

Právě fakt, že hesla jsou v systému uložená šifrovaně, zcela znemožňuje replikaci definic virtuáních adresářů prostou editací souboru ApplicationHost.config. Za zkušenost zaplatíte restartem webového serveru, ve kterém musíte odstranit ony zkopírované řádky konfiguračného souboru. Pouhý restart nestačí: odpálí se tam nějaká služba, ale která – to jsem nezjistil.

Poznámka 1.

Celý tento postup byl laděn a zkoušen na Microsoft Windows Serveru 2019.

Poznámka 2.

Někdy mám pocit, že některé týmy vývojářů na Microsoftu – jako by byly z jiné planety. Nechodí vám příkazy Set-ItemProperty tak, jak je popsáno v příkladu? Jasně: Set-It…. …password je v cajku, ale Set-It… …username vám nechodí a nechodí! Zkuste tedy jako jméno property userName – kapišto? Fakt. Jsme u Microsoftu a ono je to Case-Sensitive ! To je podobné jako u zadání hesla v otevřeném textu: v celém zbytku PowerShellu (pokud je mi známo) se používá formát hesla jako Secure.String …..

 

Zanechat odpověď

Vyplňte detaily níže nebo klikněte na ikonu pro přihlášení:

Logo WordPress.com

Komentujete pomocí vašeho WordPress.com účtu. Odhlásit /  Změnit )

Google photo

Komentujete pomocí vašeho Google účtu. Odhlásit /  Změnit )

Twitter picture

Komentujete pomocí vašeho Twitter účtu. Odhlásit /  Změnit )

Facebook photo

Komentujete pomocí vašeho Facebook účtu. Odhlásit /  Změnit )

Připojování k %s

%d blogerům se to líbí: