web-dev-qa-db-ja.com

オフラインマシンにSQL Server PowerShellモジュールをインストールするにはどうすればよいですか?

外部サイトに接続できないSQLサーバーマシンがいくつかあります。

データベースを管理するときにPowerShellを使用することが多くなっているので、PowerShellルーチンを使用するには、このモジュールをインストールする必要があります。

それらのオフラインマシンにSQL Serverモジュールをインストールすることは難しいことが証明されています。

モジュールをインストールしようとすると:

Enter image description here

SqlServerモジュールは NuGetモジュールパッケージ を要求します:

Enter image description here

次の図に示すように、この赤い文字の海と次のエラーメッセージが表示されます。

警告:URI ' https://go.Microsoft.com/fwlink/?LinkID=627338&clcid=0x409 'から ''にダウンロードできません。

警告:利用可能なプロバイダーのリストをダウンロードできません。インターネット接続を確認してください。 PackageManagement\Get-PackageProvider:パッケージプロバイダー 'NuGet'が見つかりません。

まだインポートされていない可能性があります。 「Get-PackageProvider -ListAvailable」を試してください。

C:\ Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30 + ... tProvider = PackageManagement\Get-PackageProvider -Name $ script:NuGetにあります...

Enter image description here

このPowerShellモジュールのインストールの回避策は何ですか?

7

PowerShellにはこのための組み込みメカニズムがあり、 前の回答 よりも簡単です。

インターネットに接続されたコンピューターからSave-Module sqlserver -path c:\tmpを実行します(モジュールの保存先のパスを置き換えます)。これにより、c:\tmpc:\tmp\SqlServer)内の同じ名前のディレクトリにモジュールが保存されます。

次に、そのディレクトリ全体をターゲットコンピュータにコピーします。ユーザーが利用できるようにする方法に応じて、宛先にはいくつかのオプションがあります。 PowerShell 5.1以前では、PSModulePath環境変数のパスを確認してください。私のシステムでは、次のようになっています。

> $env:psmodulepath.split(";")
C:\Users\MYNAME\Documents\WindowsPowerShell\Modules
C:\Program Files\WindowsPowerShell\Modules
C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
C:\Program Files\Intel\Wired Networking\
C:\Program Files (x86)\Microsoft SQL Server\150\Tools\PowerShell\Modules\

モジュールをすべてのユーザーが利用できるようにするために、C:\Program Files\WindowsPowerShell\Modulesに配置します。自分だけの場合はC:\Users\MYNAME\Documents\WindowsPowerShell\Modulesに入ります

PowerShell Core またはPowerShell 7を実行している場合、これらのパスは少し異なる場合があります。 $PSGetPathの1つ以上のパスを確認します。

ここから、Import-Module sqlserverを正常に実行できるはずです。

恥知らずなプラグイン:PowerShellを介して多くのSQL Server管理を行っている場合(そして私は心からお勧めします!)、 dbatools モジュールをチェックアウトする必要があります。

7
alroc

これは私がそれを成し遂げた方法です。 thisthis のようないくつかの記事からオンラインで情報を得ました。

それらの記事を公開してくださった方々に心から感謝しています。


したがって、(インターネットにアクセスできる)別のコンピューターを探して、NuGetパッケージがインストールされていることを確認し、そのフォルダーを調べます。見える:

Enter image description here

Enter image description here

したがって、DLLファイルをインターネットにアクセスできないマシンにコピーし、同じフォルダ構造に保存する場合は、必ず閉じて再度開いてください PowerShell ISE プログラム。

ここでinstall-module -name sqlserverを再試行しても、必要なリポジトリに関するメッセージが表示されます。

Enter image description here

そして、以下のエラーメッセージ:

enter image description here

だからあなたはより良い 手動でダウンロード 現在SqlServerモジュールパッケージ ここ から。

手動でダウンロードするには、「生のnupkgファイルをダウンロード」をクリックします。パッケージのコピーが、.. nupkgという名前でブラウザーのダウンロードフォルダーにコピーされます。

いくつかの指示があります ここ

  1. ここ からインターネットにアクセスできるシステムにモジュールをダウンロードします
  2. これにより、.nupkg形式のフォルダーがダウンロードされます。フォルダの名前を.Zip拡張子に変更します。
  3. Zipフォルダーをターゲットサーバーの任意の場所にコピーします(私の場合はc:\sql_installで、フォルダーに解凍します-フォルダーの名前をsqlserverに変更します)
  4. powerShellに移動して、次のスクリプトを実行します。

    $env:PSModulePath
    

    Enter image description here

  5. 上記の結果からあなたは私のパスを見ることができ、それに基づいてsqlserverフォルダーを2から次の場所にコピーしました:

    C:\ Program Files\WindowsPowerShell\Modules;

    C:\ Windows\system32\WindowsPowerShell\v1.0\Modules;

    C:\ Program Files>(x86)\ Microsoft SQL Server\130\Tools\PowerShell\Modules \

  6. Powershell iseを閉じて再度開きます(常に管理者として)

  7. Powershell ise-> Modules-sqlserverが存在する場合:

    Enter image description here

  8. そうでない場合-何かがうまくいかなかった-そうでなければ、今すぐ実行できるはずです

    Import-Module sqlserver
    
  9. そしてPowerShellでテストするとき:

    Get-SqlAgent -ServerInstance my_server_name

    enter image description here

それがうまくいったなら、あなたは行ってもいいです。

3