现在微软是积极地拥抱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:\AppPools\MyAppPool | 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:\AppPools\MyAppPool

1.3 停止:

Stop-WebAppPool -Name MyAppPool

1.4 运行:

Start-WebAppPool -Name MyAppPool

1.5 重启:

ReStart-WebAppPool -Name MyAppPool

1.6 编辑属性:

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

1.7 重命名:

Set-ItemProperty -Path IIS:\AppPools\MyAppPool -Name name -Value MyAppPool2
Set-ItemProperty -Path IIS:\AppPools\MyAppPool2 -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:\Sites\MyWebApp
Get-ItemProperty –Path IIS:\Sites\MyWebApp | 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:\localmachine\my
$bindingInfo = "IIS:\SSLBindings\*!445"
$cert | Set-Item -Path $bindingInfo

2.7 编辑属性:

Get-ItemProperty –Path IIS:\Sites\MyWebApp | select *
Set-ItemProperty -Path IIS:\Sites\MyWebApp -Name enabledProtocols -Value http

2.8 重命名:

Rename-Item 'IIS:\Sites\MyWebApp' '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:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis /ir /enable
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_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:\Windows\System32\inetsrv\Config\applicationHost.config

谢谢观看!

Powershell的IIS管理小结的更多相关文章

  1. Servant:基于Web的IIS管理工具

    Servant for IIS是个管理IIS的简单.自动化的Web管理工具.安装Servant的过程很简单,只要双击批处理文件Install Servant Service.bat,然后按照屏幕上的说 ...

  2. 利用IIS管理器模拟CDN

    CDN(Content Delivery Network,内容分发网络).其含义,在百度百科上是这么写的:CDN 是构建在数据网络上的一种分布式的内容分发网.CDN 的作用是采用流媒体服务器集群技术, ...

  3. IIS服务器运行一段时间后卡死,且无法打开网站(IIS管理无响应,必须重启电脑)

    问题描述: 公司希望使用IIS配合网站显示一些订单跟进的情况并展示出来,所以我们在一台演示的Win7 Pro电脑上安装了IIS,但使用了一段时间后发现每过几天页面就无法正常访问了,而且打开IIS管理器 ...

  4. Win10如何开启IIS服务以及如何打开IIS管理器

    一.开启IIS服务 1.右键点击开始菜单或者使用“win+x”组合键,如然后选择“控制面板”,下如: 2.再控制面板中选择“程序”-->“启动或关闭windows功能”,在弹出的对话框中勾选如下 ...

  5. 如何在IIS7上配置 FTP7并使用IIS管理凭据方式进行验证?

    如何在IIS7上配置 FTP7并使用IIS管理凭据方式进行验证? 在 Windows Server 2008 R2 发布后,gOxiA 就开始着手于相关的测试和评估.IIS 是重点测试和评估之一!而今 ...

  6. [转] windows7 IIS管理器 在计算机“.”上没有找到WAS服务

    原文地址:windows7 IIS管理器 在计算机"."上没有找到WAS服务作者:云中的风 OS:windows7旗舰版 产生问题原因:运行金蝶K3-HR时客户端提示中间层服务器不 ...

  7. PowerShell 导出SharePoint管理中心解决方式

    PowerShell 导出SharePoint管理中心解决方式         SharePoint QQ群有人问能不能下载(导出)管理中心里的解决方式.由于在管理中心中点击解决方式会进入还有一个页面 ...

  8. win7 IIS7.0 【IIS 管理器无法验证此内置帐户是否有访问权】

    异常信息: 服务器配置为将传递身份验证和内置帐户一起使用,以访问指定的物理路径.但是,IIS 管理器无法验证此内置帐户是否有访问权.请确保应用程序池标识具有该物理路径的读取访问权.如果此服务器加入到域 ...

  9. 第三章 用 PowerShell 进行远程管理(remoting)

    第三章 用 PowerShell 进行远程管理(remoting) PowerShell V2 引进了一项强大的新技术,远程(remoting),PowerShell V3 进行了完善和扩展.主要基于 ...

随机推荐

  1. 初学python之路-day04

    每天一篇总结,今天学习的是有关于流程控制的知识. 流程控制,顾名思义,在计算机运行中,程序是被某种控制方式按照某种流程或者规律来执行的.而python程序的运行,肯定也是按照某种规律在执行.这些规律可 ...

  2. liunx redis集群添加密码

    第一种方法: 修改每个节点redis.conf配置文件: masterauth 123456 requirepass 123456 各个节点的密码都必须一致,否则Redirected就会失败 重新启动 ...

  3. javaWeb之使用servlet搭建服务器入门

    servlet: 百度百科说法: Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改 ...

  4. javascript中字符串的方法

    字符串的方法 charAt();返回字符串指定索引的字符: concat();连接两个或多个字符串: indexOf();返回字符串中检索指定字符第一次出现的位置: lastIndexOf();返回字 ...

  5. day15.Python内置函数

    作用域相关 locals() -- 获取执行本方法所在命名空间的局部变量的字典 globals() --  获取全局变量的字典 print(locals()) print(globals()) {'_ ...

  6. golang map 读写锁与深度拷贝的坑

    0X01 golang中,map(字典)无法并发读写 简单来说,新建万条线程对同一个map又读又写,会报错. 为此,最好加锁,其实性能影响并不明显. type taskCache struct{ sy ...

  7. js事件循环机制 (Event Loop)

    一.JavaScript是单线程单并发语言 什么是单线程 主程序只有一个线程,即同一时间片断内其只能执行单个任务. 为什么选择单线程? JavaScript的主要用途是与用户互动,以及操作DOM.这决 ...

  8. 揭开JS闭包的面纱

    今天看了关于js闭包方面的文章,还是有些云里雾里,对于一个菜鸟来说,学习闭包确实有一定的难度,不说别的,能够在网上找到一篇优秀的是那样的不易. 当然之所以闭包难理解,个人觉得是基础知识掌握的不牢,因为 ...

  9. CentOS 7 下安装 teamviewer 13

    CentOS 版本:centos-release-7-4.1708.el7.centos.x86_64(通过 rpm -q centos-release 查询) teamviewer 版本:teamv ...

  10. 【AtCoder】【思维】【置换】Rabbit Exercise

    题意: 有n只兔子,i号兔子开始的时候在a[i]号位置.每一轮操作都将若干只兔子依次进行操作: 加入操作的是b[i]号兔子,就将b[i]号兔子移动到关于b[i]-1号兔子现在所在的位置对称的地方,或者 ...