【问题标题】:How do I create an application pool with specific user in IIS 8.5 using PowerShell?如何使用 PowerShell 在 IIS 8.5 中创建具有特定用户的应用程序池?
【发布时间】:2015-05-28 10:32:30
【问题描述】:

下面的缩短代码有效,但最终使用 ApplicationPool 标识,而不是我在数组中指定的特定标识。

声明:

#App pool array positions
$Name = 0
$User = 1
$Pwdx = 2

#Application array positions
$SiteNm = 0
$PhyPath = 1
$PoolNm = 2

#App Pool Settings
$Port="80"
$HostName="*"
$Environment="local"
$Runtime="v4.0"
$Pipeline="0" #Integrated
$Identity="3" #SpecificUser

#Define the App Pools
$Pools = @(3)*2
$Pools[0] = "SomeAppPool","FooBar\SomeUser","S0meUs3rP4ssw0RD"
$Pools[1] = "AnotherAppPool","FooBar\AnotherUser","An0th3rUs3rP4ssw0RD"

执行代码:

Import-Module WebAdministration

#navigate to the app pools root
cd IIS:\AppPools\   

foreach($p in $Pools)
{ 
    $AppPoolName = $p[$Name]
    $AppPoolUser = $p[$User]
    $AppPoolPwd = $p[$Pwdx]

    $appPool = New-Item $AppPoolName
    $appPool | Set-ItemProperty -Name managedRuntimeVersion -Value $Runtime
    $appPool | Set-ItemProperty -Name managedPipelineMode -Value $Pipeline
    $appPool | Set-ItemProperty -Name processModel.identityType -Value $Identity
    $appPool | Set-ItemProperty -Name processModel.username -Value $AppPoolUser
    $appPool | Set-ItemProperty -Name processModel.password -Value $AppPoolPwd

    Write-Host "$AppPoolName Application Pool Created..."
}

【问题讨论】:

    标签: powershell iis powershell-3.0 application-pool iis-8.5


    【解决方案1】:

    不使用“Set-ItemProperty”,而是直接访问和设置 AppPool 属性:

    $appPool = New-Item $AppPoolName
    $appPool.managedRuntimeVersion = $Runtime
    $appPool.managedPipelineMode = $Pipeline
    $appPool.processModel.identityType = $Identity
    $appPool.processModel.username = $AppPoolUser
    $appPool.processModel.password = $AppPoolPwd
    $appPool | Set-Item
    $appPool.Stop()
    $appPool.Start()
    

    编辑:做了一些测试,看起来你的代码工作得很好,除了它没有设置用户名。为什么?

    实际参数是“processModel.userName”(注意大写的“N”)。 所以,它看起来像

    $appPool | Set-ItemProperty -Name processModel.userName -Value $AppPoolUser
    

    区分大小写,但是

    $appPool.processModel.username = $AppPoolUser
    

    不是。一定要爱上 PowerShell。

    【讨论】:

    • 感谢您的发现!我继续使用您的直接访问和设置版本。容易得多。
    • 我还注意到 $Identity 应该是一个数值——而不是一个字符串:$IdentityType=3
    猜你喜欢
    • 2010-09-20
    • 2014-10-01
    • 1970-01-01
    • 2010-09-27
    • 2018-02-25
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2015-05-12
    相关资源
    最近更新 更多