問題タブ [powershell-sdk]
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# - カスタム PowerShell ホストと PSObject の基本型への変換
PowerShell ランタイムをホストする場合、PSObject
何らかの方法で元の型に戻すことはできますか?
例えば:
WriteObject
パイプラインで ClassXzy のコレクションを呼び出してプッシュするコマンドレットがあります。PowerShell.Invoke
ホスト側から呼び出すPSObject
と、BaseObject
プロパティを持つ のコレクションを取得します。へのキャストBaseObject
がClassXyz
失敗します。
各プロパティ値を対応する元のオブジェクトにマッピングする方法はありますか? s をコマンドレットに渡すことができ、それらが Parameter 型に変換されるため、
PowerShell が何らかの方法でこれを行うと想定しています。PSObject
しかし、どのように?
私は Reflector を使用して PS アセンブリを引き裂くのに時間を費やしましたが、この魔法がどのように発生するかを本当に突き止めていませんでした。
何か案は?
編集:非常に重要な詳細を1つ忘れていました。PSObject
私がテストしているのはリモートオブジェクトであるため、タイプBaseObject
の名前はDeserialized.ClassXyz
. これが、このような奇妙な動作が見られる理由です。
powershell - スナップインが読み込まれるたびに初期化コードを実行するにはどうすればよいですか?
PowerShellスナップインを使用しており、スナップインが読み込まれるたびに(つまり、開始されるpowershell.exeプロセスごとに1回)、初期化コードを少し実行します(いくつかのAppDomainイベントをフックします)。これはどのように達成できますか?
wpf - WPF スレッドとカスタム Powershell ホスト - ユーザーがコマンドを中断したため、コマンドの実行が停止しました
埋め込みリソースに保存されているスクリプトを実行する powershell カスタム ホストを備えた WPF アプリがあります。読み込み後、ユーザーが実行ボタンをクリックすると、スクリプトが呼び出されますが、次のエラーが表示されます。
ユーザーがコマンドを中断したため、コマンドの実行が停止しました
ユーザー (つまり、私) はスクリプトを中断するために何もしなかったので、これはある種のスレッドの問題であると推測しています。
アプリケーションは、スクリプトをすぐに実行するように指示するコマンド ライン パラメータも受け入れます。この機能を最初に追加したとき、スクリプトは完全に実行されましたが、これが完了するまで WPF UI が表示されなかったので、メイン ウィンドウ ビュー モデルのスタートアップに次を追加しました。
BackgroundWorker は、UI スレッドで Completed コードを実行します。これは、私が頻繁に使用するちょっとしたトリックであり、ほとんど問題なく動作します。
だから、私が知っている長い質問ですが、誰かが私が間違っていることを知っていますか?
副次的な問題または関連する問題として、プロセスの実行中にデータバインディングを介してUIを更新する際にも問題があります。たとえば、ステータス バーに IDLE と BUSY を切り替えるステータス インジケータがありますが、これは手遅れになるまで変化しないようです。バインディングは正常に機能していますが、古い VB DoEvents() を呼び出す必要があるようです。
乾杯
powershell - プログラムに組み込むことができる Intellisense を備えた Powershell エディター?
私は C# アプリケーションを持っており、人々が私のアプリ内で powershell コードを記述できるようにしたいと考えています。
法案に合ったインテリセンスを備えたpowershellエディターを知っている人はいますか??
powershell - psproviderでPowerShellタブの拡張をサポートするにはどうすればよいですか?
いくつかの内部階層データにPowershellPSProviderを実装しています。すべてが正常に機能します。通常のcd/dirコマンドを使用してツリーをナビゲートできますが、機能しないのはタブ補完だけです。
私が見ることができるのは、Tabが押されたときにPowershellがパスにアスタリスクを付けて関数GetChildName()を呼び出すことです(「dirc」と入力してTabキーを押すと、GetChildName()関数は文字列「c*」で数回呼び出されます)。「c」で始まるフォルダーからすべての子の名前を返そうとしましたが、Powershellでは常に最初の子の名前だけが前面に表示されます。この動作に関するドキュメントが見つかりません。何が欠けていますか?
powershell - PowerShell プロバイダーでは、データを更新するのとキャッシュするのはいつですか?
C# で PowerShell プロバイダーを作成しています。プロバイダーは、ドライブのようなインターフェイスを介してアプリケーション ドメイン オブジェクトを公開します。例えば:
このデータは、最終的にデータベースから取得されます。
データを取得するためにいつデータベースにアクセスし、いつキャッシュする必要があるかについて、優れたガイダンスを見つけることができませんでした。PowerShell が ItemExists や GetChildNames などのメソッドを何度も呼び出していることがわかりました。多くの場合、同じコマンドに対して繰り返します。たとえば、オートコンプリートのために Tab キーを押したからといって、データベースに 5 回または 6 回アクセスするのは実際的ではありません。
しかし同時に、ユーザーとしてコマンド プロンプトでGet-ChildItem
( dir
) と入力してリストを表示し、PowerShell の外部で何かを実行して、データが更新されたことを確認します。別のディレクトリ リストを取得すると、データベース。
問題を説明する適切な用語を (PowerShell の用語で) 知っていれば、答えを Google で検索したり、既存の重複した質問を見つけたりできると思いますが、行き詰まっています。
c# - プログラムファイルフォルダーからps1スクリプトを実行できない
デスクトップからこのスクリプトを完全に実行できます。
しかし、プログラムファイルへのパスを変更しても何もしません..何かアイデアはありますか?
アクセス許可と関係があり、スクリプトを実行するのに管理者権限は必要ありません。また、プログラム フォルダーから ps1 スクリプトを手動で実行すると、問題なく動作します。
私も %AppData% フォルダを試してみましたが、同じ結果が得られました.ps1ファイルは実行されません。
c# - C#でPSObject.PropertiesのScriptProperty値を取得するには?
「GET-PSDrive」コマンドを使用して、PowerShell 6.0 からサーバーのドライブ情報を取得しようとしています。コマンドを PowerShell で直接実行すると、出力テーブル内に 'Used' と 'Free' の値が表示されますが、コードで同じコマンドを実行しても、Microsoft.Powershell.Sdk を使用しても 'Used' フィールドと 'Free' フィールドは表示されません。利用可能。
PSObject.Properties 配列の下に両方の項目がリストされていますが、値にアクセスしようとすると例外が発生します。
「このスレッドでスクリプトを実行できる実行空間がありません。System.Management.Automation.Runspaces.Runspace 型の DefaultRunspace プロパティで提供できます。呼び出そうとしたスクリプト ブロックは次のとおりです: ##」
以下は、私が取り組んでいる POC コードです。
そのプロパティの値を取得することを期待していますが、値が評価されるたびに、利用可能な実行空間がないというエラーが表示されます。プロパティを調べると、それが ScriptProperty であることがわかります。では、その生成された値を取得するにはどうすればよいでしょうか?