检查配置部分是否已锁定IIS 7

时间:2013-01-11 09:44:51

标签: iis batch-file

命令:

appcmd lock config -section:...

将锁定指定的配置部分。但是我需要检查配置部分是否被锁定。

有没有可行的方法呢?谢谢你的回复!

1 个答案:

答案 0 :(得分:2)

我知道这已经有几年了,但我正在为Puppet寻找这个,所以这就是我想出来的。

命令Get-WebConfigurationLock显示配置部分是否存在任何锁定。

E.g。检查system.webServer / security / ipSecurity:

的IIS全局配置部分
Get-WebConfigurationLock -PSPath "IIS:\" -Filter //system.webServer/security/ipSecurity

如果该部分已解锁,则上述命令将返回null。例如到"解锁如果被锁定":

if (Get-WebConfigurationLock -PSPath "IIS:\" -Filter //system.webServer/security/ipSecurity)  {
    %windir%/System32/inetsrv/appcmd.exe unlock config -section:system.webServer/security/ipSecurity
} else {
    Write-Host "Already unlocked"
}

可以使用Remove-WebConfigurationLock代替appcmd,我更喜欢appcmd,因为您可以将锁定/解锁作为参数传递,而不是更改命令本身。

不确定Chef的样子虽然在这里我已创建的木偶定义解锁/锁定部分以供参考: https://gist.github.com/krutisfood/d59b3a5c62f6123bf553

作为参考我发现这个Stack Overflow链接Programmatically unlocking IIS configuration sections in Powershell虽然发现Get-WebConfigurationLock更准确地匹配锁定状态,甚至重新加载dll或powershell窗口获取属性值经常在锁定时显示IsLocked为false。因人而异。