PowerShell Set-ItemProperty 与点设置 属性

PowerShell Set-ItemProperty vs. dot to set a property

我正在尝试设置一个 属性,例如使用 PowerShell(版本 2)的 ApplicationPool。
(如果重要的话,我有一台 Windows 7 64 位机器)

我看到 this example uses Set-ItemProperty and this example 使用点 . 来设置对象/元素的 属性:

$pool | Set-ItemProperty -Name "managedRuntimeVersion" -Value "v4.0"

对比:

$pool.managedRuntimeVersion = "v4.0"

那有什么区别呢?我认为第二个更具可读性,但我不知道这意味着什么。

编辑:
我注意到(至少在这种情况下)存在差异,Set-ItemProperty 确实直接保存了 属性 的值,而另一种方法确实设置了值(在调试时)但不保存之后。 我还没有发现为什么会这样。 (您需要调用保存或提交之类的东西吗?) 请参阅 's answer, for Powershell 2.0 Set-ItemProperty is the only way or $pool | Set-Item for Powershell 3+ (see sample)。

没有区别。在第一个中,您通过管道将对象传递给 Set-ItemProperty commandlet,并且 commandlet 设置对象 属性.

第二个你直接在对象上设置它。但它们在功能上是相同的。对于第二个,您还可以像这样检索 属性 的值:

$value = $pool.managedRuntimeVersion

您正在处理该应用程序池的表示。如果您检查该对象的类型,您将获得一个配置元素。因此,在设置之后,您需要使用 $pool | Set-Item 将您的设置推回,在 PS 3.0 及更高版本中可用。否则你唯一的选择是 Set-ItemProperty