1. ホーム
  2. powershell

[解決済み] PowerShell モジュールを全ユーザーに持続的にインストールする

2022-03-04 10:56:44

質問

PowerShell モジュールのインストールを オクトパスデプロイ を複数の異なるサーバーにインストールします。テスト目的で、私はMicrosoftのドキュメントに記載されている PowerShellモジュールのインストール .

これはうまくいったのですが、ドキュメントに書かれているように、私の変更は現在のセッションにのみ表示されるのです。つまり、もし私が以下のようなことをするとしたら。

$modulePath = [Environment]::GetEnvironmentVariable("PSModulePath", [EnvironmentVariableTarget]::Machine)
# More practically, this would be some logic to install only if not present
$modulePath += ";C:\CustomModules"
[Environment]::SetEnvironmentVariable("PSModulePath", $modulePath, [EnvironmentVariableTarget]::Machine)

tentacle サーバーでこのインストーラーを自動的に実行すると、将来の PowerShell セッションで新しくインストールされたモジュールが表示されない。

PowerShell モジュールをプロファイルに依存しない方法でインストールし、起動したすべての PowerShell セッションで確認できるようにするには、どうすればよいですか?

どのように解決するのですか?

PowerShell は、以下のディレクトリのいずれかにインストールされたモジュールのみを参照することができます。 $env:PSModulePath . そうでない場合は、モジュールをフルパスでインポートする必要があります。

新しいモジュールをすべてのユーザーから見えるようにするには、基本的に2つのオプションがあります。

  1. モジュールをデフォルトのシステム全体のモジュールディレクトリ ( C:\Windows\system32\WindowsPowerShell\v1.0\Modules ).
  2. システム環境を以下のように変更する。 PSModulePath 変数にカスタムモジュールのディレクトリがすでに含まれています (たとえば グループポリシー・プリファレンス ).

ただし、後者は修正後に起動したPowerShellセッションに対してのみ有効となります。