我試圖完成的是以另一個使用者(網域管理員)身分從 Powershell 腳本執行一些 RSAT 工具。
這是我的運行程式碼:
Start-Process -FilePath "C:\Windows\system32\mmc.exe" -ArgumentList "C:\Windows\system32\gpmc.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser)
我得到的是一個錯誤,其中顯示:此命令只能以提升的權限啟動。現在這告訴我,由於 UAC 限制,我必須使用管理員使用者來執行腳本,而這正是我想要實現的目標。
有人對我有幫助嗎?
謝謝!
編輯
為了讓大家更清楚,我附上了整個腳本。
$title = "Windows 8.1 RSAT Tools"
$message = "Verwaltungskonsole"
$ad = New-Object System.Management.Automation.Host.ChoiceDescription "&AD Verwaltung", `
"Active Directory-Benutzer und -Computer"
$gpo = New-Object System.Management.Automation.Host.ChoiceDescription "&GPO Verwaltung", `
"Gruppenrichtlinienverwaltung"
$options = [System.Management.Automation.Host.ChoiceDescription[]]($ad, $gpo)
$result = $host.ui.PromptForChoice($title, $message, $options, 0)
switch ($result)
{
0
{
Start-Process -Verb RunAs -FilePath "C:\windows\system32\mmc.exe" -ArgumentList "C:\windows\system32\dsa.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser)
}
1
{
Start-Process -Verb RunAs -FilePath "C:\windows\system32\mmc.exe" -ArgumentList "C:\windows\system32\gpmc.msc" -Credential (Get-Credential -Credential MYDOMAIN\myadminuser)
}
}
答案1
這可能歸結為兩個問題:
該工具實際上需要提升運行權限,因為否則不允許它執行需要執行的變更。當您在本機電腦上執行該工具並進行特定於該電腦的變更時,通常會發生這種情況。在這種情況下,您需要在執行命令之前提升控制台。這可以直接從 powershell 使用以下命令完成:
$newProcess = New-Object System.Diagnostics.ProcessStartInfo "powershell"; #Indicate that the process should be elevated $newProcess.Verb = "runas"; #Start the new process [System.Diagnostics.Process]::Start($newProcess) | Out-Null
- 此工具配置不正確,僅以適當的使用者身分執行就足以完成您所需的變更。透過該工具管理遠端伺服器時通常會出現這種情況。在這種情況下,您可以使用應用程式相容性工具包(asAdmin、asInvoke、asHighest)修改命令的啟動方式(下載)並對可執行檔套用 RunAsInvoker 修復。
- 開啟相容性管理員
- 在目前資料庫中建立新修復
- 設定可執行檔的路徑
- 從修復清單中選擇 RunAsInvoker,按一下首選項,然後在模組 editBox 中鍵入 * 並按一下新增
- 儲存資料庫並右鍵單擊它進行安裝
不幸的是,這不適用於 MMC。
答案2
您可以將其變更為運行:
saps“cmd”-工作目錄$PSHOME-Credential$SU-ArgumentList“/c dsa.msc”