我发现以下博客很有用,从使用帮助的某些更改,我能够从电源shell安装IIS与自定义角色服务.我有代码在这里和博客的链接是:
http://www.ithassle.nl/2010/09/powershell-script-to-install-and-configure-iis7-5/#codesyntax_1
# -------------------------------------------------------------------- # Checking Execution Policy # -------------------------------------------------------------------- #$Policy = "Unrestricted" $Policy = "RemoteSigned" If ((get-ExecutionPolicy) -ne $Policy) { Write-Host "Script Execution is disabled. Enabling it now" Set-ExecutionPolicy $Policy -Force Write-Host "Please Re-Run this script in a new powershell enviroment" Exit } # -------------------------------------------------------------------- # Define the variables. # -------------------------------------------------------------------- $InetPubRoot = "D:\Inetpub" $InetPubLog = "D:\Inetpub\Log" $InetPubWWWRoot = "D:\Inetpub\WWWRoot" # -------------------------------------------------------------------- # Loading Feature Installation Modules # -------------------------------------------------------------------- Import-Module ServerManager # -------------------------------------------------------------------- # Installing IIS # -------------------------------------------------------------------- Add-WindowsFeature -Name Web-Common-Http,Web-Asp-Net,Web-Net-Ext,Web-ISAPI-Ext,Web-ISAPI-Filter,Web-Http-Logging,Web-Request-Monitor,Web-Basic-Auth,Web-Windows-Auth,Web-Filtering,Web-Performance,Web-Mgmt-Console,Web-Mgmt-Compat,RSAT-Web-Server,WAS -IncludeAllSubFeature # -------------------------------------------------------------------- # Loading IIS Modules # -------------------------------------------------------------------- Import-Module WebAdministration # -------------------------------------------------------------------- # Creating IIS Folder Structure # -------------------------------------------------------------------- New-Item -Path $InetPubRoot -type directory -Force -ErrorAction SilentlyContinue New-Item -Path $InetPubLog -type directory -Force -ErrorAction SilentlyContinue New-Item -Path $InetPubWWWRoot -type directory -Force -ErrorAction SilentlyContinue # -------------------------------------------------------------------- # Copying old WWW Root data to new folder # -------------------------------------------------------------------- $InetPubOldLocation = @(get-website)[0].physicalPath.ToString() $InetPubOldLocation = $InetPubOldLocation.Replace("%SystemDrive%",$env:SystemDrive) Copy-Item -Path $InetPubOldLocation -Destination $InetPubRoot -Force -Recurse # -------------------------------------------------------------------- # Setting directory access # -------------------------------------------------------------------- $Command = "icacls $InetPubWWWRoot /grant BUILTIN\IIS_IUSRS:(OI)(CI)(RX) BUILTIN\Users:(OI)(CI)(RX)" cmd.exe /c $Command $Command = "icacls $InetPubLog /grant ""NT SERVICE\TrustedInstaller"":(OI)(CI)(F)" cmd.exe /c $Command # -------------------------------------------------------------------- # Setting IIS Variables # -------------------------------------------------------------------- #Changing Log Location $Command = "%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/sites -siteDefaults.logfile.directory:$InetPubLog" cmd.exe /c $Command $Command = "%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralBinaryLogFile.directory:$InetPubLog" cmd.exe /c $Command $Command = "%windir%\system32\inetsrv\appcmd set config -section:system.applicationHost/log -centralW3CLogFile.directory:$InetPubLog" cmd.exe /c $Command #Changing the Default Website location Set-ItemProperty 'IIS:\Sites\Default Web Site' -name physicalPath -value $InetPubWWWRoot # -------------------------------------------------------------------- # Checking to prevent common errors # -------------------------------------------------------------------- If (!(Test-Path "C:\inetpub\temp\apppools")) { New-Item -Path "C:\inetpub\temp\apppools" -type directory -Force -ErrorAction SilentlyContinue } # -------------------------------------------------------------------- # Deleting Old WWWRoot # -------------------------------------------------------------------- Remove-Item $InetPubOldLocation -Recurse -Force # -------------------------------------------------------------------- # Resetting IIS # -------------------------------------------------------------------- $Command = "IISRESET" Invoke-Expression -Command $Command