問題タブ [powershell-module]

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

c# - Powershell バイナリ モジュール: コマンドレット パラメーター値の動的タブ補完

C# でバイナリ Powershell モジュールを作成しています。動的な実行時のタブ補完を提供するパラメーターを含むコマンドレットが必要です。ただし、バイナリモジュールでこれを行う方法を理解するのに苦労しています。これを機能させるための私の試みは次のとおりです。

これはうまくいきません。タブ補完機能がありません。エラーも表示されます:

非バイナリ Powershell モジュールでそれを行う方法の例を含む記事を見つけました。インクルードする非バイナリ モジュールの後に、オブジェクトDynamicParamを構築して返すステートメントが続くようです。この例に基づいて、オーバーライド可能なメソッドがあるのと同じように、おそらくオーバーライド可能なメソッドまたはRuntimeParameterDictionary類似のクラスで同等のものを期待します。PSCmdletGetDynamicParameters()BeginProcessing()

このままでは、バイナリ モジュールは Powershell の世界では二流の市民になりそうです。確かに私が見逃したこれを行う方法はありますか?

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

powershell - モジュールで使用すると関数がバインドされない

私はこの機能を入れようとしています:

モジュールに。上記の関数だけを含む新しいモジュール my-scripts.psm1 ファイルを作成し、Import-Module <absolute path>.

問題は、モジュールからの関数を使用すると、パイプからの値に設定されていない1..4 | Test-Any { $_ -gt 3 }ため、false が返されることです。$_

関数をスクリプトで通常どおり定義し、そこから使用すると、期待どおりに機能します ($_ に整数値が割り当てられます)。

これは、Windows 7 の PowerShell v4.0 で発生します。

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

powershell - Import-Module を使用した Powershell 実行スクリプト

管理者グループ用に、一般的に実行するいくつかの手順を自動化する機能を備えたモジュールを作成しました (リモート マシンへの管理者の追加、C ドライブのクリーンアップなど...)。

これらの機能の前提条件の 1 つは、作業するドメインごとに 1 つずつ、一連​​の 7 つの資格情報を生成することです。

モジュールをインポートするときに実行するスクリプトブロックを取得する方法はありますか、それとも各人のプロファイルに追加する必要がありますか?

コメント投稿者は、それを module.psm1 ファイルに追加するだけでよいと述べましたが、それは機能しませんでした。これが私が実行しようとしているコードです。

これを手動で実行すると問題なく動作しますが、Import-Module コマンドから実行すると資格情報が作成されません。

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

.net - ps1xml を使用して System.Boolean = $false の値を持つ NoteProperty を追加して、PowerShell カスタム タイプを拡張する

カスタム types.ps1xml ファイルを使用して、カスタム オブジェクトの型を拡張しようとしています。ファイルは機能し、多くのタイプを希望どおりに拡張します。

$true のブール値を持つ NoteProperty を使用して、カスタム タイプを拡張することができました。ここで実行できるようにしたいのは、TypeName の値が System.Boolean で、Value が $false の別の型に NoteProperty を追加することだけです。私の問題は、<value>プロパティが常に文字列として解釈され、System.Boolean の TypeName としてキャストされると、長さがゼロでない文字列が $true を返すため、常に $true を返すことです。

仕事に戻ろうと急いで電話でこれを入力していますが、ps1xml ファイルの関連部分は次のとおりです。

これにより、ブール値 $true を反映する NoteProperty が正しく生成されます。ただし、値を false、0、null、''、または ""、または $false、または [bool]0、または引用符の有無にかかわらず、または $ の有無にかかわらず、または内部のその他の実行可能な値に変更すると、 $() またはエスケープされた引用符または文字を使用。常に $true のブール値として返されます。空白のまま<Value>にすると、xml の読み込み時にエラーが発生するため、それも機能しません。<TypeName>を System.IO.File などの別のものに変更すると、実際には「false」の値が「false」という名前のファイル オブジェクト、または で特定した型に変換されます<TypeName>。$false のブール値を割り当てることができないことを除けば、意図したとおりに機能することは明らかです。私が何をしようと。離れたら<TypeName>完全に System.String にデフォルト設定されているため、役に立ちません。

ファイルまたはディレクトリの Get-Member を見ると、対応する PSIsContainer の NoteProperty が $true または $false の System.Boolean 値に等しいことがわかります。true に設定した場合の出力は、デフォルトのディレクトリ オブジェクトとまったく同じです。これは、NoteProperty を $false に設定できるはずであることを示唆しています。

ほとんど忘れていましたが、実際には、Add-Member を使用して NoteProperty を追加し、値を適切に $false に設定できますが、スクリプト/ツールが機能するには、このオブジェクトのすべてのインスタンスにこの NoteProperty が必要です。 types.ps1xml ファイルを使用することが、私が考えられる唯一の方法です。

このプロパティを設定しているオブジェクトは、その名前または値を持つ競合するプロパティや既存のプロパティを持たないカスタム オブジェクトです。<Name>そして、「IsAwesome」のように を別のものに変更しても問題ありません。$false ではまだ機能しません。既存の types.ps1xml と format.ps1xml を検索してみましたが、その方法についてのヒントはありません。私は何日もの間、オンラインで広範囲に検索してきましたが、Powershell に関するいくつかの教科書を見ても役に立ちませんでした。

誰か助けてくれませんか!?

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

powershell - PowerShell PSSnapin Dll で import-module を使用する

従来の PowerShell PsSnapin (c#) があります。使うのは避けたいInstallUtil。次の例では、エクスポートされた PSSnapin コマンドレットを使用してモジュールをインポートします。

ただし、モジュール コマンドレットを実行すると、参照されているアセンブリ (具体的にはエンタープライズ ライブラリ dll) が見つからないために失敗します。

これを機能させるためのきちんとした方法はありますか?

(PsSnapin dll とすべての参照アセンブリは同じビルド ディレクトリにあり、installutil を使用すると、依存関係はすべて正しく解決されます)

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

powershell - Powershell コマンド「Get-DistributionGroup」が機能しない

このGet-DistributionGroupコマンドは、ドメイン内の配布グループを一覧表示することになっていますが、サーバーで実行できません。

Import-Module ActiveDirectoryいくつかのグーグルの後、最初に実行する必要があることがわかりましたが、実行すると次のようになります。

Import-Module : どのモジュール ディレクトリにも有効なモジュール ファイルが見つからなかったため、指定されたモジュール 'ActiveDirectory' は読み込まれませんでした。

私の質問は

  1. このモジュールを PowerShell モジュール ディレクトリにインストールするにはどうすればよいですか? これを自動的に行うことになっていると思いました
  2. インストールしたら、実行するだけで、実行して dist グループを一覧表示Import-Module ActiveDirectoryできますか?Get-DistributionGroup
0 投票する
1 に答える
1668 参照

powershell - Azure Automation モジュールのインポート - アクティビティとしてエクスポート/抽出されていないモジュール メンバーを調査する方法は?

ワークフローとネイティブ ps1 コマンドレットが埋め込まれたカスタム モジュールがあります。

このモジュールをインポートすると、コマンドレットのサブセットのみが抽出されたアクティビティとしてモジュールの下に表示されます。

モジュールはインポートを正常に完了しており、Available と表示されます。

特定の出力と考えられるメンバー固有のインポートエラーを見つけるために探す場所はありますか?

読み込みに失敗するコマンドレットは、アセンブリの一部として追加されたいくつかの新しい型に依存しています。読み込まれているコマンドレットも、そのアセンブリの型に依存しています。

さらに混乱を招くのは、このモジュールを ISE でローカルにインポートすると、すべてが正常に機能し、すべてのコマンドレットが利用可能/実行可能になることです。

さらに: ネイティブ PowerShell コマンドレットでこれを見たことがありますが、.ps1 内の (単一の) PowerShell ワークフロー アクティビティがサポートされていないようにも見えます

さらに、ローカルで、.psd1 または .psm1 を使用してモジュールをロードするかどうかに応じて、異なる動作と結果の WRT 依存アセンブリのロードが発生することを確認しました。

特に、矛盾をローカルでトラブルシューティングしようとすると、「型が見つかりません」または「引数が 1 の ctor に対して複数のオーバーロードが見つかりました」というメッセージが多数表示されました (問題の型に 1 の ctor がないにもかかわらず)。 arg)[OutputType([typename])]などを介して参照される型のエラー。同じアセンブリの型に依存する OTHER コマンドレットが正常に検出された場合。

[編集]
テスト .psm1 からのローカル詳細出力

詳細: 関数 'sync-test' をインポートしています。
詳細: コマンドをワークフロー 'Sync-VsoGitRmRunbook' としてインポートしています。

AA では、sync-test (文字列出力を書き込む単純な Runbook) は正常に表示されますが、Sync-VsoGitRmRunbook は表示されません。

sync-test をワークフローに変換すると、インポートも停止するため、(モジュールにパッケージ化された C# クラスではなく) .ps1 ファイルとしてバンドルされているワークフロー アクティビティをエクスポートするモジュールには制限があると思われます。

[編集]
問題を再現するモジュールを作成しました。 https://github.com/JoeBrockhaus/AzureAutomationVsoGitSync