問題タブ [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 モジュールがロードされない
パッチのインストール後のモジュールの自動読み込みに関する問題に直面しています。シーケンスは次のとおりです。
- バージョン 1.0.8802 で実行されている .NET サービスがあります。
- Powershell (V 4.0) から、モジュール
MyAgent
がロードされ、コマンドレットにアクセスできることがわかります - コンピューターを再起動した後でも、
MyAgent
Powershell を開くとロードされます (load/get-module コマンドを明示的に実行する必要はありません)。 - ここで、WUA (Windows Update Agent) を使用して .NET サービスのパッチをインストールします。パッチが正常にインストールされ、コンピューターが自動的に再起動します
- ここで PowerShell を開きますが、
MyAgent
ロードされていません。に登場しGet-Module -ListAvailable
ます。実行するImport-Module MyAgent
と、すべてが以前と同じように機能し始めます。
注意点:
- MyAgent モジュールは
c:\windows\system32\Windowspowershell\v1.0\modules
どちらの場合にも存在します - どちらの場合も
$PSModuleAutoloadingPreference
null です - 私
$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
明確なエラーなしで失敗します。ここで何が欠けていますか?
助けてください!
powershell - モジュール内の PowerShell 関数でスクリプト スコープ修飾子を使用しても効果はありませんか?
script
PowerShell モジュールの関数でスコープ修飾子を使用すると、関数がエクスポートされなくなると想定しました。サンプル:
モジュールをインポートすると、Get-One
関数がエクスポートされます。
質問
script
スコープ修飾子を使用してモジュール関数を非公開にすることは機能するはずですか?- そうでない場合: なぜですか? 使用できる他のスコープ修飾子はありますか?
エクスポートする関数を制御するために使用できることはわかってExport-ModuleMember
いますが、エクスポートしてはならない関数がいくつかあります。むしろ、無視する関数を指定したいと思います。
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
powershell - Import-Module を明示的に行う理由はありますか?
PowerShellモジュールImport-Module
のガイド ページを読んでいるときに、セクションに次の行があることに気付きました。
次のアクションは、「モジュールの自動読み込み」とも呼ばれるモジュールの自動インポートをトリガーします。
- コマンドでコマンドレットを使用する。たとえば、「Get-ExecutionPolicy」と入力すると、Get-ExecutionPolicy コマンドレットを含む Microsoft.PowerShell.Security モジュールがインポートされます。
それを考えると、なぜ使用を気にする必要があるのImport-Module
でしょうか? 常に自動的に私たちの面倒を見てくれませんか? どのような場合に明示的に書き出す必要がありImport-Module
ますか?
powershell - PowerShell モジュール - コマンドレットごとに個別のファイル
私はしばらくこれに苦労してきました。プロジェクト用に新しい PowerShell モジュールを作成するつもりです。目的は、いくつかのカスタム コマンドレットをスタンドアロン ユニットにパッケージ化し、Nexus リポジトリ (またはその他のもの) を介して他のマシンに展開できるようにすることです。
問題:どこを見ても、すべての PowerShell 関数/コマンドレットを単一の *.psm1ファイルにパッケージ化するチュートリアルを目にします。ファイルは、実際にはモジュール自体を表す同じ名前のディレクトリ内に保存されます。
質問:各コマンドレット/関数をスタンドアロン ファイルに分割する方法はありますか? 複数のコマンドレットで構成されるモジュールがある場合、それらすべてを単一の *.psm1 ファイルに入れるのはあまり便利ではありません。
ありがとうマシュー
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
モジュールのまったく同じ「古い」バージョンが実行されます。
これに通常対処する方法を誰が教えてくれますか? そして、なぜ、なぜ、なぜ、デバッガーを介してスクリプトを実行するときに、モジュールをリロードする必要があるのでしょうか? 別のセッションで実行されたモジュールを「保存」するのはなぜですか?? 私は何か間違ったことをしていますか?
事前に多くの感謝を申し上げます。誰かがこれについて詳しく説明してくれることを願っています。
適切な説明(またはこのトピックに関する適切なドキュメントへの参照)を含む回答を強く好みます