iT邦幫忙

0

在CMD中如何把這段呼叫VBS程序用POWERSHELL實現

  • 分享至 

  • xImage
%1 Mshta VBScript:CreateObject("Shell.Application").ShellExecute("CMD.exe","/C ""%~0"" ::","","RunAs",1)(Window.Close)&&Exit

以上為需要轉換的VBS程序,麻煩各位大大了~

安裝 gsudo 或是 Windows 11 Insider Preview Build 26052 有類似 Linux 的 sudo 指令,允許用戶直接從未提升權限的控制臺執行提升權限指令。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
zero
iT邦好手 1 級 ‧ 2024-06-04 19:40:38
最佳解答

問了一下ChatGPT,這只是一個提權用管理者權限運行目前的腳本指令而已,

你運行這段指令的時候,應該會跳出UAC吧,從命令來看也沒有腳本路徑

單純的只有呼叫CMD而已,這是要問什麼??


https://ithelp.ithome.com.tw/upload/images/20240604/200222848Fj6R8l0ix.png

https://ithelp.ithome.com.tw/upload/images/20240604/20022284OsUqO9z1j9.png

視窗雖然沒有顯示管理者權限,但裡面需要權限的指令確實可以運作了。

https://ithelp.ithome.com.tw/upload/images/20240604/20022284zDxP3ExrDG.png

程式碼

:: 檢查是否已以管理員身份運行
net session >nul 2>&1
if %errorLevel% neq 0 (
PowerShell -Command "Start-Process cmd -ArgumentList '/c %~f0" -Verb RunAs"
exit /b
)
看更多先前的回應...收起先前的回應...
dahezhi iT邦新手 4 級 ‧ 2024-06-04 19:43:49 檢舉

把他轉成POWERSHELL程序

zero iT邦好手 1 級 ‧ 2024-06-04 19:46:18 檢舉

你這段指令原本在哪裡執行的? CMD的批次檔?

dahezhi iT邦新手 4 級 ‧ 2024-06-04 19:49:31 檢舉
@echo off >nul
reg add "HKCU\Console" /v "WindowPosition" /t REG_DWORD /d 0x00000000 /f >nul
%1 Mshta VBScript:CreateObject("Shell.Application").ShellExecute("CMD.exe","/C ""%~0"" ::","","RunAs",1)(Window.Close)&&Exit
mode con lines=80 cols=166 >nul
color 0 >nul
chcp 65001 >nul
Setlocal ENABLEDELAYEDEXPANSION
call :WordColor
goto :MainMenu

:MainMenu
cls
zero iT邦好手 1 級 ‧ 2024-06-04 19:57:12 檢舉

如果你上面貼的就是批次檔的內容,你想用Powershell去跑這個批次檔?

dahezhi iT邦新手 4 級 ‧ 2024-06-04 20:01:55 檢舉

https://ithelp.ithome.com.tw/upload/images/20240604/20051671YczAetznLB.png
上面為系統管理員權限的窗口
下面則不是

而我是想把這段

%1 Mshta VBScript:CreateObject("Shell.Application").ShellExecute("CMD.exe","/C ""%~0"" ::","","RunAs",1)(Window.Close)&&Exit

用POWERSHELL的方式實現
但是我問AI,給我的POWERSHELL程序都會變成下面那個窗口(不是系統管理員)的狀態

zero iT邦好手 1 級 ‧ 2024-06-04 20:25:43 檢舉

你現在的這個指令,

如果是放在批次檔cmd或者bat結尾的檔案裡面的話,

他會提權改用管理者權限來跑這個批次檔,

批次檔裡面利用VBScript提權功能就是正常的,為何要改?

你是因為不想用VBScript來提權了,

所以要改用Powershell來提權??

dahezhi iT邦新手 4 級 ‧ 2024-06-04 20:32:00 檢舉

是的

zero iT邦好手 1 級 ‧ 2024-06-04 20:56:54 檢舉

我更新回覆了,請去修改你想改的部份吧。

zero iT邦好手 1 級 ‧ 2024-06-04 22:51:16 檢舉

我好像忘了給你程式碼,你看的懂你要改哪裡嗎?

dahezhi iT邦新手 4 級 ‧ 2024-06-05 06:28:42 檢舉

還是一樣會直接閃退,貌似不能用A.CMD呼叫PS1後,把目前的A.CMD變成ADMIN,只能用B.CMD呼叫PS1去開啟ADMIN的A.CMD,不像原本那個VBS程式碼能直接把目前的A.CMD變成ADMIN,但是也是謝謝妳拉~如果有更好的方法還請你提供了~感溫

zero iT邦好手 1 級 ‧ 2024-06-05 13:07:52 檢舉

你原本的也是一樣的做法喔,只是視窗沒有顯示出來給你看到而已

因為VBS在視窗隱藏的部份比較容易呼叫而已

站在系統的角度來看從Win7開始就是這樣在設計了

如果你很在意另外開視窗的話,

那一開始的CMD視窗只要用提權的方式執行就好了

這樣就不會需要用到VBS或者Powershell來提權CMD

我要發表回答

立即登入回答