6

同じドメイン \tt-sql.perf.corp と \tt-file.perf.corp で Windows Server 2012 R2 を実行している 2 つのサーバーがあります。ファイル サーバーの共有フォルダー \tt-file.perf.corp\fileshare\helloworld.ps1 に Powershell スクリプトがあります。次のコマンドを実行するSQLサーバー上にアプリケーションがあります。

powershell -NonInteractive -InputFormat None -ExecutionPolicy Bypass -Command "& '\tt-file.perf.corp\fileshare\helloworld.ps1'"

次のエラーで失敗しています。

& : AuthorizationManager のチェックに失敗しました。行:1 文字:3 + & '\tt-file.perf.corp\fileshare\helloworld.ps1' + ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

IP アドレスを使用するようにパスを変更した場合も失敗します。

ただし、スクリプトへのパスが完全修飾されていない場合に機能します。 powershell -NonInteractive -InputFormat None -ExecutionPolicy Bypass -Command "& '\tt-file\fileshare\helloworld.ps1'"

Windows Management Instrumentation サービスは両方のサーバーで実行されています。両方のサーバーでも Get-ExecutionPolicy を実行しましたが、どちらも無制限に設定されています。両方のサーバーで UAC が無効になっています。どうしたの?

4

1 に答える 1

7

回避策 (短縮名と FQDN を使用) を既に見つけているようですので、代わりに、そもそもなぜこの問題に遭遇したのかについてお答えします。

このブログ投稿では、より優れたものを見つけることができます。サーバーに FQDN を指定すると、PowerShell/Windows セキュリティ機能のいずれかに違反しているため、事実上これが発生しています。PowerShell が通常の実行ポリシーをバイパスするように指定している場合でも、FQDN から実行すると、Windows はこのファイルが Web からのものであると認識し、PowerShell は次のような警告を表示します。

Run only scripts that you trust. While scripts from the Internet can be
useful, this script can potentially harm your computer. Do you want to run  
\\tt-file.perf.corp\fileshare\helloworld.ps1?
[D] Do not run  [R] Run once  [S] Suspend  [?] Help (default is "D"):

ただし、非対話モードでシェルを実行しているため、それはできません。


したがって、これを解決するには 2 つのオプションがあります。

  1. このブログ投稿で言及されているように、IE で UNC パスを信頼できるサイトにするか、ご覧のように短縮名のみを使用することで問題を解決できます (\tt-file\ と \tt-file.perf.corp を使用)。代わりは。
  2. ローカル イントラネット ゾーンのグループ ポリシー (または、これが 1 回限りのコンピューターの場合は IE 内で構成) アドレスを使用できます。これが 1 回限りのマシンである場合は、[Internet Explorer]、[ツール]、[インターネット オプション]、[セキュリティ] タブの順に移動します。以下に示すように、[ローカル イントラネット]、[詳細設定] の順にクリックし、FQDN をここに追加します。

単一のマシンの FQDN セキュリティ プロンプトの回避策の構成

これがグローバルに構成する必要がある設定である場合は、上記と同様に、グループ ポリシー管理コンソール内の次の場所でパスを指定します。

[ユーザーの構成] で、[ポリシー] > [Windows の設定] > [Internet Explorer のメンテナンス] > [セキュリティ] を展開します。 3. [セキュリティ ゾーンとコンテンツの規制] をダブルクリックし、[現在のセキュリティ ゾーンとプライバシー設定をインポートする] を選択します。

グループ ポリシー アプローチの詳細については、TechNet のこのスレッドを参照してください。

これが役立つことを願っています!残念ながら、この問題を解決する適切な PowerShell の方法は思いつきません :)。

于 2015-03-24T21:26:55.253 に答える