【问题标题】:Executing Powershell on remove server fails when path to script is fully qualified当脚本路径完全限定时,在删除服务器上执行 Powershell 失败
【发布时间】:2015-05-28 08:14:48
【问题描述】:

我有两台服务器在同一个域上运行 Windows Server 2012 R2,\tt-sql.perf.corp 和 \tt-file.perf.corp。在文件服务器的共享文件夹\tt-file.perf.corp\fileshare\helloworld.ps1 中有一个Powershell 脚本。我在执行以下命令的 sql server 上有一个应用程序:

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,并且都设置为 Unrestricted。两台服务器上都禁用了 UAC。怎么回事?

【问题讨论】:

    标签: powershell windows-server-2012-r2 fully-qualified-naming


    【解决方案1】:

    您似乎已经找到了解决方法(使用短名称与 FQDN),所以我将尝试回答您首先遇到此问题的原因。

    更多的可以找到in this blog post;实际上,这种情况正在发生,因为当您为服务器指定 FQDN 时,您正在与 PowerShell / Windows 安全功能之一发生冲突。即使您指定 PowerShell 应该绕过正常的执行策略,从 FQDN 运行也会使 Windows 认为该文件来自网络,因此 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"):
    

    但它不能,因为你在非交互模式下运行 shell。


    所以你有两个选择来解决这个问题,真的:

    1. 正如这篇博文所述,您可以通过将 UNC 路径设置为 IE 中的受信任站点来解决问题,或者仅使用您所看到的短名称(使用 \tt-file\ 与 \tt-file.perf .corp) 代替。
    2. 您可以为本地 Intranet 区域使用组策略(或在 IE 中配置,如果这是一台一次性计算机)地址。如果这是一台一次性机器,请转到 Internet Explorer、工具、Internet 选项,然后转到安全选项卡。点击本地 Intranet、高级,然后在此处添加您的 FQDN,如下所示。

    如果这是您要全局配置的设置,请像上面在组策略管理控制台中的以下位置一样指定路径:

    用户配置,展开策略 > Windows 设置 >Internet Explorer维护>安全 3. 双击安全区域和内容分级,然后选择导入当前安全区域和隐私设置。

    有关组策略方法的更多信息,refer to this thread here on TechNet.

    我希望这会有所帮助!不幸的是,我想不出一个好的 PowerShell 方法来解决这个问题:)。

    【讨论】:

    • 感谢您提供的信息,这解释了它。你知道为什么我不会在另一个内部域上看到这个问题吗?据我所知,没有将域添加到本地 Intranet 的组策略,也没有在 IE 中设置。我不知道在哪里可以找到可以让它工作的东西。
    • 在我之前提到的受信任站点的同一区域中,Internet Explorer 中有一个设置,无论如何,您可以单击一个复选框,它会自动确定 Intranet 站点并绕过安全性。也许那个框被选中了?
    猜你喜欢
    • 2023-01-18
    • 1970-01-01
    • 2021-09-19
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-16
    • 1970-01-01
    相关资源
    最近更新 更多