web-dev-qa-db-ja.com

SQLServer内のPowerShell実行ポリシー

誰か助けてもらえますか?

まず、これが間違ったフォーラムであり、あなたが読まなければならないテキストの量についてお詫び申し上げます。私はまだ画像を投稿することを許可されていません、そして写真は千の言葉の価値があります.....

SQLSMS 2008R2およびSQL2012からPowerShellを起動すると(インスタンスを右クリックして... [Powershellの開始]を選択)、プロセスでスクリプトが無効になっていることが報告されます。これがデフォルト設定であり、これを変更する必要があることを理解していますが、SQLPSモジュールのインポートも失敗しているようです

import-module:ファイルD:\ Program Files(x86)\ Microsoft SQL Server\120\Tools\PowerShell\Modules\SQLPS\Sqlps.ps1は、このシステムでスクリプトの実行が無効になっているため、ロードできません。詳細については、「get-helpabout_signing」を参照してください。行:1文字:14 + import-module <<<< SQLPS -DisableNameChecking + CategoryInfo:NotSpecified :( :) [Import-Module]、PSSecurityException + FullyQualifiedErrorId:RuntimeException、Microsoft.PowerShell.Commands.ImportModuleCommand Convert-UrnToPath:The 「Convert-UrnToPath」という用語は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されません。名前のスペルを確認するか、パスが含まれている場合は、パスが正しいことを確認して、再試行してください。行:1文字:70&{[System.Console] :: Title = 'SQL Server Powershell'; Convert-UrnToPath <<<< 'Server [@ Name =' 'xxxx\xxxx' ']' | cd} + CategoryInfo:ObjectNotFound:(Convert-UrnToPath:String)[]、CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException

実行ポリシーを変更できません。

set-executionpolicy:Windows PowerShellは実行ポリシーを正常に更新しましたが、設定はより具体的なスコープで定義されたポリシーによって上書きされます。オーバーライドにより、シェルは現在の有効な実行ポリシーである「制限付き」を保持します。 「Get-ExecutionPolicy-List」と入力して、実行ポリシー設定を表示します。詳細については、「Get-Help Set-ExecutionPolicy」を参照してください。 1行目char:20 + set-executionpolicy <<<< unrestricted + CategoryInfo:PermissionDenied :( :) [Set-ExecutionPolicy]、Sec urityException + FullyQualifiedErrorId:ExecutionPolicyOverride、Microsoft.PowerShell.Com
mands.SetExecutionPolicyCommand

ただし、SQLエージェントのPowerShellジョブをセットアップし、sql2008R2は正常に実行されますが、SQL2012は次のメッセージで失敗します。

ユーザーとして実行:xxxxxxx set-executionpolicyuntre。ジョブステップは、PowerShellスクリプトの1行目でエラーを受け取りました。対応する行は「import-moduleSQLPS-DisableNameChecking」です。スクリプトを修正し、ジョブを再スケジュールします。 PowerShellによって返されるエラー情報は次のとおりです。 '拡張タイプのデータファイルの読み込み中に次のエラーが発生しました:Microsoft.PowerShell、D:\ Program Files(x86)\ Microsoft SQL Server\120\Tools\PowerShell\Modules\SQLPS\sqlprovider。 types.ps1xml:次の検証例外のためにファイルがスキップされました:AuthorizationManagerチェックに失敗しました。プロセス終了コード-1。ステップは失敗しました。

SQLが使用するSQLアカウント(D:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\SQLPS.exe)でPowerShellを実行すると、SQLPSモジュールを読み込めないという同じエラーメッセージが表示されます(SQLが読み込めない場合は意味があります)。 SQLアカウントで実行ポリシーを変更しようとすると、次のエラーメッセージが表示されます。

set-executionpolicy:Windows PowerShellは実行ポリシーを正常に更新しましたが、設定はより具体的なスコープで定義されたポリシーによって上書きされます。オーバーライドにより、シェルは現在の有効な実行ポリシーである「制限付き」を保持します。「Get-ExecutionPolicy -List」と入力して、実行ポリシーの設定を表示します。詳細については、「Get-HelpSet-ExecutionPolicy」を参照してください。 :1 char:20 + set-executionpolicy <<<< unrestricted + CategoryInfo:PermissionDenied :( :) [Set-ExecutionPolicy]、Sec urityException + FullyQualifiedErrorId:ExecutionPolicyOverride、Microsoft.PowerShell.Com mands.SetExecutionPolicyCommand

したがって、設定は、より具体的なスコープで定義されたポリシーによって上書きされているように見えます。このポリシーはどこに設定されていますか?そして、このポリシーは何ですか?サーバーチームにこれをADポリシーレベルで設定するかどうか尋ねましたが、設定しなかったとのことです。

(アクセサリ... Windows PowerShellから)適切なPowerShellを使用している場合、問題はありません。私はこれらの問題についてWebを検索しましたが、誰もがset-execution-policyを使用すると言っています。 SQLPSモジュールのロードに失敗したり、実行ポリシーを変更できなかったりする人はいないようです。

どんなアドバイスでも大歓迎です!

2
user247460

まず、PowerShellコマンド「Get-ExecutionPolicy-List」を実行します(エラーメッセージに記載されています)。これにより、さまざまな実行ポリシースコープのリストと、どの設定がどのスコープで定義されているかがわかります。

このスコープのリストには、優先順位(MachinePolicy、UserPolicy、Process、CurrentUser、LocalMachine)があります。これらのスコープはそれぞれ異なる設定を持つことができます。

  • 制限付き
  • AllSigned
  • RemoteSigned
  • 無制限
  • バイパス
  • Undefined

Powershellは、リストされている順序でこれらのスコープを評価し、「未定義」以外に設定されている最初の設定を適用します。

'Set-ExecutionPolicy'の実行時に発生するエラーは、デフォルトのLocalMachineよりも具体的なスコープで 'Restricted'の設定が定義されていることを示しています。 Get-ExecutionPolicy -Listコマンドレットは、場所を示します。

制限付き設定がLocalUserスコープまたはProcessスコープのいずれかに適用されている場合は、これを変更できます。 Set-ExecutionPolicyコマンドレットを使用しますが、-scopeパラメーターを使用してスコープを指定します。例えば;

Set-ExecutionPolicy -Scope Process RemoteSigned

制限付き設定がMachinePolicyまたはUserPolicyスコープのいずれかで定義されている場合、これは、ドメイン管理者がローカル設定を上書きするグループポリシーを構成したことを示します。ここで、彼らと話をして、GPOを介してより制限の少ない設定を適用できるかどうかを確認する必要があります。

私の知る限り、ローカルでGPO設定を簡単に上書きすることはできません。ただし、これが間違っている場合は、誰かが修正してください!:)

3
Steve365

また、適切に診断するのは少し難しいですが、これはExecutionPolicyの問題だと思います。

このコマンドを使用しない理由はありますか?

_PS C:\> Import-Module SQLPS
_

いくつかの注意事項とトラブルシューティング手順:

  • アカウントにこれらの変更を行う権限がある場合は、_Set-ExecutionPolicy -Scope MachinePolicy_または_Set-ExecutionPolicy -Scope UserPolicy_を使用できます。

  • PowerShellには32ビットバージョンと64ビットバージョンがあります。それぞれに異なるExecutionPolicyがあります。 32ビットバージョンの実行ポリシー([スタート]メニューのWindows PowerShell (x86))を確認する必要があります。 _$env:PROCESSOR_ARCHITECTURE_は、32ビットではx86を返し、64ビットコンソールではAMD64を返します。

  • SQLまたはコンソールから実行する場合は、予想よりもユーザーとして実行されていることを確認してください。 _$env:USERNAME_が教えてくれます。

  • PowerShellコンソールをSQLユーザーとして実行し、_Get-ExecutionPolicy -list_を実行します

2
g.sulman