問題タブ [wmi-service]

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.

0 投票する
1 に答える
2016 参照

scripting - ドライブを監視します。VB スクリプトの使用

VBScript を使用して、ドライブのファイル変更を監視したいと考えています。以下のコードがあります。と で問題なく動作InstanceCreationEventInstanceDeletionEventます。しかしInstanceModificationEvent、起こっていません。グーグルから、監視するCIM_DataFile代わりに使用する必要があることがわかりました。コードを変更する方法がわかりません。誰でも助けることができます。CIM_DirectoryContainsFileInstanceModificationEvent

参考までに: 1 つのスクリプトで、ドライブ内のすべてのフォルダーとサブフォルダーを監視する必要があります。

PS: コードとパフォーマンスを改善するための提案やその他のアイデアも歓迎します。

私のコード:

0 投票する
1 に答える
839 参照

visual-c++ - WMI IWbemClassObject::GetNames ステータスの完了

WMI クエリを作成しますSELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'

そして、COM オブジェクトIWbemClassObject (メソッドIWbemObjectSink::Indicateの実装内で取得) のインスタンスでメソッドGetNamesを呼び出す前に、常に問題ありません。IWbemClassObject::GetNamesを呼び出すと、一部の WMI メカニズムが IWbemObjectSink::SetStatus をフラグWBEM_STATUS_COMPLETEで呼び出し、新しいイベントは何も発生しません!!! キャンセル非同期メソッドは呼び出しません。

私は何を間違っていますか?WMI イベントの停止を防ぐ方法は? GetNames を安全に呼び出す方法は? IWbemClassObject::GetNamesを呼び出した後も、新しいイベントをサブスクライブしたいと考えています。

UDPATE: GetNames呼び出し方法:

piappObjは、この回答に示されている方法で取得されたオブジェクトです

0 投票する
0 に答える
105 参照

wmi - 非同期モードが選択されている場合、リモート マシンの wmi クエリが失敗する

wbemtest を使用して、リモート マシンでwmi クエリ ( select * from win32_ntlogevent )を実行しようとしています。準同期モードで成功します。非同期モードが選択されている場合、クエリは失敗し、 Access is Deniedを示すエラー メッセージが返されます。

なぜこれが起こっているのか誰でも説明できますか??

0 投票する
2 に答える
2656 参照

c# - Win32_Service がありません

WMI オブジェクト - Win32_Service からいくつかのプロパティをロードしようとする C# コードがあります。しかし、「System.Management.ManagementException: Invalid class」エラーが返されます。

私の簡略化されたコード:

また、PowerShellコマンドでWMIオブジェクトのリストを読み込もうとしました-

Get-WmiObject -List | 名前を選択

91 個のオブジェクトを返しますが、Win32_Service オブジェクトがありません。再インストールする方法をグーグルで検索しましたが、見つかりませんでした。どうにかして再インストールする方法はありますか?

ありがとうございました

更新 1: Powershell コマンドの出力:

0 投票する
1 に答える
355 参照

windows - WMIPRVSE は、デフォルトでネットワーク サービスの下で実行する必要があります

私は2つの別々のサーバー(Windowsサーバー2008 r2)を持っており、そこからMicrosoftスケジューラ(私のコンピューター>マネージャー>スケジュール)を介してvbsスクリプトを実行しています。vbs スクリプトをローカルで実行すると正常に動作しますが、スケジューラを介して実行するとサーバーの 1 つがスタックします。もう一方は正常に動作しています。また、タスク マネージャーから、動作中のサーバーが Network Service ユーザーを介して WMIPRVSE.exe を実行し、もう一方のサーバーが SERVICES をユーザーとして表示していることに気付きました。

WMIPRVSE.exe が常にネットワーク サービスで実行されるようにする方法。ありがとう

編集:

サービスからログオン ユーザーを変更しようとしましたが、サービスの開始に失敗しました。

0 投票する
1 に答える
683 参照

powershell - Powershell セキュリティ get-service インタラクティブとスケジュールされたタスクの結果が異なる

この問題を特定するために何時間も費やしました。さまざまなサービスが実行されているかどうかを確認するために、PowerShell を実行しています。Windows タスク スケジューラから 5 分ごとに実行したい。

他のサーバー上のサービスと、それが実行されている同じマシン上のいくつかのサービスをチェックします。インタラクティブに実行しているのと同じユーザーIDで、タスクスケジューラの下で実行すると、異なる結果が得られます。インタラクティブに、ローカル マシン上のすべてのサービスが実行されていることを示します。タスク スケジューラを実行すると、サービスが見つからないことがわかります。

これは、より大きなプログラムのほんの一部です。サーバー/サービス名を CSV ファイルから取得し、最後に素敵な HTML メールを送信します。Add-Content を追加して、これが起こっていることを証明するトレース ファイルを作成しました。

新しいシンプルなバージョン (まったく同じ問題があります): $Service = (get-wmiobject win32_service -ComputerName "DAL-BIZ-APP01" -filter "name = 'LanManServer'") if ($Service -eq $null) { $reportStatus = "サービスが見つかりません" } else { $reportStatus = "サービスが見つかりました" } $myDate = Get-Date Write-Host $reportStatus Add-Content D:\scripts\ServiceTestTrace.txt "$myDate $reportStatus"

インタラクティブな結果:

スケジュールされたジョブの結果:

これを含むコマンドファイルから実行します:

管理者以外のコマンド プロンプト ウィンドウまたはスケジューラからコマンド ファイルを実行すると、結果も異なるようです。

新しいシンプルなバージョンを試してみたい場合は、2 つのコンピューター名を置き換えてください。

結果:

16:07:48 はコマンド プロンプトから、16:08:03 はタスク スケジューラからのものです。

0 投票する
0 に答える
235 参照

c# - WMI を使用した既存のクエリのイベント

何かのステータスを取得するための WMI クエリがある場合、そのステータスへの変更をリッスンできる関連イベントはありますか。たとえば、マザーボードのシリアル番号を照会することはできますが、イベントの形でシリアル番号の変更を検出することは可能ですか。または、少なくとも私はそれを見つけることができません。Microsoft の wmi コード クリエーターを使用すると、特定のクエリのイベントがないように見えます。