問題タブ [cmdlet]

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 に答える
2796 参照

c# - コマンドレットは、パイプラインへの書き込みなしでコンソールに書き込みます

パイプラインに書き込むことなく、コマンドレットの書き込みを PowerShell コンソールに拡張するクラスを作成する方法はありますか?

パイプラインに多くのオブジェクトを書き込むコマンドレットを作成しています (その後、Export-CSV などの別のコマンドレットにパイプします)。問題は、コンソールに情報を書き始めると、それも取得されることです。

例: オブジェクト 1 オブジェクト 2 「私は、this.WriteObjct オブジェクト 3 を介して PowerShell に記録された情報メッセージです。

コマンドレットを別のコマンドレットにパイプしようとすると、オブジェクト 1、2、情報メッセージ、および 3 が取得されます。必要なので、オブジェクト 1、2、および 3 をパイプするだけです。

誰かが私を正しい方向に向けることができますか?

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

.net - Powershell: パラメータセット、どちらかが必要

次のコマンドレットを検討してください (usings は削除されています)。

このコマンドレットを実行する方法は次のとおりです。

A と B を使用しても機能せず、B のみを使用しても機能しません (C が必要です)。

それで問題ありませんが、入力するだけでコマンドレットを実行できないようにしたいのでFoo、コードで確認できるようになりましたが、Powershell は非常に優れているため、ランタイムを通じてこれを強制する方法はありますか?

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

validation - PowerShell : GetNewClosure() および検証付きコマンドレット

PowerShell 2 のスクリプト コマンドレットのコンテキスト内で .GetNewClosure() がどのように機能するかを理解しようとしています。

本質的に、次のようなオブジェクトを返す関数があります。

検証セットオプションがない場合、クロージャーは正常に機能しているように見えます。ただし、含まれている場合、新しいクロージャーは次のエラーで失敗します。

"0" 個の引数を指定して "GetNewClosure" を呼び出し中に例外が発生しました: "属性を追加すると、値を持つ変数オプションが無効になる可能性があるため、属性を追加できません。"

おそらく、クロージャーは、コマンドレットへの呼び出しのコンテキストをキャプチャしようとしています。パラメータ「オプション」はまったくバインドされていないため、これはパラメータの検証とはうまくいきません。

[Validate*()] デコレータを使用する代わりに、コマンドレットの本体内にコードとして検証を配置することで、これを回避できると思いますが、これは厄介で非常にわかりにくいようです。この 2 つのアイデアを融合させる方法はありますか?

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

c# - PowerShell コマンドレットのアンインストール

カスタム PowerShell コマンドレットを作成しました。正常に登録およびインストールされますが、アンインストールしようとするとエラーが発生します。このコマンドを使用してアンインストールします。

エラー: アンインストールを開始しています。「.dll へのパス」アセンブリの進行状況については、ログ ファイルの内容を参照してください。ファイルは「インストーラーのログへのパス」.InstallLog にあります。アセンブリ '.dll へのパス' をアンインストールしています。影響を受けるパラメーターは次のとおりです。 logtoconsole = assemblypath = '.dll へのパス' logfile = 'インストール ログ パス'.InstallLog 'インストーラーの名前' インストーラーのアンインストール中に例外が発生しました。System.ArgumentException: サブキーが存在しないため、サブキー ツリーを削除できません。アンインストール中に例外が発生しました。この例外は無視され、アンインストールが続行されます。ただし、アンインストールが完了した後、アプリケーションが完全にアンインストールされない場合があります。

アンインストールが完了しました。アンインストール中に例外が発生しました。この例外は無視され、アンインストールが続行されます。ただし、アンインストールが完了した後、アプリケーションが完全にアンインストールされない場合があります。

レジストリを見ました。コマンドレットへの参照はほとんど見つかりませんでしたが、それらを削除しても違いはありません。

現在、コマンドレットのインストーラーが存在するパスを手動で削除してアンインストールしています。これで問題がなく、将来的に問題が発生しないかどうかはわかりません。

これを修正する方法についてのアイデアはありますか?