用凭证运行另一个程序

时间:2014-06-09 20:13:52

标签: powershell

我尝试做的是将用户添加到本地管理员组,然后使用这些凭据启动程序。我的第一部分工作:

$env:COMPUTERNAME   
$srvgroup = [ADSI]("WinNT://"+$env:COMPUTERNAME+"/Administrators, Group")   
$srvgroup.name  
$srvgroup.add("WinNT://userID,user")
$srvgroup.Invoke("Members") | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)}

第二部分是我似乎无法正常工作的。

Start-Process runas.exe -Credential DOMAIN\user -ArgumentList '-noprofile -command & "C:\Program Files (x86)\Misc\SecureClient" -verb runas}'

我没有收到错误消息,但程序无法启动。我应该为应用程序获得一个弹出窗口,但是当我以这种方式尝试时没有任何反应。 有什么想法吗?

2 个答案:

答案 0 :(得分:0)

DOMAIN\user不是完整凭据。你需要做这样的事情:

$passwd = ConvertTo-SecureString "opensesame" -Force -AsPlainText
$cred = new-object pscredential 'Domain\user',$passwd
Start-Process -Credential $cred ...

答案 1 :(得分:0)

我最终这样做了,不是很喜欢它,但它有效:

start-process "cmd.exe" "/c D:\Scripts\client_connect.cmd"

.cmd文件是:

C:\Windows\System32\runas.exe /savecred /user:domain\username"C:\Program Files (x86)\xxx\xxx\sclient.cmd"