我尝试以另一个用户(域管理员)的身份从 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
- 该工具配置不正确,仅以适当的用户身份运行才足以进行您所需的更改。在使用该工具管理远程服务器时通常会出现这种情况。在这种情况下,您可以使用应用程序兼容性工具包 (下载) 并将 RunAsInvoker 修复应用于可执行文件。
- 打开兼容性管理器
- 在当前数据库中创建新的修复程序
- 设置可执行文件的路径
- 从修复列表中选择 RunAsInvoker,单击首选项,然后在模块编辑框中输入 *,然后单击添加
- 保存数据库并通过右键单击来安装
不幸的是,这对 MMC 不起作用。
答案2
您可以将其更改为使用以下命令运行:
saps“cmd”-workingdirectory$PSHOME-Credential$SU-ArgumentList“/c dsa.msc”