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 放入我的报告的变量中?

4

1 回答 1

0

好的,我将推断您已经知道如何通过添加 a.和属性名称来读取对象属性的值,但是您在使用这个奇怪的属性时遇到了困难,因为如果您分配$a.AllowAnonymous.AllowAnonymous给 a变量,值始终为空。

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

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

$SomeVariable = $a.'AllowAnonymous.AllowAnonymous'
于 2013-10-04T23:57:50.427 回答