Powershell在一个会话中只允许执行指定命令的方法
更新时间:2014年11月07日 09:57:17 投稿:junjie
这篇文章主要介绍了Powershell在一个会话中只允许执行指定命令的方法,使用本文的技巧可以达到控制权限的功能,需要的朋友可以参考下
支持所有PS版本
Powershell处理可执行程序(如EXE)类似其它语言。然而你也可以让PS阻止执行任何程序或仅允许执行授权文件。
默认是允许执行任何程序:
复制代码 代码如下:
PS> $ExecutionContext.SessionState.Applications
*
下面将授权PS只允许执行ping.exe和regedit.exe命令。
复制代码 代码如下:
$ExecutionContext.SessionState.Applications.Clear()
$ExecutionContext.SessionState.Applications.Add('ping.exe')
$ExecutionContext.SessionState.Applications.Add('regedit.exe')
请看结果:
复制代码 代码如下:
$ExecutionContext.SessionState.Applications
ping.exe
regedit.exe
比如,我此时执行ipconfig时就应当报错:
复制代码 代码如下:
PS> ipconfig
ipconfig : 无法将“ipconfig.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请
确保路径正确,然后再试一次。
所在位置 行:1 字符: 1
+ ipconfig
+ ~~~~~~~~
+ CategoryInfo : ObjectNotFound: (ipconfig.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
当然,你也可以还原到初始设置:
复制代码 代码如下:
$ExecutionContext.SessionState.Applications.Add('*')
PS> explorer
PS>
所以,它能较好的防止EXE的执行(或意外执行非法EXE),使用它作为一种安全模式,你就可以关闭。当关闭了它,你将不能执行访问.net对象,于是在当前会话你将不能在恢复这些设置。
相关文章
探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
我们经常在程序设计中用到的数组,同样在脚本中很常用。本节就详细介绍一下数组,以及哈希表在PowerShell中的使用2012-12-12
PowerShell小技巧之使用New-Module命令动态创建对象
这篇文章主要介绍了在PowerShell中使用New-Module命令动态创建对象,比New-Object高大上很多了吧2014-09-09
用PowerShell删除N天前或指定日期(前后)创建(或修改)的文件
这篇文章主要介绍了用PowerShell删除N天前或指定日期(前后)创建(或修改)的文件,需要的朋友可以参考下2016-11-11


最新评论