在記憶體中執行指令碼

2022-05-22 09:30:12 字數 1967 閱讀 8030

使用 curl 配合|,就能基本實現:不接觸硬碟,從遠端載入指令碼並執行。

假設,在處是乙個bash指令碼,內容如下:

echo "hello world."
我們在本地執行:

curl  | bash
即可看到指令碼執行的輸出:hello world.

curl -ls  | bash
或者使用我曾介紹過的左尖括號配合小括號的方法:

bash <(curl -ls )
效果是一模一樣的。

前述操作都是在linux下的,同時也介紹下windows中類似的操作。

我們會用到:

invoke-expression 用於執行指令碼

假設,在處是乙個powershell指令碼,內容如下:

echo "hello world."
那麼我們可以在本地powershell內按如下執行此指令碼:

invoke-expression (new-object net.webclient).downloadstring('')
即可看到指令碼執行的輸出:hello world.

有時候我們會在cmd中執行,那麼就不能直接使用invoke-expression了。我們可以呼叫powershell執行上述命令:

powershell "invoke-expression (new-object net.webclient).downloadstring('')"
就可以了。實際上,這個在powershell裡也是能執行的。

假如你的命令是要給別人執行的,那麼就給他後面這個樣子的,保證在powershellcmd中都能執行。

其實關於invoke-expression,它可以簡寫為:iex。上述命令就可以簡化為:

powershell "iex (new-object net.webclient).downloadstring('')"
這裡不得不吐槽的是,網上文章各種抄,找資料的時候,這段命令各種少空格,顯然是抄的時候不用心,自己都沒執行過……

如果你的指令碼執行了什麼危險操作,是會受到powershell預設執行策略的限制的。但是我們可以通過-executionpolicy來設定當前會話的執行策略。

其取值可以是:

我們可能會選擇bypass,這個策略是:

nothing is blocked and there are no warnings or prompts.

就是啥都不管,隨便執行,也不會有警告或者提示。

那麼我們的命令就變成如下樣子:

powershell -executionpolicy bypass "iex (new-object net.webclient).downloadstring('')"
鑑於-executionpolicy可以簡寫為:-exec,那麼我們的命令即可簡寫為:

powershell -exec bypass "iex (new-object net.webclient).downloadstring('')"
about execution policies

原文發布於:在記憶體中執行指令碼-

Linux中執行指令碼

bash shell 指令碼的方法有多種,現在作個小結。假設我們編寫好的shell指令碼的檔名為hello.sh,檔案位置在 data shell目錄中並已有執行許可權。方法一 切換到shell指令碼所在的目錄 此時,稱為工作目錄 執行shell指令碼 複製 如下 cd data shell hel...

自動執行指令碼

乙個偶然的機會,發現了自動執行指令碼的東東,真是神奇啊,可以執行sql 控制台命令等。由於研究的時間有限,所以知之甚少 先和大家分享下,哈 dim consoleprocess as new system.diagnostics.process consoleprocess.startinfo.fi...

C MFC ShellExecute執行指令碼

目前知道三種方式 winexec,shellexecute createprocess。1.阻塞式呼叫,呼叫時程序阻塞 void cmfccodedlg callshellscript cstring path,cstring fbat,cstring param shexecinfo.cbsize...