4

次のコマンドを使用して、単純な Linux 印刷デバイスの Web 管理インターフェイスの html 入力フィールドから値を取得しています。

$get = Invoke-WebRequest -Uri ("http://" + $station + ":8080/cgi-bin/admin?page=pedi.sh&hash=" + $hash) -Method "GET

入力フィールドの 1 つはチェック ボックスです。これがチェックされているかどうかを確認できるようにする必要があります。この場合、チェックボックスの名前は「プロトコル」で、チェックされています。

$get.ParsedHtml.getElementsByName("Protocol") | Select checked

チェック
する

次のコマンドで値を取得しようとすると、何も返されません。

($get.ParsedHtml.getElementsByName("Protocol")).checked

しかし、これを行うと、値が得られます...

($get.ParsedHtml.getElementsByName("Protocol") | Select checked).checked

なぜこの動作が見られるのか疑問に思っていますが、これは正常ですか?

Windows 8 RTM、PowerShell 3.0 を実行しています。さらに情報が必要な場合は、お知らせください。

4

1 に答える 1

2

私はあなたの問題を再現しました。チェックされたプロパティ(または他のプロパティ)の値を取得するには、次のように、戻りオブジェクトを強制的に配列にする必要がありました。

@($get.ParsedHtml.getElementsByName("Protocol"))[0].checked

または、Powershell 3.0の新しいプロパティ列挙機能以降:

@($get.ParsedHtml.getElementsByName("Protocol")).checked

したがって、getElementsByNameから返されたコレクションを列挙することによって値が要求された場合にのみ、値を提供するようです。たぶん誰かがチャイムを鳴らしてこの振る舞いを説明することができます。これはcomオブジェクトを使用しているという事実と関係があると思いますか?

于 2012-10-23T21:03:42.710 に答える