2017-03-03 26 views
0

這可能是不可能的,但我希望從命令行運行.ps1 powershell腳本,它需要在升級權限下運行,無需繞過任何UAC提示。提升無提示 - 動態runas啓動進程

這是從腳本的角度來看,沒有用戶交互。因此,CMD或Powershell的「以管理員身份運行」不是一種選擇。不能有任何UAC提示點擊,因爲這些提示很可能會被隱藏起來。

我的命令開始了這樣的 -

powershell.exe -executionpolicy bypass -file .\remove-default-apps.ps1

這將啓動名爲.ps1罰款,但腳本將最終失敗,因爲在腳本中的命令需要提升(GET-AppxPackage | Remove- AppxPackage)

我的下一個嘗試使用PowerShell來運行使用腳本 -

Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File MyScript.ps1' -Verb RunAs

但仍然會提示升高。 我可以手動從非升高的cmd窗口複製運行腳本的錯誤,但運行提升它可以正常工作。

任何人都知道這是否可能?或者有任何提示指向正確的方向,我嘗試了很多其他方法(psexec,計劃任務..),但無法實現這一點。

回答

3

這是設計。如果用某種方法可以忽略UAC,那麼它會殺死UAC。每一個惡意的軟件都會在沒有提示的情況下升級,就像UAC之前的狂野西部一樣。

使用海拔高度,您可以將其他事物設置爲運行提升,無論是計劃任務還是其他。在企業範圍內運行這些事情最常見的情況是使用代理的配置管理(SCCM,LANDesk,Puppet,Salt等)或通過PSRemoting/PSexec進行遠程運行。 (請注意,代理必須首先安裝管理員權限)

至於刪除預配軟件包,這看起來像是在圖像時間要完成的任務。在部署之前將其直接從WIM中刪除,或者在仍處於WinPE中的映像放置後刪除它,或者在刪除SysPrep之前刪除它。我偏向於第二種方法,並將我的所有圖像任務編程爲MDT,並且與默認的Windows圖像接近。

如果你不想提示,你可以關閉UAC(或設置爲永不通知等Win8 +)。如果您打算在多臺計算機上執行操作,則可以通過組策略完成。但這不是明智的。

+0

我認爲內心深處我知道這是一直以來的答案,但感謝您的確認。 我們使用配置管理(KACE),但Im努力讓這些腳本通過這種方法運行。 我已經成功刪除了我們的基礎映像上的預配軟件包,但是我的經理也想從Windows 7中使用就地升級。所以這需要在安裝後進行。 我同意將UAC完全關閉..但即使在UAC關閉的測試中,此腳本也無法通過KACE成功運行。 – robotjones

0

碰到很多磚牆......我最終解決了我的問題。與暫時禁用UAC提示通過註冊表允許powershelll命令,意在與海拔運行沿 https://technet.microsoft.com/en-gb/library/d08d6a02-4d5b-4929-87ad-98f03be11898?f=255&MSPPError=-2147217396

使用此 - 發現這個有用的工具。

我最後的劇本:

REG ADD HKLM \ SOFTWARE \微軟\的Windows \ CurrentVersion \政策\系統/ V ConsentPromptBehaviorAdmin /噸REG_DWORD/d 0/F

迅速提升的%SystemRoot%\ sysnative \ WindowsPowerShell \ v1.0 \ powershell.exe -executionpolicy bypass -file remove-default-apps.ps1

REG ADD HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System/v ConsentPromptBehaviorAdmin/t REG_DWORD/d 5/f

+0

絕對不建議禁用UAC。 –