Windows PowerShell 对IIS网站以及应用程序池的新增和删除
添加网站以及对应应用程序池
# 检查当前是否以管理员身份运行
function Is-Administrator {
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
# 获取当前脚本的完整路径
$scriptPath = $MyInvocation.MyCommand.Path
# 如果不是管理员身份,则以管理员权限重新启动 PowerShell 并运行脚本
if (-not (Is-Administrator)) {
# 以管理员身份重新启动 PowerShell 并运行脚本
Start-Process -FilePath "powershell.exe" `
-ArgumentList "-NoExit", "-ExecutionPolicy Bypass", "-File", "`"$scriptPath`"" `
-Verb RunAs
exit # 退出当前脚本,避免在当前窗口执行以下操作
}
Import-Module WebAdministration
# 获取脚本路径作为网站目录
$rootPath = $PSScriptRoot
$siteName = "Cloud"
$port = 800
# 创建网站
if (-not (Test-Path "IIS:\Sites\$siteName")) {
New-Website -Name $siteName -Port $port -PhysicalPath $rootPath -Force
Write-Host "创建网站:$siteName"
} else {
Write-Host "网站 $siteName 已存在"
}
# 创建应用程序池(如不存在)
$appPoolNames = @("API", "APP")
foreach ($appPoolName in $appPoolNames) {
$appPoolPath = "IIS:\AppPools\$appPoolName"
# 检查应用程序池是否存在
if (-not (Test-Path $appPoolPath)) {
# 如果应用程序池不存在,则创建
New-WebAppPool -Name $appPoolName
Set-ItemProperty IIS:\AppPools\$appPoolName managedRuntimeVersion "" # 清空托管代码版本
Write-Host "创建应用程序池:$appPoolName"
} else {
Write-Host "应用程序池已存在:$appPoolName"
}
}
# Cloud 使用单独的 v4.0 应用程序池
$CloudAppPool = "Cloud"
if (-not (Test-Path "IIS:\AppPools\$CloudAppPool")) {
# 创建 NSCloud 专用的应用程序池,使用 .NET Framework v4.0
New-WebAppPool -Name $CloudAppPool
Set-ItemProperty IIS:\AppPools\$CloudAppPool managedRuntimeVersion "v4.0" # 设置为 v4.0
Write-Host "创建 NSCloud 专用应用程序池:$CloudAppPool"
} else {
Write-Host "Cloud 专用应用程序池已存在"
}
# 将目录转化为网站应用程序
$appPoolNames | ForEach-Object {
$appPoolName = $_
$appPath = "IIS:\Sites\$siteName\$appPoolName"
$physicalPath = Join-Path $rootPath $appPoolName
# 确保文件夹存在
if (-not (Test-Path $physicalPath)) {
New-Item -ItemType Directory -Path $physicalPath
Write-Host "创建目录:$physicalPath"
}
# 确保应用程序已绑定到网站,并设置应用程序池
New-WebApplication -Site $siteName -Name $appPoolName -PhysicalPath $physicalPath -ApplicationPool $appPoolName
Write-Host "为网站 $siteName 创建或更新子应用程序:$appPoolName"
}
# 将 Cloud 网站的应用程序池设置为专用的 v4.0 应用程序池
Set-ItemProperty IIS:\Sites\$siteName applicationPool $CloudAppPool
Write-Host "将网站 $siteName 绑定到专用的 v4.0 应用程序池:$CloudAppPool"
Write-Host "所有应用程序池和应用程序已设置完成。"
删除网站以及对应应用程序池
# 检查当前是否以管理员身份运行
function Is-Administrator {
$currentUser = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($currentUser)
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
# 获取当前脚本的完整路径
$scriptPath = $MyInvocation.MyCommand.Path
# 如果不是管理员身份,则以管理员权限重新启动 PowerShell 并运行脚本
if (-not (Is-Administrator)) {
# 以管理员身份重新启动 PowerShell 并运行脚本
Start-Process -FilePath "powershell.exe" `
-ArgumentList "-NoExit", "-ExecutionPolicy Bypass", "-File", "`"$scriptPath`"" `
-Verb RunAs
exit # 退出当前脚本,避免在当前窗口执行以下操作
}
Import-Module WebAdministration
$siteName = "Cloud"
$appPoolNames = @("Cloud","API", "APP")
# 删除网站
if (Test-Path "IIS:\Sites\$siteName") {
Remove-Website -Name $siteName
}
# 删除应用程序池
foreach ($appPoolName in $appPoolNames) {
if (Test-Path "IIS:\AppPools\$appPoolName") {
Remove-WebAppPool -Name $appPoolName
}
}
Write-Host "所有应用程序池和应用程序已删除完成。"
本文来自博客园,作者:HookDing,转载请注明原文链接:https://www.cnblogs.com/HookDing/p/18817120

浙公网安备 33010602011771号