Powershell相关问题

时间:2013-12-06 05:27:56

标签: c#-4.0 powershell powershell-v3.0

以下是我的情况:

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 ,我不确定这是否正确: - )

1 个答案:

答案 0 :(得分:0)

使用runas向UAC提升本地 是正确的方法。

但是,请记住UAC仅适用于本地。如果您有一个非提升的管理员帐户,也是远程计算机上的管理员,则直接远程脚本将远程运行(不使用runas或类似)。

假设您在远程管理时启用远程管理(使用Windows RMS)。