如何确定使用PowerShell在IIS 6中是否启用了匿名访问?

时间:2013-10-04 20:56:20

标签: iis-6 powershell-v2.0

我需要调查几个IIS 6网站。我需要检查的其中一项是AllowAnonymous。我需要知道它是真还是假。我找到了这段代码:

$a = gwmi -Namespace root\MicrosoftIISv2 -Class IIsWebServerSetting -ComputerName
$ServerName -Impersonation Impersonate -Authentication PacketPrivacy |
Select-object AllowAnonymous.AllowAnonymous

这给了我这个:

PS> $a | gm


   TypeName: Selected.System.Management.ManagementObject

Name                          MemberType   Definition
----                          ----------   ----------
Equals                        Method       bool Equals(System.Object obj)
GetHashCode                   Method       int GetHashCode()
GetType                       Method       type GetType()
ToString                      Method       string ToString()
AllowAnonymous.AllowAnonymous NoteProperty  AllowAnonymous.AllowAnonymous=null

如何将NoteProperty变为报表的变量?

1 个答案:

答案 0 :(得分:0)

好的,我将推断你已经知道如何通过添加.和属性名称来读取对象属性的值,但是你却遇到了奇怪的困难 - 命名属性,因为如果将$a.AllowAnonymous.AllowAnonymous赋给变量,则该值始终为空。

原因是属性名称包含一个点,它是属性/方法运算符。因此,PowerShell不会将$a.AllowAnonymous.AllowAnonymous解释为“读取对象 $ a AllowAnonymous.AllowAnonymous 属性;它会将其解释为”阅读 $ a AllowAnonymous 属性中包含的对象的AllowAnonymous 属性。换句话说,它首先评估 $ a.AllowAnonymous (为空,因为 $ a 没有名为 AllowAnonymous 的属性),然后尝试读取null结果的 AllowAnonymous 属性,当然也是null。

解决方案很简单。引用属性名称:

$SomeVariable = $a.'AllowAnonymous.AllowAnonymous'