【问题标题】:Powershell script to auto install of IIS 7 and above用于自动安装 IIS 7 及更高版本的 Powershell 脚本
【发布时间】:2012-05-09 18:46:52
【问题描述】:

我是 powershell 的新手。我需要的是一个可以自动安装IIS7或更高版本的powershell脚本。我要对角色服务进行某些配置。感谢您提供这方面的任何帮助。

【问题讨论】:

    标签: windows powershell iis-7 iis-7.5


    【解决方案1】:

    我发现以下博客很有用,通过使用帮助进行了某些更改,我能够使用自定义角色服务从 power 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
    

    【讨论】:

    • 注意:这仅适用于 Server 2008 R2。不是 R1(最后一个 32 位服务器操作系统和我正在使用的操作系统......)
    【解决方案2】:

    我可以通过以下步骤使用 powershell 脚本安装 IIS:

    1) 创建批处理文件 (Setup_IIS_win10.bat),其中包含以下脚本

    @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) 创建包含以下脚本的 powershell 脚本文件 (SetupIISPowerShellScript_win10.ps1)

    # 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) 以管理员权限运行批处理文件(Setup_IIS_win10.bat)

    希望它对某人有用。

    【讨论】:

      【解决方案3】:

      只需使用正确的包调用 pkgmgr:

      $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"
      

      根据您的平台和 IIS 版本,存在一些细微差别。你可以找到更多信息hereherehere

      【讨论】:

      • 不适用于 Windows 8.1。 Pkgmgr 在此系统中已过时。
      【解决方案4】:

      这是一个不错的脚本。我建议为将来的安装\应用程序添加一个使用修改后的wwwpath,那就是修改注册表。 您可以通过将其添加到脚本底部轻松地做到这一点:

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

      无论如何感谢您的发帖。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 2015-11-15
        • 1970-01-01
        • 1970-01-01
        • 2017-05-06
        • 1970-01-01
        相关资源
        最近更新 更多