无法执行 Exchange 的 PowerShell 脚本,但已设置执行策略

无法执行 Exchange 的 PowerShell 脚本,但已设置执行策略

我不知道发生了什么,但我定期执行 Exchange 的 HealthChecker。

但现在我收到错误。即使我的执行策略是RemoteSigned

即使将执行策略设置为unrestricted它也会显示同样的错误。

我的机器上可能屏蔽了 Microsoft 的脚本吗?我可以解除屏蔽吗?我使用了不同的配置文件,并且成功了。我的其他配置文件中的哪些内容可以屏蔽特定脚本?**

[PS] C:\temp>Get-ExecutionPolicy -list                                                      
Scope                                             ExecutionPolicy
-----                                             ---------------
MachinePolicy                                                   Undefined
 UserPolicy                                                   Undefined
    Process                                                   Undefined
CurrentUser                                                   Undefined
LocalMachine                                                RemoteSigned


[PS] C:\temp>.\ExchangeExtendedProtectionManagement.ps1 -ShowExtendedProtection
.\ExchangeExtendedProtectionManagement.ps1 : Die Datei "C:\temp\ExchangeExtendedProtectionManagement.ps1" kann nicht
geladen werden, da der Vorgang durch Richtlinien für die Softwareeinschränkung, z. B. die von der Gruppenrichtlinie
erstellten Richtlinien, blockiert wird.
In Zeile:1 Zeichen:1
+ .\ExchangeExtendedProtectionManagement.ps1 -ShowExtendedProtection
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Sicherheitsfehler: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess
[PS] C:\temp>.\HealthChecker.ps1
.\HealthChecker.ps1 : Die Datei "C:\temp\HealthChecker.ps1" kann nicht geladen werden, da der Vorgang durch
Richtlinien für die Softwareeinschränkung, z. B. die von der Gruppenrichtlinie erstellten Richtlinien, blockiert wird.
In Zeile:1 Zeichen:1
+ .\HealthChecker.ps1
+ ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : Sicherheitsfehler: (:) [], PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

编辑:由于某种原因,似乎微软的签名不再受信任:请问您是否同意这项行动?

Ausführen des Vorgangs "Update script to latest version" für das Ziel "HealthChecker.ps1".
[J] Ja  [A] Ja, alle  [N] Nein  [K] Nein, keine  [H] Anhalten  [?] Hilfe (Standard ist "J"): J
WARNUNG: Signature is not trusted by machine as Valid, status: NotTrusted.
WARNUNG: AutoUpdate: Signature could not be verified: C:\Users\MartinAdmin\AppData\Local\Temp\HealthChecker.ps1.
WARNUNG: AutoUpdate: Update was not applied.
Exchange Health Checker version 22.08.09.0638

答案1

问题在于 Microsoft 证书被放置在不受信任的发布者处。

删除证书后,untrusted publishers我就能像以前一样启动所有脚本了。

在此处输入图片描述

答案2

由于脚本在执行策略设置为“绕过”时有效,这意味着某些策略仍在限制执行。

尽管“无限制”策略似乎允许一切,但事实并非如此。例如,在执行未签名的脚本之前,它可能会出现警告并要求您提供正确的权限。您可以尝试对脚本进行签名,看看这是否是问题所在。

要真正不受限制地运行,这需要旁路策略。

我猜不出您的配置文件中发生了哪些变化导致错误突然发生。甚至可能是某些配置文件损坏,这种情况有时会在 Windows 中发生。如果没有发现任何可以解释问题的内容,您可以继续使用 Bypass。

答案3

如果 PowerShell 脚本是从互联网上下载的,则很可能被阻止。右键单击该文件并勾选“解除阻止”,然后“确定”,或运行“Unblock-File”:

Unblock-File -Path <filepath>

Unblock-File 的描述似乎符合您的情况

Unblock-File cmdlet 可让您打开从 Internet 下载的文件。它可解除对从 Internet 下载的 PowerShell 脚本文件的阻止,以便您可以运行它们,即使 PowerShell 执行策略为 RemoteSigned 也是如此。默认情况下,这些文件被阻止,以保护计算机免受不受信任文件的侵害。

相关内容