問題タブ [wbem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C# を使用して WMI クラスのプロパティから CIM データ型を取得する
このようにして、WMI にアクセスし、クラスに関する情報 (メソッド、クラスのすべてのプロパティ、および後続のメソッドを含む) を取得できるクラスを作成することができました。C# の System.Management クラスまたは System.Management.Instrumentation クラスの下に、メイン クラスまたはメソッドのいずれかで、WMI のプロパティの CIM データ型にアクセスできるものを見つけることができません。これらのデータ型を取得する方法を知っている人はいますか?
c++ - インスタンス列挙の WBEM OpenPegasus 制限
ストレージ配列からデータを取得するために C++ OpenPegasus ライブラリを使用しています。Windows 用にコンパイルされたバージョン 2.13.0 です。
多くのオブジェクトを含むストレージ配列のインスタンスまたは instancePath の列挙に問題があります。Pegasus::CIMException をメッセージなしでエラー コードとともに取得しました。
私の主な質問はです。OpenPegasus クライアントにオブジェクトの列挙に何らかの制限があるかどうか誰かが知っていますか? バージョン 2.13.0 で列挙できるオブジェクトの最大数のようなものですか? 残念ながら、ウェブ上で情報を見つけることができません。
ヒント、情報をありがとう。
wmi - iSCSI 名 (iqn) を IP にマップする OS に依存しない方法はありますか?
通常、次のような一連の iSCSI 名 (イニシエーター) があります。
例えば
そのような iSCSI 名をそれぞれの IP アドレスやホスト名にプログラムでマッピングしたいのですが、それを行う方法はありますか? 理想的には:
- CIM-XML/WBEM/SMI-S など、プラットフォームに依存しない方法でマッピングを実行できる同様のプロトコルを使用して、ホスト名を取得したいと考えています。
- カスタム コードをホストにデプロイする必要はありません。
- ネットワーク内の可能な各ホストに手動で接続し、その iSCSI 名が問題のホストと一致するかどうかを確認する必要はありません。
- Java または C# が推奨されます。
このunique name
部分は通常ホスト名ですが、その保証はありません。あるいは、iSCSI 名はEUI 形式を使用できます。例:
Windows では、「iSCSI イニシエーター」コントロール パネル ユーティリティまたはiscsicli.exe
コマンドのいずれかを使用してマシンの IQN を取得できるため、理論的には、考えられるすべての (Windows) ホストを反復処理して、IQN 値が一致するかどうかを確認できます。ただし、これは最適なソリューションとは思えません。
また、すべての WMI およびCIM クラスをダンプしてこのマッピングを探しましたが、そこには見つかりませんでした。
これを行う適切な方法はありますか?
c# - WinRM を使用して Linux ホストから CIM インスタンスを取得する方法は?
Windows または Linux を実行している複数のホストからいくつかの CIM インスタンスを収集しようとして、WinRM API を使用しています。私のコードは、Windows ホストに接続すると正常に動作しますが、SFCB CIM サーバーを実行している Linux マシンに接続しようとすると、例外がスローされます。Linux ホストから WBEM 経由で CIM インスタンスを取得できますが、WS-MAN/WinRM 経由では取得できません。
Windows ホストから取得するサンプル コードを次に示しますCIM_OperatingSystem
。これは正常に動作します。
remoteHost
Linux マシン (私の例では openSUSE VM) を指している場合、次のようになります。
- ホスト名のみを指定すると、つまり
remoteHost = "myLinuxHost"
、session.Enumerate()
失敗します。
未処理の例外: System.IO.FileNotFoundException: ネットワーク パスが見つかりませんでした。WSManAutomation.IWSManSession.Enumerate (オブジェクト resourceUri、文字列フィルター、文字列方言、Int32 フラグ) で
マシンに正常に ping できるので、表示されるはずです。ただし、ホスト名は Windowshosts
ファイルの IP にのみマップされます。PowerShell を使用してこのマシンへのセッションを作成しようとすると、次のエラーも発生します。
new-cimsession : WinRM は要求を処理できません。Kerberos 認証の使用中に次のエラーが発生しました: コンピューター myLinuxHost が見つかりません。コンピュータがネットワーク上に存在し、指定された名前のつづりが正しいことを確認してください。
- 完全なホスト URL (WBEM を使用して CIM インスタンスを取得できるもの) を指定した場合、つまり
remoteHost = "https://<ip>:5989"
列挙remoteHost = "https://myLinuxHost:5989"
が次のように失敗した場合:
未処理の例外: System.Runtime.InteropServices.COMException: WSManAutomation.IWSManSession.Enumerate でセキュリティ エラーが発生しました (オブジェクト resourceUri、文字列フィルター、文字列方言、Int32 フラグ)
詳細:
私は何を間違っていますか?
bash - wbemcli: キーと値のペアの出力
すべてのインスタンスを列挙するために使用wbemcli
すると、次のような結果が得られます。
wbemcli
1 つのアイテム (つまり ) だけを取得するにはどうすればよいName
ですか? すべてではありません。
-t
オプションには次のように書かれています。
-t
配列 ([])、参照 (&)、およびキー プロパティ (#) インジケータをプロパティ名に追加します。
しかし、私はこれを有利に利用することができませんでした。
この情報をキーと値のペア形式で取得する方法はありますか?
または、出力を配列などにパイプして、必要なものだけを取得できるようにしますか?
出力を配列にドロップすると、すべてのデータが最初の要素に格納されます${a[0]}
。
編集 出力例は次のとおりです。
通常、出力はこの形式になります。
クエリが複数のオブジェクトを返す場合、それらはグループ化され、すべてが適切な値を持つ同じメンバーを持ちます。
c++ - Open Pegasus 2.14.1 クライアント接続の問題
Open Pegasus Client (2.14.1) の新しいバージョンをビルドしたいと考えています。残念ながら、私はいくつかのビルドの問題に直面しています。これらの問題の回避策を知っている人はいますか?
私の環境は次のとおりです。
私のシナリオは非常に簡単です。
- Open Pegasus 2.14.1 のソースコードをダウンロードしました
- OpenSSL バイナリ (実際のバージョン v1.0.2a) をダウンロードしました。
Pegasus のソース コードを抽出した後、次の設定で環境を設定しました。
/li>次のステップは、mu.exe ツールの構築でした。それで、「make buildmu」を実行=>正常にビルドされ、「/ bin」フォルダーにコピーされました。Pegasus をビルドしたいので: "make build" => しばらくすると、このエラーが発生しました:
Message.cpp(433): エラー C2065: 'magic': 宣言されていない識別子
この問題を解決しようとしました。\pegasus-2.14.1\pegasus\src\Pegasus\Common\Linkable.h ファイルでマジック定数が定義されていることがわかったので、2 つのオプションがありました。a) ビルド構成を DEBUG に切り替える (PEGASUS_DEBUG=true に設定) b) DEBUG を削除するLinkable.h ファイルの 62 行目の状態 次に、もう一度 Pegasus をビルドしようとしましたが、残念ながら次のエラーが発生しました。
エラー LNK2005: _OPENSSL_Applink は SSLContext.obj で既に定義されています
現時点では、この問題を解決する方法がわかりません。これらの行を削除しようとしました:
SSLContextRep.h ファイルから。この変更の後、Pegasus クライアントのバイナリを取得することができました。しかし、これらのバイナリは SSL がなくても機能します。SSL 通信を使用したい場合、常にエラーが発生しました:「 Pegasus Exception: 'Cannot connect to 10.199.1.139:5989. Connection failed.'.」。 SSLContextRep.h で。
Pegasus Tracer からの出力:
SSL: 接続されていません 1 エラー:140740BF:SSL ルーチン:SSL23_CLIENT_HELLO:利用可能なプロトコルがありません SSL: SSL ソケットが削除されました
誰が何が間違っているのか知っていますか? Windows が OpenPegasus を構築するための (より良い) 環境設定手順を誰かが所有していますか?
あらゆる種類の助けを前もって感謝します。
編集:
証明書なしで作業できる必要があります。さまざまなストレージ アレイと SSL 通信を使用していて、それらの証明書を持っていないためです。したがって、SSLContext のこのコンストラクターを使用しています。
このアプローチは、OpenPegasus 2.13 バージョンで問題なく機能します。
c++ - ペガサス アソシエーション プロバイダーを開く
openpegasusを使ってSMI-Sプロバイダを開発していますが、
私がしようとすると
コンソールに CIM_StoragePool のインスタンス リストが表示されます。
これはenumerateInstanceNames
、インスタンス プロバイダーのメソッドが機能することを意味します。
しかし、インスタンスを選択しても何も起こりません。
アソシエーション プロバイダーのアソシエーター メソッドが呼び出されませんでした。
以下の mof にアソシエーション プロバイダーを登録します。
誰か助けてくれる人はいますか?どうもありがとう!
ibm-midrange - IBM i (as400) CIM およびイーサネット インターフェイス
wbemcli コマンドを使用して、リモートの IBM i (as400) マシンでイーサネット カードのステータスを確認しようとしています。
たくさんのフィールドがカードのステータスを説明しているように見えますが、それらのほとんどは空です:
空でない唯一のフィールドには整数が含まれているだけで、それをどうするか本当にわかりません。誰にも手がかりがありますか?OperationalStatus=2 が「UP」を意味し、それ以外の場合は「DOWN」を意味するという前提でスクリプトを書いていますが、それは信頼できません。
ありがとう、
c++ - MofComp サブスクリプションが機能せず、保存されたファイルが奇妙な動作をする
このファイルを登録しようとしています ( mytest3.mof
) :
コマンドを使用してPS C:\windows\system32\wbem> mofcomp mytest3.mof
そして、この出力を受け取ります:
これは数回発生しており、イベントが登録されていないことがわかります。
についてのメッセージが表示される理由を知っている人はいます#PRAGMA AUTORECROVER
か? この行がファイルに含まれていることがはっきりとわかりますが、システムはまだそこにないと不平を言っています...これがイベントが登録されていない理由の一部であるかどうかはわかりませんが、それらは関連している可能性があります。
説明に役立つ追加の詳細として-フォルダーに保存mytset3.mof
すると、wbem
フォルダーに入り、新しい空のテキストファイルを作成してmytest3.mof
. これを行うまで (ドキュメントを保存したとしても)、PC はこのファイルが存在しないかのように動作します... ここで何が起こっているのでしょうか? これはフォルダのアクセス許可に関連している可能性がありますか?
dll - 別のコンパイラから別の DLL によって起動された DLL で WBEM を使用する方法は?
WBEM を使用する VC6 でコンパイルされたワーカー DLL(A) があります。そして、DLL(A) 内の関数を別の DLL(B : VC2013 でコンパイル) から呼び出したい。IWbemLocator :: ConnectServer() でクラッシュします。