問題タブ [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 投票する
2 に答える
1404 参照

powershell - パッチのインストール後に Powershell モジュールがロードされない

パッチのインストール後のモジュールの自動読み込みに関する問題に直面しています。シーケンスは次のとおりです。

  • バージョン 1.0.8802 で実行されている .NET サービスがあります。
  • Powershell (V 4.0) から、モジュールMyAgentがロードされ、コマンドレットにアクセスできることがわかります
  • コンピューターを再起動した後でも、MyAgentPowershell を開くとロードされます (load/get-module コマンドを明示的に実行する必要はありません)。
  • ここで、WUA (Windows Update Agent) を使用して .NET サービスのパッチをインストールします。パッチが正常にインストールされ、コンピューターが自動的に再起動します
  • ここで PowerShell を開きますが、MyAgentロードされていません。に登場しGet-Module -ListAvailableます。実行するImport-Module MyAgentと、すべてが以前と同じように機能し始めます。

注意点:

  • MyAgent モジュールはc:\windows\system32\Windowspowershell\v1.0\modulesどちらの場合にも存在します
  • どちらの場合も$PSModuleAutoloadingPreferencenull です
  • $env:PSModulePathも指しているのが正しいですc:\windows\system32\Windowspowershell\v1.0\modules\

私が困惑している理由は、(モジュールが正しいモジュール フォルダーにあるにもかかわらず) パッチのインストール後にモジュールが自動的に読み込まれないのはなぜですか? C:\Users\<<user>>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1この問題は、コンテンツを としてプロファイル ファイルを作成すると解決しますImport-Module MyAgent。皮肉なことに、パッチのインストール自体にプロファイル ファイルを保持すると、C:\Windows\System32\WindowsPowerShell\v1.0\profile.ps1明確なエラーなしで失敗します。ここで何が欠けていますか?

助けてください!

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

powershell - モジュール内の PowerShell 関数でスクリプト スコープ修飾子を使用しても効果はありませんか?

scriptPowerShell モジュールの関数でスコープ修飾子を使用すると、関数がエクスポートされなくなると想定しました。サンプル:

モジュールをインポートすると、Get-One関数がエクスポートされます。

質問

  1. scriptスコープ修飾子を使用してモジュール関数を非公開にすることは機能するはずですか?
  2. そうでない場合: なぜですか? 使用できる他のスコープ修飾子はありますか?

エクスポートする関数を制御するために使用できることはわかってExport-ModuleMemberいますが、エクスポートしてはならない関数がいくつかあります。むしろ、無視する関数を指定したいと思います。

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

c# - ValidateScript ParameterAttribute in C# Binary PowerShell Module

I have recently begun experimenting with Binary PowerShell Programming in C#, and I am having some trouble with ParameterValidationAttributes, the ValidateScript Attribute mostly. Basically, i want to create a Param named "ComputerName" and validate the computer is online at that time. It was easy in PowerShell:

But i cannot figure out how to replicate that in C#. the ValidateScript attribute takes a ScriptBlock object http://msdn.microsoft.com/en-us/library/system.management.automation.scriptblock(v=vs.85).aspx im just not sure how to create that in C#, and i cannot really find any examples.

C# is very new to me, so i appologize if this is a dumb question. here is a link the ValidateScript Attribute Class: http://msdn.microsoft.com/en-us/library/system.management.automation.validatescriptattribute(v=vs.85).aspx

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

powershell - Import-Module を明示的に行う理由はありますか?

PowerShellモジュールImport-Moduleのガイド ページを読んでいるときに、セクションに次の行があることに気付きました。

次のアクションは、「モジュールの自動読み込み」とも呼ばれるモジュールの自動インポートをトリガーします。

  • コマンドでコマンドレットを使用する。たとえば、「Get-ExecutionPolicy」と入力すると、Get-ExecutionPolicy コマンドレットを含む Microsoft.PowerShell.Security モジュールがインポートされます。

それを考えると、なぜ使用を気にする必要があるのImport-Moduleでしょうか? 常に自動的に私たちの面倒を見てくれませんか? どのような場合に明示的に書き出す必要がありImport-Moduleますか?

0 投票する
3 に答える
6779 参照

powershell - PowerShell モジュール - コマンドレットごとに個別のファイル

私はしばらくこれに苦労してきました。プロジェクト用に新しい PowerShell モジュールを作成するつもりです。目的は、いくつかのカスタム コマンドレットをスタンドアロン ユニットにパッケージ化し、Nexus リポジトリ (またはその他のもの) を介して他のマシンに展開できるようにすることです。

問題:どこを見ても、すべての PowerShell 関数/コマンドレットを単一の *.psm1ファイルにパッケージ化するチュートリアルを目にします。ファイルは、実際にはモジュール自体を表す同じ名前のディレクトリ内に保存されます。

質問:各コマンドレット/関数をスタンドアロン ファイルに分割する方法はありますか? 複数のコマンドレットで構成されるモジュールがある場合、それらすべてを単一の *.psm1 ファイルに入れるのはあまり便利ではありません。

ありがとうマシュー

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

powershell - PowerShell: モジュール、その場所、およびリロード

一連の自己記述モジュール (psm1) を参照する、非常に単純な PS スクリプトがあります。PowerShell ISE からスクリプトを実行すると、モジュールの最新バージョンが実行されないため (ただし、いくつかの古いバージョンのメモリに保存されているため)、髪を引っ張ることがよくあります。

私はgoogle-d、google-dを持っていて、読んで試してみましたが、これらの問題を常に回避するのではなく、一体何が起こっているのかを理解したいと思う時が来ました.

いくつかのサンプルコード:

(スクリプトは、マシンで機能する PC を構成し、共有を設定し、ローカル ユーザーを作成し、NIC を構成します)

次のように、モジュールの場所をモジュールパスに追加することから始めます。

次に、必要なモジュールをロードします。

最後に、どの PC を構成する必要があるかをユーザーに尋ねます。

Configure-モジュールで何かを変更すると、問題が発生します。(eg) を追加Write-Host "bla bla"して [保存] ボタンを押し、メイン スクリプト (上記のスクリプト) を再度デバッグすると、PowerShell は古いバージョンのモジュールを実行ます。

次のいずれかでモジュールをリロードしない限り:

  • rmo Configure-EngravePCに続くipmo Configure-EngravePC
  • ipmo Configure-EngravePC -Force

モジュールのまったく同じ「古い」バージョンが実行されます。

これに通常対処する方法を誰が教えてくれますか? そして、なぜ、なぜ、なぜ、デバッガーを介してスクリプトを実行するときに、モジュールをリロードする必要があるのでしょうか? 別のセッションで実行されたモジュールを「保存」するのはなぜですか?? 私は何か間違ったことをしていますか?

事前に多くの感謝を申し上げます。誰かがこれについて詳しく説明してくれることを願っています。

適切な説明(またはこのトピックに関する適切なドキュメントへの参照)を含む回答を強く好みます