zoukankan      html  css  js  c++  java
  • Powershell的IIS管理小结

    现在微软是积极地拥抱Linux,并推出了net core,服务器也提供无UI的版本,提高服务器的性能。
    很多云平台也提供了无UI版本的windows服务器,所以IIS的命令管理已经非常的重要了。
    在网上找了半天没有很好的教程,那就自己写一份吧,以后就不用再整理相关知识了,直接看这篇文章应该就可以了。
    独乐乐不如众乐乐,也分享给大家。

    目录:

    1. Powershell对app pool管理
    2. Powershell对web sites管理
    3. Powershell对applications管理
    4. Powershell对Virtual Directory管理
    5. Powershell对IIS的一些其他管理
    6. 本文参考的网上资料

    准备环境:

    powershell
    Import-Module WebAdministration

    1. Powershell对app pool管理
    1.1 查看: 

    Get-ChildItem –Path IIS:AppPools
    Get-ItemProperty –Path IIS:AppPoolsMyAppPool | select *
    Get-WebAppPoolState MyAppPool
    try{
        $list = @()
        foreach ($webAppPool in get-childitem IIS:AppPools)
        {
            $name = "IIS:AppPools" + $webapp.name
            $item = @{}
            $IISPoolPath = "IIS:AppPools" + $webAppPool.name
            $item.WebAppPoolName = $webAppPool.name
            $item.IISPoolPath = $IISPoolPath
            $item.Version = (Get-ItemProperty $name managedRuntimeVersion).Value
            $item.State = (Get-WebAppPoolState -Name $webAppPool.name).Value
            $item.UserIdentityType = $webAppPool.processModel.identityType
            $item.Username = $webAppPool.processModel.userName
            $item.Password = $webAppPool.processModel.password
    
            $obj = New-Object PSObject -Property $item
            $list += $obj
        }
    
        $list | Format-Table -a -Property "WebAppPoolName", "IISPoolPath", "Version", "State", "UserIdentityType", "Username", "Password"
    
    }catch
    {
        $ExceptionMessage = "Error in Line: " + $_.Exception.Line + ". " + $_.Exception.GetType().FullName + ": " + $_.Exception.Message + " Stacktrace: " + $_.Exception.StackTrace
        $ExceptionMessage
    }

    1.2 新建:

    New-Item –Path IIS:AppPoolsMyAppPool

    1.3 停止:

    Stop-WebAppPool -Name MyAppPool

    1.4 运行:

    Start-WebAppPool -Name MyAppPool

    1.5 重启:

    ReStart-WebAppPool -Name MyAppPool

    1.6 编辑属性:

    Get-ItemProperty –Path IIS:AppPoolsMyAppPool | select *
    Set-ItemProperty -Path IIS:AppPoolsMyAppPool -Name managedRuntimeVersion -Value v4.0

    1.7 重命名:

    Set-ItemProperty -Path IIS:AppPoolsMyAppPool -Name name -Value MyAppPool2
    Set-ItemProperty -Path IIS:AppPoolsMyAppPool2 -Name name -Value MyAppPool

    1.8 移除:

    Remove-WebAppPool -Name MyAppPool

    2. Powershell对web sites管理
    2.1 查看:

    get-childitem -path IIS:
    Get-IISSite
    Get-IISSite MyWebApp
    Get-Website
    Get-Website MyWebApp
    Get-Website –Name MyWebApp
    get-Item IIS:SitesMyWebApp
    Get-ItemProperty –Path IIS:SitesMyWebApp | select *
    try{
        $allWebSites = Get-Website
        $websitelist=@()
        foreach($website in $allWebSites){
            $websitepath="IIS:sites"+$website.Name
            $siteItem = @{}
            $siteItem.SiteName = $website.Name
            $siteItem.AppPool = (Get-ItemProperty $websitepath | select *).applicationPool
            $siteItem.ElementTagName = (Get-ItemProperty $websitepath | select *).ElementTagName
            $obj = New-Object PSObject -Property $siteItem
            $websitelist += $obj
        }
        $websitelist | Format-Table -a -Property "SiteName", "AppPool", "ElementTagName"
    }catch
    {
        $ExceptionMessage = "Error in Line: " + $_.Exception.Line + ". " + $_.Exception.GetType().FullName + ": " + $_.Exception.Message + " Stacktrace: " + $_.Exception.StackTrace
        $ExceptionMessage
    }

    2.2 新建:

    New-Website –Name MyWebApp –PhysicalPath D:apidd

    2.3 停止:

    Stop-Website –Name MyWebApp

    2.4 运行:

    Start-Website –Name MyWebApp

    2.5 重启:

    Stop-Website –Name MyWebApp
    Start-Website –Name MyWebApp

    2.6 绑定:

    Get-Website -Name MyWebApp
    Get-WebBinding -Name MyWebApp
    (Get-Website -Name MyWebApp).bindings.Collection
    Set-WebBinding -Name 'MyWebApp' -BindingInformation "*:80:" -PropertyName Port -Value 81
    New-WebBinding -Name MyWebApp -Protocol http -Port 82
    //SSL bindings ??不确定
    get-childItem IIS:SslBindings
    $cert = Get-ChildItem cert:localmachinemy
    $bindingInfo = "IIS:SSLBindings*!445"
    $cert | Set-Item -Path $bindingInfo

    2.7 编辑属性:

    Get-ItemProperty –Path IIS:SitesMyWebApp | select *
    Set-ItemProperty -Path IIS:SitesMyWebApp -Name enabledProtocols -Value http

    2.8 重命名:

    Rename-Item 'IIS:SitesMyWebApp' 'MyWebApp2'

    2.9 移除:

    Remove-WebSite -Name MyWebApp2

    3. Powershell对applications管理
    3.1 查看:

    Get-WebApplication
    Get-WebApplication -Site MyWebApp
    Get-WebApplication -Site MyWebApp| select *
    Get-WebApplication -Name testApp
    Get-WebApplication -Name testApp| select *
    Get-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application" -Name *
    Get-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application" -Name path
    Get-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application" -Name path | select value

    3.2 新建:

    New-WebApplication -Name testApp -Site 'MyWebApp' -PhysicalPath D:apidd -ApplicationPool DefaultAppPool

    3.3 编辑:

    Set-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application[@path='/testApp']/virtualDirectory" -Name "physicalPath" -Value "D:apidd2"

    3.4 重命名:

    Set-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application[@path='/testApp']" -Name "path" -Value "/testApp2"

    3.5移除:

    Remove-WebApplication -Name testApp2 -Site "MyWebApp"

    4. Powershell对Virtual Directory管理
    4.1 查看:

    Get-WebVirtualDirectory -site 'MyWebApp'
    Get-WebVirtualDirectory -site 'MyWebApp' -Application 'MyApp'
    Get-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application[@path='/']/virtualDirectory" -Name *
    Get-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application[@path='/']/virtualDirectory[@path='/']" -Name *
    Get-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application[@path='/']/virtualDirectory[@path='/']" -Name physicalPath | select value

    4.2 新建:

    New-WebVirtualDirectory -Site "MyWebApp" -Name "ContosoVDir" -PhysicalPath "D:apidd2"
    New-WebVirtualDirectory -Site "MyWebApp" -Application 'MyApp' -Name "ContosoVDir" -PhysicalPath "D:apidd2"

    4.3 编辑:

    Set-WebConfigurationProperty -Filter "//sites/site[@name='MyWebApp']/application[@path='/']/virtualDirectory[@path='/']" -Name physicalPath -Value "D:apidd2"

    4.4 删除:

    Remove-WebVirtualDirectory -Site "MyWebApp" -Application "/" -Name "ContosoVDir"
    Remove-WebVirtualDirectory -Site "MyWebApp" -Application "MyApp" -Name "ContosoVDir"

    5. Powershell对IIS的一些其他管理
    5.1 查看PS的版本

    $PSVersionTable.psversion.Major

    5.2 判断当前用户是不是管理员

    function IsRunAsAdministrator {
        $wid=[System.Security.Principal.WindowsIdentity]::GetCurrent()
        $prp=new-object System.Security.Principal.WindowsPrincipal($wid)
        $adm=[System.Security.Principal.WindowsBuiltInRole]::Administrator
        $isAdmin=$prp.IsInRole($adm)
        return $isAdmin
    }

    5.3 把ASP.NET注册在IIS里

    function RegisterAspNet (){
        C:WindowsMicrosoft.NETFrameworkv4.0.30319aspnet_regiis /ir /enable
        C:WindowsMicrosoft.NETFramework64v4.0.30319aspnet_regiis /ir /enable
    }

    5.4 设置IIS里面的MIME

    function SetCustomMIME (){
        Add-webconfigurationproperty //staticContent -name collection -value @{fileExtension='.otf'; mimeType='application/octet-stream'}
    }

    5.5 设置Response header
      https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Add-custom-HTTP-786d9dd2

    6. 本文参考的网上资料
      https://docs.microsoft.com/en-us/powershell/module/webadminstration/?view=winserver2012-ps

    最后提一句Get-WebConfigurationProperty和Set-WebConfigurationProperty是非常强大的命令,需要配合IIS的配置文件进行使用。

    IIS的配置文件: C:WindowsSystem32inetsrvConfigapplicationHost.config

    谢谢观看!

  • 相关阅读:
    IK分词器插件
    倒排索引
    logstash-安装、基本使用、入门
    Anaconda使用-详解
    java之反射
    Java中级路线jdbc第一天
    Java字符串及字符串的常用方法知识点总结
    Java基本类型的类包装知识点总结
    Java Class类知识点总结
    java异常类知识点总结
  • 原文地址:https://www.cnblogs.com/lmfeng/p/10763547.html
Copyright © 2011-2022 走看看