問題タブ [wsman]
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.
php - 配列内の各部分文字列の前後に「1」を追加する preg_replace
openwsman を使用して一連のサーバーに対して実行しているスクリプトを使用して、サーバーからハードウェア データを取得しています。これは、非常にオープンな環境で変更を追跡し、最終的に mysql db を更新してインベントリ レコードを保持しようとする試みです。問題は、preg_replace が配列内の各値の先頭と末尾に「1」を追加していることです。これらの手順はかなり珍しいので、それぞれが何をするのかを説明し、最後に出力を示します。
さらに、preg_replace を削除すると、array_sum が空白になります。変数 memsize、memsizepreg、および memsize sum 変数を出力したのは、プルされたデータが正確であり、preg_replace が何を行っていても、変数の先頭と末尾に 1 が追加されることを確認するためだけです。
出力:
powershell - Nginx を使用して「Windows リモート管理」Web サービスの前面に表示する
プロキシ WinRM / WSMAN リクエストをバックエンドするリクエストを NGINX にフロントさせたい。Nginx はポート 80 でリッスンし、バックエンド プロキシはポート 5985 をリッスンする必要があります。
nginx 構成:
これは、powershell リモート処理でテストしています。サーバーに直接アクセスすると機能しますが、プロキシを経由しようとすると失敗します。ネットワーク キャプチャを見ると、認証要求は問題ないように見えますが、powershell は「アクセスが拒否されました」と報告します。Nginx の設定に何か特別なものが欠けているのでしょうか、それとも単に Microsoft の実装が原因で機能しないのでしょうか (つまり、Microsoft の実装のために nginx が NTLM 認証リクエストをフロントエンドできない方法)
powershell - Exchange と Windows の WSManConnectionInfo オブジェクトで connectionUri が異なるのはなぜですか?
交換のために使用される接続 URI は次のとおりです。
WSManConnectionInfo オブジェクトは、次の方法で作成されます。
Windows に接続するために使用される uri は
WSManConnectionInfo オブジェクトは、次の方法で作成されます。
Exchange と Windows の接続 URI に違いがあるのはなぜですか?
c# - リモート PowerShell セッションを閉じた後、複数のプロセス wsmprovhost.exe が終了しない
PowerShell Remoting (C# コードから直接) を使用して、C# アプリケーションからリモート コンピューターに接続しています。これは問題なく動作しますが、そのような接続ごとに、プロセスwsmprovhost.exe (WSMan ホスト プロセス)の新しいインスタンスがターゲット コンピューターに残ったままになります。それらは決して終了せず、少量 (<0.1%) の CPU 時間を消費します。
PowerShell セッションを開くために使用するサンプル コードを次に示します。
...そして、現在そのセッションを閉じる方法は次のとおりです。
wsmprovhost.exeは何もしなくてもそこにとどまっているため、この実行空間で行うすべてのことが原因である可能性を除外しました。つまり、接続してから切断するだけです。
PSコマンドラインから手動で同等のアクションを実行すると、問題は発生しません-つまり:
後者の場合、wsmprovhost.exeのインスタンスがEnter-PSSessionの後に表示され、 Exit-PSSession の直後に閉じます。
これまでに次のことを試しましたが、どれも役に立ちませんでした。
RunspacePool
の代わりに使用Runspace
Disconnect
/Close
/のすべての組み合わせと順列Dispose
- 小さい値 (1ms)
CancelTimeout
に設定WSManConnectionInfo
簡単なものがありませんか?プログラムで開いた PowerShell セッションを閉じる正しい方法は何ですか?
編集: すべてのシステムで Windows 7、PowerShell 3.0、および .Net 4.0。
編集 2: 60000 (60 秒 - 最小許容値) に設定すると、IdleTimeout
wsmprovhost.exeが切断の 1 分後に終了することがわかりました。ただし、コマンド ライン シナリオでは、IdleTimeout は 2 時間ですが、wsmprovhost.exe は切断直後に終了します。また、C# のアクションに応答して開始された wsmprovhost.exe が終了することに気付きましたが、結局 2 時間しかかかりませんでした。2 時間よりも 1 分間の方が良いのは確かですが、負荷の高いシナリオでは、アプリケーションが PowerShell を頻繁に実行しなければ、1 分間の終了時間が問題になる場合があります。WSManConnectionInfo
wmi - WQL を使用して WMI プロパティのタイプを取得する
の WQL クエリを使用して、WMI ホストがサポートするクラスを見つけることができます。
SELECT * FROM meta_class
これにより、クラスとそのメソッドおよびプロパティが返されます。これらはすべて文字列のようです。私はいくつかの発見をしようとしています.プロパティ名を持つことは良いことですが、プロパティのタイプを取得することはさらに良いでしょう. プロパティの型を取得することは可能ですか?
たとえば、上記のクエリが のCIM_Processor
プロパティを持つクラスを返した場合、Family
それが aまたは aと言うのでFamily
はuint16
なく、 a であると言えますか? クラス定義の取得を読んでいますが、型を返すクエリが見つからないようです。これは可能ですか?WQL を使用しない回避策はありますか?uint32
string
c# - リモート PowerShell を使用して C# オブジェクトにキャストする
C# を使用して PowerShell コンソールにリモートで接続しています。
Get-Date PowerShell コマンドを呼び出して、どうにかして にキャストPSObject
したいと考えていますDateTime
。この問題を解決する「通常の」方法は何ですか?
c# - Azure ワーカー ロールから WSManConnection を確立する
Azure Service Bus キューと Azure Worker ロールの組み合わせを使用して、多数の Azure/サービス メンテナンス タスクを自動化しようとしています。要するに、コンセプトは次のとおりです....
- 保守タスクは SB キューに投稿されます
- Worker ロールは SB キューのタスクをリッスンします
- ワーカー ロールは、目的の VM/Web ロール/クラウド サービスに接続し、リモートの powershell コマンドを実行します
実際には、これは開発環境内で動作している場合は期待どおりに機能しますが、worker ロールが公開された後、リモート PowerShell 接続は「アクセスが拒否されました」という応答で失敗します。接続を確立するためのコードは次のとおりです...
当初、これは CA 証明書の問題ではないかと疑っていましたが、RDP 経由で worker ロールに接続し、証明書が正しく展開されていることを確認しました。さらに、リモートデスクトップ接続を使用して、「winrs -r:」コマンドを介してターゲットサーバーへの接続を達成することもできました。
確認のため、worker ロールも昇格されたアクセス許可で実行されています。
これに関する任意の助けをいただければ幸いです
前もって感謝します
powershell-2.0 - powershell を使用してシステムのリストで winrm 接続をテストする
サーバーのリストで winrm が実行されているかどうかをテストしたいと考えています。
winrm id -r:servername は個々のシステムで機能しますが、csv またはテキスト ファイルからリストを再帰的にテストしたいと考えています。
それぞれについて「動作中」または「動作していない」というファイルへの出力。
どうすればいいですか?
皆さんありがとう。
編集:
winrm 接続の出力がファイルに成功し、コンソールに失敗が表示されるまで、vm のリストを渡し、パイピングするところまで来ました。
get-vm |where {$ .powerstate -like "PoweredOn"}|get-vmguest |where {$ .guestfamily -like "windowsGuest"}|foreach {winrm id -r:$_.hostname} |Out-File c: \scripts\winrmtest.txt
出力ファイルでは、IdentifyResponse ProtocolVersion = http://schemas.dmtf.org/wbem/wsman/1/wsman.xsd ProductVendor = Microsoft Corporation ProductVersion = OS: 6.1.7601 SP: 1.0 Stack: 2.0のような出力が得られます。
接続が成功した場合、およびコンソールで失敗した場合は次のようになります。
エラー番号: -2144108526 0x80338012 クライアントは、要求で指定された宛先に接続できません。宛先のサービスが実行中であり、リクエストを受け入れていることを確認します。宛先 (最も一般的には IIS または WinRM) で実行されている WS-Management サービスのログとドキュメントを参照してください。宛先が WinRM サービスの場合は、宛先で次のコマンドを実行して、WinRM サービスを分析および構成します: 「winrm quickconfig」。WSManFault Message = クライアントは、要求で指定された宛先に接続できません。宛先のサービスが実行中であり、要求を受け入れていることを確認します。宛先で実行されている WS-Management サービスのログとドキュメントを参照してください。最も一般的なのは IIS または WinRM です。宛先が WinRM サービスの場合、
応答の対象となるゲスト VM の名前とともに、すべての出力をファイルに取得する必要があります。