2012-05-09 10 views

Respuesta

17

He encontrado el blog siguiente útil, con ciertos cambios de uso de la ayuda yo era capaz de instalar IIS desde la cáscara de alimentación con función personalizada services.I tener el código aquí y el enlace al blog es:

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 
+1

Nota: Esto solo funcionará en Server 2008 R2. No R1 (el último sistema operativo del servidor de 32 bits y el que estoy en ...) –

2

Es sólo una cuestión de llamar pkgmgr con los paquetes correctos:

$packages = "IIS-WebServerRole;" + 
    "IIS-WebServer;" + 
    "IIS-CommonHttpFeatures;" + 
    "IIS-StaticContent;" + 
    "IIS-DefaultDocument;" + 
#  ... some other packages here 
    "IIS-ManagementConsole;" + 
    "IIS-ManagementService;" + 
    "IIS-LegacySnapIn;" + 
    "IIS-FTPManagement;" + 
    "WAS-NetFxEnvironment;" + 
    "WAS-ConfigurationAPI" 

Start-Process "pkgmgr" "/iu:$packages" 

Dependiendo de la plataforma, y ​​en la versión de IIS, hay algunas diferencias sutiles. Puede encontrar más información here, here y here.

+0

No funciona en Windows 8.1. Pkgmgr es obsoleto en este sistema. – pbies

1

Este es un buen script. Sugeriría una adición para futuras instalaciones \ aplicaciones para usar el wwwpath modificado y eso sería modificar el registro. Usted puede hacer esto fácilmente con la adición de este a la parte inferior de la secuencia de comandos:

set-ItemProperty HKLM:\Software\Microsoft\InetStp\ -Name PathWWWRoot -Value $InetPubRoot 

De todos modos gracias por publicar.

0

puedo capaz de instalar IIS mediante secuencias de comandos PowerShell siguiendo a continuación paso:

1) Crear archivo por lotes (Setup_IIS_win10.bat) con el siguiente script en ella

@ECHO OFF 
SET ThisScriptsDirectory=%~dp0 
SET PowerShellScriptPath="%ThisScriptsDirectory%SetupIISPowerShellScript_win10.ps1" 
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ""%PowerShellScriptPath%""' -Verb RunAs}"; 

2) Crear un archivo de script de PowerShell (SetupIISPowerShellScript_win10.ps1) con el siguiente script en ella

# This script installs IIS and the features required to run asp.net applications 

# * Make sure you run this script from an Admin Prompt! 
# * Make sure Powershell Execution Policy is bypassed to run these scripts: 
# * YOU MAY HAVE TO RUN THIS COMMAND PRIOR TO RUNNING THIS SCRIPT! 
Set-ExecutionPolicy Bypass -Scope Process 

Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServer 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-CommonHttpFeatures 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpErrors 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpRedirect 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationDevelopment 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-NetFxExtensibility45 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HealthAndDiagnostics 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpLogging 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-LoggingLibraries 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-RequestMonitor 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpTracing 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-Security 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-RequestFiltering 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-Performance 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerManagementTools 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-IIS6ManagementCompatibility 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-Metabase 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ManagementConsole 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-BasicAuthentication 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WindowsAuthentication 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-StaticContent 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-DefaultDocument 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebSockets 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ApplicationInit 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-NetFxExtensibility45 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET45 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ISAPIExtensions 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ISAPIFilter 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpCompressionStatic 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASP 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-CGI 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET35 
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ASPNET47 
#Enable-WindowsOptionalFeature -Online -FeatureName IIS-ServerSideIncludes 
Enable-WindowsOptionalFeature -Online -FeatureName WCF-Services45 
Enable-WindowsOptionalFeature -Online -FeatureName WCF-Http-Activation45 
Enable-WindowsOptionalFeature -Online -FeatureName WCF-TCP-PortSharing45 
# If running in the console, wait for input before closing. 
if ($Host.Name -eq "ConsoleHost") 
{ 
    Write-Host "Press any key to close..." 
    $Host.UI.RawUI.FlushInputBuffer() # Make sure buffered input doesn't "press a key" and skip the ReadKey(). 
    $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyUp") > $null 
} 

3) Ejecutar el archivo por lotes (Setup_IIS_win10.bat) con adminitrator privilegio

Espero que sea útil para alguien.

Cuestiones relacionadas