.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
谢谢观看!
,220)/}
小结,管理