支持所有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對象,于是在當前會話你將不能在恢復這些設置。