我想了解下面使用$appPool | Set-Item
的原因:
Write-Host -ForegroundColor Green "Creating application pool $PoolName"
$appPool = New-WebAppPool -Name $PoolName
$appPool.ManagedRuntimeVersion = $RuntimeVersion
$appPool.ManagedPipelineMode = $PipelineMode
$appPool.ProcessModel.IdentityType = $Identity
$appPool | Set-Item
缺少此行时会发生什么?
答案 0 :(得分:2)
从Technet Documentation of Set-Item: 将项目的值更改为命令中指定的值。
因此,在您的情况下,命令$appPool | Set-Item
实际上将设置您到目前为止定义的属性。
使用命令行$appPool.ProcessModel.IdentityType = $Identity
;你只是定义IdentityType
属性,但它实际上还没有设置;这将在Set-Item
命令调用时发生。
使用|
,您将所有已定义为参数的参数传递给Set-Item
comandlet。
答案 1 :(得分:2)
根据help for the cmdlet,New-WebAppPool
cmdlet无法直接使用这些参数。在变量对象中设置属性的值后,将其管道到Set-Item
会调用Web Administration (IIS) Provider for Windows PowerShell来注册IIS中的设置。