powershell 执行策略
前言
上一篇博文,我介绍了一下powershell和cmd的对比。通过学习,我发现powershell的确比cmd更加power,也更加适应现在的使用场景。
那么本文将继续介绍一个powershell的另一个特性,执行策略。
execution policy描述
首先我们看看官网是怎么描述execution policy的:
PowerShell's execution policy is a safety feature that controls the conditions under which PowerShell loads configuration files and runs scripts. This feature helps prevent the execution of malicious scripts.
On a Windows computer you can set an execution policy for the local computer, for the current user, or for a particular session. You can also use a Group Policy setting to set execution policies for computers and users.
Execution policies for the local computer and current user are stored in the registry. You don't need to set execution policies in your PowerShell profile. The execution policy for a particular session is stored only in memory and is lost when the session is closed.
The execution policy isn't a security system that restricts user actions. For example, users can easily bypass a policy by typing the script contents at the command line when they cannot run a script. Instead, the execution policy helps users to set basic rules and prevents them from violating them unintentionally.
On non-Windows computers, the default execution policy is Unrestricted and cannot be changed. The Set-ExecutionPolicy cmdlet is available, but PowerShell displays a console message that it's not supported. While Get-ExecutionPolicy returns Unrestricted on non-Windows platforms, the behavior really matches Bypass because those platforms do not implement the Windows Security Zones.
我们总结一下,这段文字中提到了几个要点:
- powershell的执行策略是种安全特性,保证不会什么猫狗脚本都执行,对于操作系统是种保护。
- windows的执行策略执行粒度分3种:本机、当前用户、特定会话。本机和当前用户的策略会存进注册表,当前会话的执行策略只会进内存,会话一断就会消失。
- 执行策略并不会限制用户操作,只是给了用户一把安全锁,可用可不用。
- 对于非windows机器,不会有执行策略的设置,因此会建议windows机器来做设置。
常见的执行策略
明白了上面的几个要点,我们来看windows提供了哪些执行策略供我们使用。
ByPass
任何脚本都可以执行,且没有任何提示。Undefined
没有设置脚本执行策略。Unrestricted
允许运行未签名的脚本,但是会有安全性提示。Default
默认策略,对客户端是Restricted,对服务端是RemoteSignedRemoteSigned
Windows Server 2012 R2 之后的默认策略
如果从网络下载的脚本会有限制,需要添加数字签名;如果是本地创建的脚本,则不需要数字签名可以运行。
但是问题来了,真的会有老哥从网络上下载到本地运行,而不是复制粘贴到本地,自己创建的文件里?
不会吧,不会吧?

AllSigned
本策略只允许运行具有数字签名的脚本。Restricted
本策略允许运行命令,但无法运行脚本。
运行范围
上面也讲了,powershell有3种范围:本机、当前用户、当前会话。
可使用Scope选项进行设置。
PS C:\Windows\system32> Get-ExecutionPolicy -Scope LocalMachine
RemoteSigned
PS C:\Windows\system32> Get-ExecutionPolicy -Scope CurrentUser
Undefined
PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned -Scope CurrentUserc
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”): A
PS C:\Windows\system32> Get-ExecutionPolicy -Scope CurrentUser
RemoteSigned
cmd调用powershell
由于powershell和cmd是不同的命令行,而且powershell有执行策略的限制,如果我们想使用cmd去运行powershell脚本,除了需要设置powershell的策略,还需要使用cmd设置ps1脚本默认的运行方式。
默认方式是打开/编辑,而不是运行。
设置成运行:
ftype Microsoft.PowerShellScript.1="%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" "%1"
设置成编辑:
ftype Microsoft.PowerShellScript.1="%SystemRoot%\system32\notepad.exe" "%1"
鸣谢
官网
powershell脚本执行策略
CMD命令行修改.ps1文件(powershell脚本)的默认打开方式
powershell 执行策略的更多相关文章
- 绕过PowerShell执行策略方法总结
默认情况下,PowerShell配置为阻止Windows系统上执行PowerShell脚本.对于渗透测试人员,系统管理员和开发人员而言,这可能是一个障碍,但并非必须如此. 什么是PowerShell执 ...
- Win powershell执行策略配置
参考连接:https://blog.csdn.net/jeffxu_lib/article/details/84710386 参考连接:http://www.cragsman.org/index.ph ...
- PowerShell~执行策略的介绍
首先看一下无法加载ps1脚本的解决方法 事实上也是由于策略导致的 解决方法主是开启对应的策略 set-ExecutionPolicy RemoteSigned 执行策略更改 执行策略可以防止您执行不 ...
- 【原创】NuGet 出现“无法初始化 PowerShell 主机,如果将你的 PowerShell 执行策略设置设置为 AllSigned ,请先打开程序包管理控制台以初始化该主机” 错误的解决方法
现象: 网上的设置 AllSigned 等方法都无效..后来考虑可能跟命令行版本兼容性有关系,然后在注册表命令行配置里发现一 ForceV2 设置项,抱着试一试的心态改了下,果然解决了! 解决方法:修 ...
- PowerShell 脚本执行策略
为防止恶意脚本的执行,PowerShell 中设计了一个叫做执行策略(Execution Policy)的东西(我更倾向于把它叫做脚本执行策略).我们可以在不同的应用场景中设置不同的策略来防止恶意脚本 ...
- python虚拟环境virtualenv、virtualenv下运行IDLE、powershell 运行脚本由执行策略引起的问题
一.为什么要创建虚拟环境: 应为在开发中会有同时对一个包不同版本的需求,创建多个开发环境就能解决这个问题.或许也会有对python不同版本的需求,这就需要使用程序来管理不同的版本,virtualenv ...
- Powershell ExecutionPolicy 执行策略
简单说明 powershell对于脚本的执行有着严格的安全限制 Get-ExecutionPolicy -List #查看当前的执行策略 Set-ExecutionPolicy -Scope Curr ...
- Powershell 执行外部命令
Powershell 执行外部命令 724 11月, 2011 在 Powershell tagged Powershell教程 / 程序 by Mooser Lee本文索引[隐藏]1通过nets ...
- PowerShell执行脚本时“系统上禁止运行脚本”问题解决
PowerShell执行脚本策略错误 错误信息:PowerShell运行脚本错误--"系统上禁止运行脚本" 原因:默认执行策略为Restricted 解决:执行Set-Execut ...
随机推荐
- Servlet表单数据
1.GET 方法 GET 方法向页面请求发送已编码的用户信息.页面和已编码的信息中间用 ? 字符分隔,如下所示: http://www.test.com/hello?key1=value1&k ...
- [codeforces] 暑期训练之打卡题(三)
每个标题都做了题目原网址的超链接 Day21<Alphabetic Removals> 题意: 给定一个字符串,要求按照字典序按照出现的前后顺序删除 k 个字母 题解: 记录字符串中各个字 ...
- Random 中的Seed
C#中使用随机数 看下例 当Random的种子是0时 生成的随机数列表是一样的 也就是说当seed 一样时 审查的随机数时一样的 Random的无参实例默认 种子 时当前时间 如果要确保生成的随机数不 ...
- Java ES 实现or查询
es mapping里有三个字段: A:Integer B:Integer C:TEXT 现在想实现一个查询,来检索 ( (A =1 and B=2) or (c like "test ...
- Typecho博客转移服务器,数据备份.
目录 Typecho博客转移服务器,数据备份. 简述操作(有基础的mjj看这个简述就可以了.) 详细步骤(建议小白来看, 已经在很多详细方面进行说明了.) 备份篇 备份导入与数据库转移篇 重新部署ty ...
- np.linspace,numpy中的linspace()
import numpy as np x=np.linspace(1,10) y=np.linspace(1,10,num=10,retstep=True)#num可省略 print(x) print ...
- 阶段性总结 GDOI 2022 PJ
阶段性总结 GDOI 2022 PJ 比赛经过 Day ? ~ Day -1 半停课集训,补了很多东西,但是之前漏得太多了,结果是还有很多题没改 打了若干场 AtCoder ,承认自己思维的不足,训练 ...
- flink处理延迟
flink处理延迟 flink主要是处理实时数据的,在处理实时数据的过程中,难免会遇到乱序的存在.以事件时间举例,先发生的事件后到处理算子.flink针对乱序数据的处理主要有三种方式: 拨慢水位线的生 ...
- Mybatisi和Spring整合源码分析
一.MybatisSpring的使用 1.创建 Maven 工程. 2.添加依赖,代码如下 <dependency> <groupId>org.mybatis</grou ...
- SAP 实例 13 Random Grouping with LOOP
REPORT demo_loop_group_by_random. CLASS demo DEFINITION. PUBLIC SECTION. CLASS-METHODS: main, class_ ...