Dies ist das erste, was ich je mit PowerShell gemacht habe. Der Kern des Skripts besteht darin, einige grundlegende Einstellungen für die Installation meines Firmen-Webservers vorzunehmen. Grundsätzlich sollte esPowershell Probleme mit App-Pool-Neustart Zeitplan
- Nehmen Sie eine Liste von Namen
- Sie einen Benutzer mit diesem Namen
- configure Benutzer machen einen Ordner mit diesem Namen
- einen Anwendungspool machen mit diesem Namen
- Set Anwendungspool Eigenschaften
- Satz Ordner-Berechtigungen für eine Gruppe
T Der Code ist unten.
Import-Module WebAdministration
#$apps = @('H','N1','N2')
foreach ($app in $apps){
## I need to check for if a user exists first
NET USER $app "password" /ADD
NET LOCALGROUP "iis_iusrs" $app /ADD
WMIC USERACCOUNT WHERE "Name=$app" SET PaswordExpires=False
#See if the application's folder exists
if (!(Test-Path("C:\inetpub\wwwroot\"+$app)))
{
New-Item -ItemType Directory -Force -Path C:\inetpub\wwwroot\$app
}
## See if the application Pool exists. If it doesn't then create it
if (!(Test-Path("IIS:\AppPools\"+$app)))
{
$appPool = New-Item ("IIS:\AppPools\"+$app)
$appPool.ProcessModel.identityType = 3
$appPool.ProcessModel.userName=$app
$appPool.ProcessModel.password="password"
$appPool.ProcessModel.idleTimeout=[TimeSpan]::FromMinutes(0)
$appPool.processModel.loadUserProfile="True"
$appPool.recycling.disallowOverlappingRotation = "True"
$appPool.recycling.disallowRotationOnConfigChange = "True"
$appPool.recycling.periodicRestart.time = [TimeSpan]::FromMinutes(0)
$appPool | Set-Item
$propPath = "IIS:\AppPools\"+$appPool
New-ItemProperty -Path $propPath -Name recycling.periodicRestart.schedule -Value @{value="00:06:00"}
}
}
$webserver = Hostname
if(!(Test-Path("C:\"+$webserver)))
{
$hostserver = Read-Host "What is the host server's name?"
New-Item -ItemType Directory -Force -Path C:\$webserver\$hostserver
}
if(!(Test-Path('C:\Temp')))
{
New-Item -ItemType Directory -Force -Path C:\Temp
}
$Acl_inetpub = Get-Acl C:\inetpub
$Acl_temp = Get-Acl C:\Temp
$Acl_windows_temp = Get-Acl C:\Windows\Temp
$Ar_iis = New-Object System.Security.AccessControl.FileSystemAccessRule(".\iis_iusrs","FullControl","ContainerInherit,ObjectInherit","None","Allow")
$Ar_users = New-Object System.Security.AccessControl.FileSystemAccessRule(".\users","FullControl","ContainerInherit,ObjectInherit","None","Allow")
$Acl_inetpub.SetAccessRule($Ar_iis)
$Acl_inetpub.SetAccessRule($Ar_users)
$Acl_temp.SetAccessRule($Ar_iis)
$Acl_temp.SetAccessRule($Ar_users)
$Acl_windows_temp.SetAccessRule($Ar_iis)
$Acl_windows_temp.SetAccessRule($Ar_users)
Set-Acl C:\inetpub $Acl_inetpub
Set-Acl C:\temp $Acl_temp
Set-Acl C:\Windows\Temp $Acl_windows_temp
Mein Problem ist derzeit.
$propPath = "IIS:\AppPools\"+$appPool
New-ItemProperty -Path $propPath -Name recycling.periodicRestart.schedule -Value @{value="00:06:00"}
ich einen Pfad Fehler, wenn ich das laufen, aber ich bin nicht sicher, wo der Fehler herkommt. Gibt es auch eine Möglichkeit, dasselbe zu tun, aber nur das Objekt zu verwenden, wie ich es bei den restlichen Einstellungen getan habe? Bisher habe ich noch keinen Weg gefunden, dies zu tun.
Haben Sie versucht, $ propPath zwischen diese beiden Zeilen zu setzen, um zu sehen, welcher Pfad an die Konsole zurückgegeben wird? –
Ja, das führte zu meiner Lösung .... Ich musste es nur ein paar Mal anschauen, um zu sehen, was ausgegeben wurde. –