这可能是一个愚蠢的问题,但我想知道为什么我不能像ps1
运行bat
文件一样运行任何 PowerShell 脚本()?
即使 PS 有一些额外的(不安全的)命令,我总是可以绕过安全设置并从 bat 运行这个:Powershell.exe -executionpolicy remotesigned -File .\do_whatever.ps1
。如果我可以轻松诱骗用户运行我未签名的脚本,那么签名脚本的概念有什么用呢?
我肯定忽略了一些安全问题...对吗?
答案1
这是一次保真度检查。
想一想你在 HTTPS 网站上看到的“证书警告”——你能刚好经过警告的“下一步”,但警告会提醒您注意一些错误的事情。
签名的其中一个好处是,您可以知道脚本是否已被更改。考虑一下:
您创建一个脚本来执行内部管理 ClearIISLogs.ps1,并设置提升的计划任务以每天运行它。(powershell.exe clearIISLogs.ps1)
在这种情况下,如果对 ClearIISLogs.ps1 具有写权限的用户尝试更改脚本,则计划任务将无法执行。脚本需要再次由受信任的发布者签名,然后才允许执行。
如果您要配置计划任务以绕过 powershell 安全性(-setexecuitionpolicy unrestricted),则修改后的 ClearIISLogs.PS1 将毫不费力地执行......