为什么要将变量传递给Set-Item?

时间:2015-06-03 23:57:22

标签: powershell iis

我想了解下面使用$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

缺少此行时会发生什么?

2 个答案:

答案 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 cmdletNew-WebAppPool cmdlet无法直接使用这些参数。在变量对象中设置属性的值后,将其管道到Set-Item会调用Web Administration (IIS) Provider for Windows PowerShell来注册IIS中的设置。