
有沒有辦法在一堆遠端電腦上運行 regedit 而不會在 Windows10 上彈出 UAC?命令/s
列無法在我的 Windows 10 測試電腦上運行(我確信它可以在我的 Win7 系統上運行,但我的大多數客戶端電腦都是 Win10)。
最終目標是
- 將 reg 檔案匯入 HKLM 以將 PowerShell 執行原則提升為無限制,
- 使用Powershell啟用系統保護/恢復,
- 最後使用PowerShell建立一個還原點
- 導入 reg 檔案以將executionPolicy 設定回 Restricted 或 RemoteSigned。 (順便說一句,這一切都是作為預修補任務完成的)。
在我的測試電腦上,所有這些都運作良好,除了 regedit...即使使用參數/s
...在 Windows 10 上如果沒有 UAC 彈出視窗也無法運行。
我嘗試過透過bat檔案執行提升的PowerShell:
powershell.exe -ExecutionPolicy Bypass -File .\MyScript.ps1
和
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList 'Set-ExecutionPolicy unrestricted -Force' -Verb RunAs}"
但這些都失敗了(即存取被拒絕,powershell執行策略未提升)。
導入 reg 檔案然後執行我的 Powershell 腳本是我所取得的最接近成功的結果。
我還透過Sysinternals psexec 嘗試過此操作,基於搜尋的其他解決方案[即psexec 呼叫reg.exe 進行導入],但這有其自己的一系列問題(psexec 需要為EULA 導入reg,所以相同的問題,而不是解決方案)。
借鑒這一點,我還嘗試執行以下命令:
C:\Windows\System32\REG.exe ADD HKLM\\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell /v ExecutionPolicy /t REG_SZ /d Unrestricted /f
....但是不斷出現「錯誤:無效的金鑰名稱」。我可能已經為此工作太久了(現在已經三天了),只是需要另一雙眼睛。有人可以幫忙嗎?
答案1
由於您嘗試了多次不同的嘗試,因此您在帖子中實際上指出了幾個可能需要答案的問題。您還沒有弄清楚如何遠端執行這些命令。您顯示的命令實際上都沒有在遠端電腦上執行任何操作。它們都在本機電腦上執行。但是,您確實提到嘗試 PSExec。
我也不知道 UAC 幹擾遠端命令執行的任何情況。因此,我只能假設您正在本機電腦上執行命令並遇到 UAC 提示。但是,您這樣做是為了準備實際遠端運行命令。
因此,我將盡力為您提供一些基本的遠端執行支持,幫助您走上正軌。所有遠端執行命令都需要開啟某些防火牆連接埠。因此,在前進時請記住這一點。
Powershell已經具有遠端命令/腳本執行機制。
- 您可以使用
-ComputerName
某些命令的開關在遠端系統上執行它們。 Enter-PSSession <ComputerName>
您可以使用和啟動互動式遠端會話Exit-PSSession
。- 您可以使用該
Invoke-Command -ComputerName <ComputerName>
命令遠端執行任何腳本或命令。
這些方法都不受執行策略限制,除非您啟動互動式 Powershell 會話,然後繼續嘗試執行腳本。
這些命令將使用您目前登入的使用者帳戶在遠端電腦上運行。如果您不是遠端電腦上的管理員,則需要另外提供一個PSCredential
對象,該對像是使用交換器的管理員-Credential
。
或者,您也可以使用 PSExec 執行遠端命令或可執行檔。最好在系統上下文中運行它們,以避免任何權限問題,但如果您只是在遠端電腦上的管理員上下文中運行它們,它們通常會成功。
-accepteula
使用開關繞過 EULA 提示-s
使用開關在系統上下文中運行- 有時,
-i
需要使用(互動式)開關才能正確執行某些第 3 方可執行檔。
透過 PSExec 執行的命令不受 UAC 限制。但是,如果您嘗試透過 PSExec 遠端執行 Powershell,而 PSExec 嘗試再次執行腳本,那麼執行策略將會妨礙您,除非您也使用該-ExecutionPolicy Bypass
開關。然而,使用 PSExec 遠端執行 Powershell,進而執行腳本是完成您需要做的事情的一個非常漫長的方法。
同樣,PSExec 將使用您目前登入的使用者上下文建立與遠端電腦的連線。如果您不是遠端電腦的管理員,則需要使用-u
和-p
開關指定使用者名稱/密碼。
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
最後一件事,您必須始終記住命令在哪裡執行(本地或遠端),並意識到您嘗試存取的任何資源都是從命令執行位置的角度進行的。例如,如果我C:\MyBatch.bat
在遠端電腦上執行該命令,則該命令C:\MyBatch.bat
必須存在於遠端電腦上。