以下是我的情况:
1)我已经使用“RunspaceConfiguration” - C#代码 - 来调用powershell脚本;
2)脚本中的内容也很简单 - 使用regsvr32注册COM dll
Invoke-Command -ScriptBlock { & 'regsvr32.exe' $registerdllfullpath }
3)如果没有C#代码,为了调用regsvr32,我们必须右键单击并选择“以管理员身份运行”以启动PowerShell。
那我怎么能这样做?
有人建议使用以下内容:
$user = Get-Credential
Invoke-Command -ComputerName $servername -Credential $user -ScriptBlock { & 'regsvr32.exe' $registerdllfullpath }
可是:
1)-Credential不能在没有-ComputerName的情况下使用。但如果它只是本地机器,我们仍然需要打开Windows-Remote-Management服务,这有点笨拙;
2)由于我已经是本地管理员触发powershell,它再次询问我的用户名和密码,这似乎是多余的?
3)最后但并非最不重要的是,它不起作用......: - (
非常感谢!
------------------------编辑------------------- -
我在我的PS脚本中搜索了一个类似于此的解决方案:[它完成了工作]
Start-Process powershell -Verb runAs -ArgumentList "Invoke-Command -ScriptBlock { & ","'regsvr32.exe'", "$registerdllfullpath } "
原始脚本现在变为 ArgumentList ,我不确定这是否正确: - )
答案 0 :(得分:0)
使用runas
向UAC提升本地 是正确的方法。
但是,请记住UAC仅适用于本地。如果您有一个非提升的管理员帐户,也是远程计算机上的管理员,则直接远程脚本将远程运行(不使用runas
或类似)。
假设您在远程管理时启用远程管理(使用Windows RMS)。