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

Powershell在一个会话中只允许执行指定命令的方法

程序员文章站 2022-03-31 09:14:02
支持所有ps版本 powershell处理可执行程序(如exe)类似其它语言。然而你也可以让ps阻止执行任何程序或仅允许执行授权文件。 默认是允许执行任何程序: 复制...

支持所有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对象,于是在当前会话你将不能在恢复这些设置。