問題タブ [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.
powershell - Powershell Remoting: リモート pssession でインポートされたモジュール コマンドレットを使用する
ローカル セッションでインポートされたモジュールをリモート セッションで使用する方法はありますか? import-pssession を見ましたが、ローカル セッションの取得方法がわかりません。これが私がやりたいことのサンプルです。
また、ps1ファイルがそのサーバーにないため、リモートセッションでモジュールをインポートしたくありません。
powershell - PowerShell モジュール マニフェスト - 必須モジュールの自動読み込み
グローバル環境にロードする必要がある他のいくつかのモジュールに依存するモジュールを作成しています。スクリプトを作成し、ScriptsToProcess を使用してモジュールをインポートしようとしましたが、ScriptstoProcess が実行される前に RequiredModules のチェックが行われるようです。
モジュールマニフェストで、モジュールを要求し、まだロードされていない場合は自動的にロードするためのきれいな方法はありますか? モジュールをロードできなかった場合、RequiredModule はエラーをスローします。
powershell - マルチファイルPowershellモジュールのスクリプト間の依存関係を管理する方法は?
長いプロジェクトの過程で作成したPowerShellコードが大量にあります。これらのスクリプトはさまざまな機能を実行し、それらのほとんどはプロジェクトの範囲内で他のスクリプトに何らかの形で依存しています。現在、作業はそれぞれ多くの機能を含むいくつかのファイルで構成されています。もともと、これらのスクリプトを操作するために、すべてのスクリプトファイルは環境に無計画にドットソースされていました。
ただし、最近、Powershell 2.0でモジュールが導入されていることを知り、これらのスクリプトを一緒に展開したいと思います。モジュールの内容はすべて一緒にロードされるので、ソース管理を支援するために、各スクリプトが独自のファイルを持つようにファイルを分割したいと思います。ただし、現在、スクリプト間の接続については少しわかりません。
いくつかのテストを行いましたが、各関数のExport-ModuleMemberコマンドを個々の.ps1ファイルに移動しても問題ないようです。これは、C#でのパブリックスコープとプライベートスコープのように、独自のスコープを宣言する関数のようです。ただし、それを行った後、私の.psm1ファイルには次のものしか含まれていません。
それは正しいと思いますか?すべてのスクリプトはドットソースであり、すべてのスクリプトはその仮定の下で相互に参照します。代わりに、$ psScriptRootに相対的な場所を使用して相互に参照する必要がありますか?
これらの両方の方法とは異なる方法はありますか?誰かアドバイスはありますか?これらについてはまだよくわかりません。
variables - モジュールの関数で使用される $_ 変数が空です (PowerShell)
あなたへの1つの質問はここにあります;)
私はこの機能を持っています:
を見てください$Properties
。ファイルごとに評価してから、ファイルとプロパティをさらに処理する必要があります。
使用方法の例は次のとおりです。
関数をコマンドラインにコピーして貼り付けSet-dbFile
、サンプルスニペットを実行すると、すべて問題ありません。
ただし、関数をモジュールに保存し、インポートして例を実行すると、$_
変数が空になります。理由を知っている人はいますか?そして、それを解決する方法は?(他のソリューションも同様に歓迎されます)
スクリプトで定義された/コマンドラインで入力された関数の結果:
モジュールで定義された関数の結果:
powershell - 親スクリプトを持ちながら、Powershell スクリプトで関心の分離を維持するにはどうすればよいですか?
そのため、次のようなタスクを完了するために、製品専用の特定の IIS サイト設定用の IIS 管理スクリプトに取り組んでいます。
問題は、問題ごとに個別のスクリプトを保持し、それらを親スクリプトで参照したいということです。親スクリプトを実行して、完全な展開/セットアップを実行できます。または、特定のタスクに対して個々のスクリプトを実行することもできます。問題は、それらが対話型であるため、タスクの完了に関連するユーザー情報を要求することです。
各スクリプトがユーザーから情報を取得するスクリプト本体を持つ問題にアプローチする方法がわかりませんが、それが親スクリプトにロードされている場合、その特定のスクリプトのスクリプト本体がユーザーにプロンプトを表示しないようにします。
注: それらをモジュールに配置して、個々の「環境にエクスポート」関数を起動できることはわかっていますが、このスクリプトは、セットアップが必要な環境に移動され、モジュール (psm1) ファイルを手動で配置する必要があります。スクリプトを実行するためだけに適切な PowerShell モジュール フォルダーに移動する方法は、私はあまり好きではありません。
Powershell でスクリプトを作成するのは初めてですが、考えや推奨事項はありますか?
考えられる答え*
これは(a)解決策かもしれませんが、作業ディレクトリからインポートモジュールを作成でき、そこからエクスポートされた関数にアクセスできることがわかりました。
他の提案にも興味があります。
powershell - ある開いている作業環境からモジュールをリロードして、別の作業環境に影響を与えるにはどうすればよいですか
PowerShell プロジェクトをモジュールに分割しています。しかし、それらはモジュールであるため、変更するたびにリロードする必要があります。そこで、FileSystemWatcher を持つループを作成し、.psm1 ファイルの 1 つが変更された場合、そのモジュールをリロードまたはインポートします。
問題は、上記のループでは作業環境で他のスクリプトを実行できないため、新しい環境では同じモジュールがロード/リロードされないことです。これらのモジュールをプライマリの既定の PowerShell モジュール フォルダーから除外する必要があります。モジュールが同じ環境で変更されたとき、または特定の環境に影響を与えたときにモジュールをリロードするスクリプトを実行する方法はありますか?
アップデート
そこで、次の Module-Loader.ps1 スクリプトを実行します。「FileChanged」イベントに関連付けられたコード ブロックは、変更後に *.psm1 ファイルを「保存」すると発生します。ただし、2 つの問題が発生します。1) 保存すると 2 回起動します。
2a) モジュールがロードされていない場合、Import-Module $PWD\ModuleName を実行しますが、実際には少なくとも環境にロードされていません (環境で同じコードを実行するとロードされます)。
2b) モジュールがロードされていて、モジュールを削除しようとすると、何も存在しないというエラーが発生します。
これはセッションで実行されていますが、イベントのコード ブロックはこの特定の環境に関連付けられていないと私は考えています。
powershell - 現在の作業環境でモジュールをリロードするには、FileSystemWatcher イベントが必要です
まず、ここに同様の質問がありますが、問題を解決する方向性がありませんでした。ポスターのAndy Arismendiからのアイデアで、可能な解決策を思いつきました。これは新しい問題です。
以下のコード ブロックを FileChanged イベントにバインドする以下のスクリプトを実行しています。.psm1 モジュール ファイルが変更されると、コード ブロックはファイルが読み込まれているかどうかを確認し、再読み込みを試みます。そうでない場合は、モジュールをインポートします。ただし、イベントは、イベントをバインドする初期スクリプトが実行されている現在実行中の環境に何らかの形で関連付けられていないと私は考えています。コードの下に 2 つの問題をリストしました。
問題: 1) .psm1 ファイルが変更されると、イベントが 2 回実行されます (ファイルの 1 回の保存に対して)。
2) reload/import コマンドを実行しますが、ロードされないため、別の環境で動作している必要があります。ただし、すべての出力は、スクリプトがイベントをバインドした現在実行中の環境に送られます。
前述したように、何らかの形でコード ブロックが現在のセッションに関連付けられていないと確信しています。
powershell - 特注モジュール内で定義されたpowershell関数の共通パラメータをさらに定義するにはどうすればよいですか?
AWS と対話するための powershell モジュールを作成しています。ほとんどの関数は、使用する資格情報であるパラメータを取る必要があります - awsAccessKeyId
、awsSecretKey
およびcredentialsFile
.
モジュール内の各関数にこれらのパラメーターをコピー/貼り付けするのは退屈です。
CommonParameters
これらがモジュールがエクスポートする一連の関数用であることを宣言する方法はありますか?
また、必要なすべての関数から呼び出せるように、共通の (つまり、重複した) パラメータ セット処理の switch-statement を抽出する方法はありますか?
関数の例を次に示します。
CommonParameters
パラメータ 2 ~ 4 を に抽出し、次に switch ブロックをいくつかの一般的な関数に抽出したいと思います。
sql - PowerShellを使用して.sqlファイルを実行する方法は?
私は持っています。sql
ファイル。Powershellスクリプトを介して接続文字列の詳細を渡し、.sql
ファイルを呼び出そうとしています。
私は検索していて、に関連するコマンドレットを思いついたInvoke-sqlcmd
。SQLに対応するモジュールを見つけようとしましたが、マシンにモジュールが見つかりませんでした。
モジュールを取得するために自分のマシン(マシンには既にSQL Server Management Studio 2008 R2がインストールされています)に何かをインストールする必要がありますか、それとも.sql
Powershellを使用してファイルを実行する簡単な方法はありますか?
powershell - Export-ModuleMemberから単一の関数を除外できますか?
PowerShellスクリプトモジュールで定義された関数の大規模なセットがあります。を使用したいのですが、 1つの関数だけExport-ModuleMember -Function *
を除外したいと思います。含まれているすべての関数を一覧表示するよりも、この1つの関数を除外する方が簡単です。これを達成する方法はありますか?