# =====================
# Skrypt IIS: Tworzenie witryn
# (C) dr Holger Schwichtenberg
# =====================

# === Pobierz obiekt WMI z szyfrowaniem DCOM
Function Get-WMIObjectEx($ObszarNazw, $Ścieżka)
{
#Write-Host $ObszarNazw $Ścieżka
$połączenie = New-Object System.Management.ConnectionOptions
$połączenie.Authentication = [System.Management.AuthenticationLevel]::PacketPrivacy
$zakres = New-Object System.Management.ManagementScope($ObszarNazw, $połączenie)
$Ścieżka = New-Object System.Management.ManagementPath($Ścieżka)
$GetOptions = New-Object System.Management.ObjectGetOptions
$WMI = New-Object System.Management.ManagementObject($zakres,$Ścieżka,$GetOptions)
return $WMI
}

# === Pobierz klasę WMI z szyfrowaniem DCOM
Function Get-WMIClassEx($ObszarNazw, $Ścieżka)
{
Write-Host $ObszarNazw $Ścieżka
$połączenie = New-Object System.Management.ConnectionOptions
$połączenie.Authentication = [System.Management.AuthenticationLevel]::PacketPrivacy
$zakres = New-Object System.Management.ManagementScope($ObszarNazw, $połączenie)
$Ścieżka = New-Object System.Management.ManagementPath($Ścieżka)
$GetOptions = New-Object System.Management.ObjectGetOptions
return New-Object System.Management.ManagementClass($zakres,$Ścieżka,$GetOptions)
}

# === Tworzenie witryny
function New-IISVirtWeb ([string]$Komputer, [string]$Nazwa, [string]$IP, [string]$Port, [string]$NazwaStacji, [string]$KatalogGłówny) 
{
$ObszarNazw = "\\"  + $Komputer + "\root\MicrosoftIISv2"
$Ścieżka1 = $ObszarNazw + ":ServerBinding"
$Ścieżka2 = $ObszarNazw + ":IIsWebService='W3SVC'"


# Tworzenie powiązania
$klasa = Get-WMIClassEx $ObszarNazw $Ścieżka1
$powiązanie = $klasa.CreateInstance()
$powiązanie.IP = $IP
$powiązanie.Port = $Port 
$powiązanie.Hostname = $NazwaStacji
[array] $powiązania = $powiązanie

# Tworzenie witryny
$UsługaWWW = Get-WMIObjectEx $ObszarNazw  $Ścieżka2
$Witryna = $UsługaWWW.CreateNewSite($Nazwa, $powiązania, $KatalogGłówny) 

Write-Host "Serwer" $Nazwa "utworzony na komputerze" $Komputer "!"
}


# --- Parametry
$Plik wejściowy = "c:\demo\WPS\B_IIS\serweryWWW.txt"
$Komputer = "E01"

# Odczytywanie pliku tekstowego i tworzenie serwerów
Get-Content $InputFile | Foreach-Object {
$a = $_.Split(";")
New-IISVirtWeb $Komputer  $a[0]  $a[1] $a[2] "" $a[3] 
}
