我正在通过Power Shell脚本创建应用程序池。
1.即使在环顾四周后,我也找不到如何将“立即启动应用程序池”设置为true。我该怎么做?
1.此外,如果提供了userName/password,那么我希望设置它,否则它应该是Application Pool Identity。我做的对吗?
下面是函数
Function Create-AppPools($appPoolName, $appPoolDotNetVersion, $managedPipelineMode, $startMode, $userName, $password) {
if(!$appPoolName){
return;
}
Write-Host " "
#navigate to the app pools root
cd IIS:\AppPools\
#check if the app pool exists
if (!(Test-Path $appPoolName -pathType container))
{
Write-Host "`t Creating AppPool: " + $appPoolName
#create the app pool
$appPool = New-Item $appPoolName
if($appPoolDotNetVersion){
$appPool | Set-ItemProperty -Name "managedRuntimeVersion" -Value $appPoolDotNetVersion
}
if(@managedPipelineMode){
$appPool | Set-ItemProperty -Name "managedPipelineMode" -Value $managedPipelineMode
}
if($startMode){
$appPool | Set-ItemProperty -Name "startMode" -Value $startMode
}
if($userName -and $password){
$apppool | Set-ItemProperty -Name processmodel -value @{userName = $userName;password=$password;identitytype=3}
}
else{
$apppool | Set-ItemProperty -Name "ProcessModel.IdentityType" -value 3
}
Write-Host "`t`t AppPool: " + $appPoolName + " created successfully" -ForegroundColor Green
}
else{
Write-Host "`t AppPool " + $appPoolName + " already exists" -ForegroundColor Blue
}
}
更新1:在我得到了我的问题回答后,检查github的示例脚本。
2条答案
按热度按时间uajslkp61#
您在第四个
if()
中有一个打印错误。除此之外,您的代码按预期工作。
我建议通过
#Requires
语句指定代码所依赖的模块。9udxz4iz2#
公认的答案并没有完全解决标题问题:
如何将AppPool复选框设置为“立即启动应用程序池”?“
如本文所述:https://serverfault.com/questions/828200/difference-between-start-application-pool-immediately-and-start-mode-alwaysrun,“基本设置”上的“立即启动应用程序池”复选框与“高级设置”中的“启动模式”设置完全无关。IIS似乎将该复选框称为AppPool的
autoStart
设置。您提供的脚本主动设置
StartMode
,但将autoStart
保留为默认值。碰巧New-WebAppPool
和New-Item
(在IIS驱动器中调用时)的默认值都是autoStart = "true"
,所以它恰好是您最初想要的。:)但是如果你想将它设置为false,或者有一个脚本在一个状态未知的现有应用池上主动设置该值,那么你可以这样做: