私はPSで非常に奇妙な状況に遭遇しました。変数を-Filterに渡す方法
私が使用しているスクリプトでは、いくつかのメールボックスをプルバックして$mailboxes
に格納するコマンドレット(Get-Mailbox
)があります。
次に、これを次のようにループして、一致するADアカウントを見つけます。
foreach ($user in $mailboxes) {
Get-ADUser -Filter {UserPrincipalName -eq $user.UserPrincipalName}
}
私はそれが$user
のプロパティUserPrincipalName
を見つけることができないと言って、このITエラーを実行します。
私はスクリプトをデバッグし、完全にテストしました。私が$user.UserPrincipalName
と入力すると、エラーが発生した時点でUPNのリストが出力され、その日付タイプは文字列なので、プロパティは存在し、データがあります。
何らかの理由で-Filter
が変数$user
を見ることができないという結論に達しました。私が聞いた{}括弧内のように変数が分離されているようです。しかし、私はそれが動作するようにコードを変更する場合。これは私の問題を修正しますが
foreach ($user in $mailboxes) {
$name = $user.UserPrincipalName
Get-ADUser -Filter {UserPrincipalName -eq $name}
}
私は、最初の例が動作しない理由を学ぶしたいと思います。誰でも説明できますか?
Deserialized.Microsoft.Exchange.Data.Directory.Management.Mailbox
が、それは、オブジェクトがタイプPSCustomobject
であると言うGet-ADUser
コマンドエラー:注目に値する
何かがget-メールボックスが実際に最初のExchange Onlineに接続してのデータ型を返します。私はこれが問題の一部かもしれないと思う。
そう...私はこの記事を編集する方法を見ることはできませんが、私は右上部にタイプミスに気づきました。 $ userlistは$ mailboxesと言うべきでしょうか、それとももちろん大きな問題を引き起こすでしょう!! – Mucker