iT邦幫忙

0

使用CMD遠端背景卸載遠端電腦內的程式

Hi 大家好

小弟需要大量背景移除程式IBM i Access for Windows V7R1

我利用PSTools 用系統管理員執行CMD,背景執行遠端移除程式
psexec \ PC Name or IP -u XXXX -p XXXX cmd (帳號是管理員的帳號)
MsiExec.exe /X{31E11496-1F84-4DCC-B07A-369B40B8B4A7} /quiet /norestart
但是遠端的程序就卡在那邊不會動,我在想應該是卡在UAC確認那個要按是的地方

請問有辦法用CMD繞過UAC直接移除,不用卡在UAC確認的地方無法正常移除

https://ithelp.ithome.com.tw/upload/images/20190620/20106599lR8O5WfDHV.jpg

我在猜想卡在那邊不動,就是因為背景處裡沒有辦法回是

以下是我弄的批次檔

 @echo off
 CLS
 ECHO.
 ECHO =============================
 ECHO Running Admin shell
 ECHO =============================

:init
 setlocal DisableDelayedExpansion
 set cmdInvoke=1
 set winSysFolder=System32
 set "batchPath=%~0"
 for %%k in (%0) do set batchName=%%~nk
 set "vbsGetPrivileges=%temp%\OEgetPriv_%batchName%.vbs"
 setlocal EnableDelayedExpansion

:checkPrivileges
  NET FILE 1>NUL 2>NUL
  if '%errorlevel%' == '0' ( goto gotPrivileges ) else ( goto getPrivileges )

:getPrivileges
  if '%1'=='ELEV' (echo ELEV & shift /1 & goto gotPrivileges)
  ECHO.
  ECHO **************************************
  ECHO Invoking UAC for Privilege Escalation
  ECHO **************************************

  ECHO Set UAC = CreateObject^("Shell.Application"^) > "%vbsGetPrivileges%"
  ECHO args = "ELEV " >> "%vbsGetPrivileges%"
  ECHO For Each strArg in WScript.Arguments >> "%vbsGetPrivileges%"
  ECHO args = args ^& strArg ^& " "  >> "%vbsGetPrivileges%"
  ECHO Next >> "%vbsGetPrivileges%"

  if '%cmdInvoke%'=='1' goto InvokeCmd 

  ECHO UAC.ShellExecute "!batchPath!", args, "", "runas", 1 >> "%vbsGetPrivileges%"
  goto ExecElevation

:InvokeCmd
  ECHO args = "/c """ + "!batchPath!" + """ " + args >> "%vbsGetPrivileges%"
  ECHO UAC.ShellExecute "%SystemRoot%\%winSysFolder%\cmd.exe", args, "", "runas", 1 >> "%vbsGetPrivileges%"

:ExecElevation
 "%SystemRoot%\%winSysFolder%\WScript.exe" "%vbsGetPrivileges%" %*
 exit /B

:gotPrivileges
 setlocal & cd /d %~dp0
 if '%1'=='ELEV' (del "%vbsGetPrivileges%" 1>nul 2>nul  &  shift /1)

:Uninstall IBM i Access for Windows 7.1

echo IBM i Access for Windows 7.1
MsiExec.exe /X{31E11496-1F84-4DCC-B07A-369B40B8B4A7} /quiet /norestart

或者還有甚麼方法可以利用機碼背景移除程式,麻煩大家了,謝謝!

直接下CMD 會出現Error code 1603

https://ithelp.ithome.com.tw/upload/images/20190621/20106599PcF7kQItrU.jpg

看更多先前的討論...收起先前的討論...
有AD 嗎?? 能用群組原則嗎??

沒AD的電腦 我是在啟動放一個開機執行的批次檔
harrytsai iT邦新手 1 級 ‧ 2019-06-20 17:52:10 檢舉
找一下這個程式的反安裝,看一下有沒有靜默模式
何必問 iT邦好手 1 級 ‧ 2019-06-21 02:09:17 檢舉
https://social.technet.microsoft.com/Forums/en-US/8ab6ee89-8ec3-47ea-9307-a504b22ad23f/uninstall-software-remotely-with-powershell?forum=ITCG
1.有AD,但有有些是不需要移除的,所以被長官說不要用GPO,到時候移到不該移的
我上述的程式碼就是批次檔.
2.沒有那個東西
3.Power shell 不太懂
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
zero
iT邦好手 1 級 ‧ 2019-06-21 15:59:02
最佳解答

1.你到看過UAC在遠端電腦跳出來的畫面的嗎?

因為你只是猜測不是確定你要確定才行

2.程式碼看起來主要工作只有MsiExec.exe來卸載,那用誰來呼叫都可以

3.{31E11496-1F84-4DCC-B07A-369B40B8B4A7}除非當初都是用同一個安裝檔

部屬不然APPID可能會不會一樣,這點你清楚嗎?

4.UAC無法迴避 只要你使用帳戶去提升權限一定會遇到 除非移除過程不需要提升權限

5.有AD不靠AD是有車子硬要用馬去當交通工具,要躲過UAC用管理者權限做事情可以

打開你的GPO,用工作排程器去部屬工作,

工作排程運作的帳戶不是你的管理員帳戶,

而是Local System ,但是要提醒一件事情,

Local System帳戶帶出的CMD或者Powershell預設的系統變數是不一樣的,

另外在運作的時候任何互動式指令無法運作,

也呼叫不出任何與GUI有關的東西,與DC網域控制站的驗證帳戶也會因此轉變,

如果你對這方面完全沒有認知,還有很多問題要解決,這是我花時間體驗過的,

這邊不可能都打出來太多了,簡單來說做得到,但是有很多基本功你要弄懂,

1.沒有,所以應該不是這個問題,因為我遠端過去,只需要用管理員權限去開CMD下那一段指令就可以移除
2.對,還是要用最高使用者權限去卸載才行,但我psexec已經用我帳號遠端過去,但之前卸載過Java,Adobe都正常,所以不知道這個是卡在哪.
3.安裝檔都一樣,所以才抓code去卸載.
4.了解,那可能就要找找出在甚麼問題上面了.
5.我其實也很想用GPO,但是礙於一些原因,被說不要去動到比較好,到時候有問題會牽扯到其他地方去.
謝謝您詳細的回答

0
echochio
iT邦高手 1 級 ‧ 2019-06-21 06:20:27

我處理過這種狀況去大量部署防毒移除及安裝

  1. GPO 設定開機執行網芳 vbscript 隱藏GUI 畫面
  2. vbscript 是複製網芳移除的批次檔到本機,然後五分鍾後執行批次檔
  3. 批次檔先判斷是否有安裝要移除的軟體,再進行移除

有辦法不動到GPO嗎?
以前有用同樣的方法去移除Java、adobe,但這次就這樣簡單的一段CMD,卻沒有效

我要發表回答

立即登入回答