を返します。スクリプトは何は、私は私のC#コードでPowerShellスクリプトを統合していると私はC#を使用して、それを呼び出すRuntimeBinderException
は、それがいくつかのグループとActive Directoryのからそのメンバーを取得し、PSObjectとしての私のC#コードでそれらを返しています。このオブジェクトには、グループに含まれるメンバーのアレイを含む「Member」というプロパティがあります。これらのメンバーのそれぞれは、PowerShellを介して追加したEmailAddress、Nameなどのプロパティを持っています。また、スクリプトもテストしましたが、意図したとおりに動作します。ここで
は、私は動的変数を使用してグループのメンバーを取得しようとC#での私のコードです:
GetGroupMembers(PSObject groupObject) {
// These are the group members, an object Array with 4 objects gets returned
dynamic members = groupObject.Properties["Member"].Value;
foreach (var member in members) {
string objectClass = member.ObjectClass;
ADObject memberObject;
switch (objectClass) {
case "user":
// This is where the exception gets thrown, since the "EmailAddress" value is null
string email = member.Properties["EmailAddress"].Value.ToString();
[...]
ここでの問題はデバッグ中、私は実際に、動的にプロパティがあることをそこに見ることができるということですメンバー変数は、それは、foreachループ中部材変数で除去します。 Here's a screenshot I made during debugging, which shows clearly that the property is available in the members variable.
私はメッセージとRuntimeBinderExceptionで取得例外が(閉鎖、呼び出し場所、オブジェクト、String)を System.Dynamic.UpdateDelegates.UpdateAndExecute2でCallSite.Targetで 「null参照に実行時バインディングを実行できません」 [T0、T1、TRET](呼び出し場所サイト、T0のarg0に、T1 arg1の)
はたぶんエラーがクリアされているが、私は私が間違ってやっているかを把握するように見えることはできません。本当に助けに感謝します。ありがとうございました!
あなたのスクリーンショットは、唯一のプロパティが存在することを示しています。私は、これは誰もが、まだ解決策を探しているなら、私はそれを解決する方法である、全く
dynamic
タイプを使用していませんでした。プロパティが実際にnull値でないという証拠はありません。正確な例外がどこで発生するのかを知るためにコマンドを分割する必要があります: 'PSPropertyInfo property = member.Properties [" EmailAddress "];オブジェクト値=プロパティ。値。文字列email = value.ToString(); '。 – PetSerAl@PetSerAl答えをありがとう。問題は、 'member.Properties [「のEmailAddress」]は'実際に 'null'なのである、とforeachループの前に私は(あなたがスクリーンショットに基づいて説明したように)プロパティが少なくとも存在することを確認することができ、そしてそれは奇妙なことだということです何らかの形でそれが失われる...私は、あなたから言及されたステートメントを追加するときRuntimeBinderExceptionを取得します: 'PSPropertyInfo property = member.Properties [" EmailAddress "]; '' – lleshiart
文字列電子メール= member.EmailAddress、nullを返します ' – PetSerAl