0

調査が必要な IIS 6 Web サイトがいくつかあります。チェックする必要がある項目の 1 つは、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。値は常に null です。

その理由は、プロパティ名にプロパティ/メソッド演算子であるドットが含まれているためです。そのため、PowerShell は「オブジェクト$aのAllowAnonymous.AllowAnonymous$a.AllowAnonymous.AllowAnonymousプロパティを読み取る」とは解釈せず、「 $ a のAllowAnonymousプロパティに含まれるオブジェクトのAllowAnonymousプロパティを読み取る」と解釈します。つまり、最初に$a.AllowAnonymous ( $a にはAllowAnonymousという名前のプロパティがないため null です) を評価し、次に null 結果のAllowAnonymousプロパティを読み取ろうとしますが、これももちろん null です。

解決策は簡単です。プロパティ名を引用します。

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