powershell脚本执行绕过powershell下脚本执行限制(cmd下执行)
powershell脚本运行方式有两种,一种是powshell中运行,另一种是在cmd中(在某些情况下相当有用)
powershell一般默认是禁止脚本运行,想要修改允许脚本运行,需要以管理员权限运行powershell,但有时候我们没有管理员权限,只有普通用户权限,这样就没有办法设置允许脚本运行,这时,cmd中运行脚本的优势就体现出来了。在cmd中运行脚本可以绕过powershell的限制。
(cmd)本地权限绕过执行:PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
powershell:Get-ExecutionPolicy(查看当前脚本执行权限) Set-ExecutionPolicy(设置脚本执行权限)
一、使用自动化命令查看并统计在powershell有别名的cmd下的命令(cmd的命令可以在powershell下运行并且在powershell下有别名)
1.代码如下:
<#
使用自动化命令查看并统计在powershell有别名的cmd下的命令(cmd的命令可以在powershell下运行并且在powershell下有别名)
#>
$cname=cmd /c help #$cmd /c help 获得的结果是一个数组对象
$len=$cname.count-3 #观察cmd /c help获得数据,去掉前两行和最后一行无用数据
$n=0
#遍历数组
foreach ($i in $cname[1..$len])
{
$sn=$i.split()[0] #对每行的数据进行处理,并得到第一个值(命令名称)
if ($sn -ne "") #-ne 不等于
{
$pcom=get-alias $sn -erroraction silentlycontinue #获得每个命令的别名,当出现错误不显示,继续执行
if ($?) #返回上一条指令执行的结果,成功返回True,失败返回False
{
$pcom.displayname #$pcom是一个对象
$n+=1 #计数
}
}
}
write-host "$n Done" #write-host是写到控制台
pause #暂停
2.运行方式有两种,一种是powershell中运行,另一种在cmd中
2.1(cmd)本地权限绕过执行:PowerShell.exe -ExecutionPolicy Bypass -File xxx.ps1
可以看到直接在cmd下执行powershell脚本,绕过了powershell对ps1脚本执行的限制(在某些情况下相当有用)
2.2在powshell下执行
可以看到当前脚本的执行权限是限制,当想修改脚本的执行权限时,只能以管理员打开powershell,在某些情况下无法实现管理员修改,这时候只能通过cmd运行脚本了
以管理员运行powerrshell之后,设置脚本的运行策略
3.设置完脚本的运行策略之后,就可以运行脚本了
4.隐藏脚本到后台
powershell -WindowStyle hidden -ExecutionPolicy Bypass -file xxx.ps1
运行完隐藏的命令之后,脚本窗口便消失了,只有后台能看到脚本正在运行
5.想要退出隐藏,可以在任务管理器结束powershell进程