欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PowerShell脚本写的文件.ps1文件介绍

程序员文章站 2024-01-30 08:03:52
.ps1文件是powershell写好的脚本文件。在windows系统中,默认情况下是不允许执行.ps1文件的,那么怎么才能让系统允许执行.ps1文件呢? 什么是“.ps...

.ps1文件是powershell写好的脚本文件。在windows系统中,默认情况下是不允许执行.ps1文件的,那么怎么才能让系统允许执行.ps1文件呢?

什么是“.ps1”文件?

这个是powershell写的脚本文本,你可以在记事本中写一段powershell代码,然后将其保存为“xxx.ps1”,后面要使用它的时候,双击即可运行了。这有点像批处理的“.bat”文件,也有点像vbscript的“.vbs”文件。这些都是windows的脚本文件。

如何执行“.ps1”文件?

接下来大家会问,那我们就双击它运行好了,还有什么好说的吗?当然要说。我们想得很美,双击一下就执行了,但是windows系统默认是不允许执行.ps1文件的,所以你得往下看。

执行不成功的解决办法

1、将powershell的脚本内容保存到一个.ps1为后缀的文件中。
2、双击执行此ps1文件很有可能无法执行,提示:无法加载文件 d:\powershell\test\myfirst1.ps1,因为在此系统中禁止执行脚本。
3、运行get-executionpolicy,如果结果是restricted,那表示禁止执行脚本。
4、执行如下命令,降低系统的安全性,允许执行脚本:set-executionpolicy -executionpolicy unrestricted

关于执行策略

这里有一个executionpolicy,翻译过来就是执行策略。windows对powershell脚本默认的执行策略是:不允许执行,即restricted。把它改成unrestricted自然就可以执行了。但微软给出的best practise(“最佳实践”)是remotesigned,这个级别比unrestricted要高一点,不是什么程序都能执行。据我简单的了解,remotesigned是要求远程下载的ps1脚本文件必须是签名的才可以执行。至于我们在本机上自写的脚本程序,那是没有区别,都可以执行的。

修改执行策略需要权限

另外需要说明的是,如果是在win7、win8、windows 2008、windows 2012等系统上,且不是使用administrator账号来执行这个set-executionpolicy语句,将会报错,错误如下:
set-executionpolicy : 对注册表项“hkey_local_machine\software\microsoft\powershell\1\shellids\microsoft.powershell”的访问被拒绝。

这时候小编很疑惑,我使用账号虽然不是administrator,但也是administrators组的,为什么会没有权限呢?不管了,在注册表中,找到这个键,然后点右键选择“权限”,然后给当前登录系统的账号加一个“完全控制”的权限(只有“只读”和“完全控制”两个权限,所以就选“完全控制”了)。然后,再重新执行set-executionpolicy -executionpolicy unrestricted,就可以成功了!