您现在的位置:首页 > >

Powershell 脚本简单入门(一)??执行策略

发布时间:

以前没有用过powershell,从头开始学*,看到网上好些教程上来就将历史什么的,觉得有些?嗦,就想写一个简单实用的入门教程,顺便记录下学*的过程。


从hello world开始

使用一个记事本或者其他别的随意什么文本编辑器都可以(我这里用的是vscode,装了powershell的插件,有语法提示,还挺好用),写上:


"hello world"

保存成 test.ps1,注意这里ps1后缀是powershell脚本的格式


保存好后在当前目录打开powershell的窗口,就是那个蓝蓝的家伙,运行. est.ps1,结果弹出提示:


. est.ps1 : 无法加载文件 E:myprojectpowershell_script est.ps1,因为在此系统上禁止运行脚本。
有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies

所在位置 行:1 字符: 1
+ . est.ps1
+ ~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

这里无法直接运行脚本,为什么?这是因为Windows给powershell设定了一个叫“执行策略”的东西。


为什么要弄这么一个执行策略呢,因为powershell能做的事情太多了,为了避免一些恶意脚本直接运行,一般家用的windows系统默认将执行策略设置成了“Restricted”,即受限制的。


我们可以运行命令来查看自己电脑上的执行策略被设置成了什么:


PS E:myprojectpowershell_script> Get-ExecutionPolicy
Restricted

运行完Get-ExecutionPolicy,输出Restricted,说明现在我的电脑是受限制的,不能运行任何的脚本。


所有的执行策略如下所示(参考About Execution Policies):


AllSigned. 要求所有脚本和配置文件均需受信任的发布者签名,包括在本地计算机上编写的脚本。(安全但是本地编写的脚本也要签名,麻烦)Bypass. 不会阻止你运行任何脚本,也没有提示和警告。(不安全)Default. 默认的执行策略,普通桌面Windows默认Restricted,服务器windows默认RemoteSigned。RemoteSigned. 要求从互联网上下载的所有脚本和配置文件均需要受信任的发布者签名,本地脚本则不需要签名。是Windows服务器的默认执行策略。(较为安全)Restricted. 无法加载配置文件或运行脚本。桌面Windows的默认执行策略。(安全,但无法运行脚本)Undefined. No execution policy is set for the scope. Removes an assigned execution policy from a scope that is not set by a Group Policy. If the execution policy in all scopes is Undefined, the effective execution policy is Restricted.(这里的Undefined不知道是什么东西,先不管它)Unrestricted. 从PowerShell 6.0开始,这是非Windows系统的默认执行策略,并且不能更改。 能够加载任何配置文件和运行任何脚本。如果运行从网上下载的未签名脚本,则会在运行之前提示您获得许可。(不安全)

经过权衡安全和便捷,决定设置成RemoteSigned策略,运行一下命令


PS E:myprojectpowershell_script> Set-ExecutionPolicy RemoteSigned

执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): y
PS E:myprojectpowershell_script>

然后再运行test.ps1脚本


PS E:myprojectpowershell_script> . est.ps1
hello world

OK,可以运行了。


友情链接: 医学资料大全 农林牧渔 幼儿教育心得 小学教育 中学 高中 职业教育 成人教育 大学资料 求职职场 职场文档 总结汇报