PowerShell执行策略被powershell.exe参数破坏了吗?

时间:2014-02-06 22:42:57

标签: powershell

在PowerShell中,除了试图控制哪些脚本文件可以运行之外,限制性执行策略是否有优势?默认情况下,不允许运行PowerShell脚本,但似乎恶意方想要运行PowerShell脚本,他们只需使用BAT文件引导到它,该文件调用PowerShell并将-ExecutionPolicy参数设置为“bypass”。

我是否遗漏了某些内容,或者这是否会破坏执行政策机制?为什么在只能使执行策略限制较少时签署脚本(looks like quite a hassle)?

下面是我写的一个BAT脚本,它创建一个未签名的ps1文件并运行它。它适用于执行策略为Restricted的计算机,该策略应该禁止脚本。 UAC已启用,未显示任何提升提示。它甚至拨打互联网并获得"Hey, Scripting Guy!"博客的最新标题。

echo write-host "`r`nPowershell code running on $(hostname).`r`n`r`nHere's the latest headline from the 'Hey, Scripting Guy!' blog: '$(([xml](New-Object Net.WebClient).DownloadString("http://blogs.technet.com/b/heyscriptingguy/atom.aspx")).feed.entry[0].title)'.`r`n`r`nPress Enter to close.`r`n"; read-host > script.ps1
powershell -ExecutionPolicy bypass -Command .\script.ps1

2 个答案:

答案 0 :(得分:0)

禁止脚本的默认PowerShell执行策略仅用于防止意外调用脚本。通过执行以下操作,即使在没有每个实例参数的早期版本的powershell上,它也可能被轻易违反

  • 打开要在记事本中运行的任何脚本
  • 将内容复制到剪贴板
  • 将剪贴板粘贴到powershell
  • 的实例

任何真正想要运行脚本的人都可以使用这个或其他各种机制来实现。它对防止无意执行脚本非常有用

答案 1 :(得分:0)

执行策略将阻止某人修改由其他人运行的现有脚本,或者作为自动过程(例如,计划任务)。从安全角度来看,使用该.bat文件与编译代码在.exe中执行相同操作没有什么不同。

此外,当机器上的the execution policy is set via local/group policy时,-ExecutionPolicy参数不起作用(根据Ansgar对该问题的评论)。