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進程