我需要调查几个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变为报表的变量?
答案 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'