以不同用户身份运行代码以获得提升的权限

Posted

技术标签:

【中文标题】以不同用户身份运行代码以获得提升的权限【英文标题】:Run code as different user to have elevated privileges 【发布时间】:2016-10-03 21:52:27 【问题描述】:

我正在部署一个监控系统,尽管它有大量的插件,但有些需要以不同的用户身份运行才能正常运行。

所以我切换到powershell,但问题是一样的,我有一些代码让我访问被拒绝,因为用户没有提升的权限。

我的问题是如何以不同的用户身份运行此代码,我试过了

$usuario = "myuser@mydomain"
$pass = get-content C:\credential.txt`
$spass = $pass | Convertto-SecureString`
pass = "securepass"`
spass = $pass | ConvertTo-SecureString -AsPlainText -Force`
write-host $pass 
$cred = new-object System.Management.Automation.PSCredential -argumentlist $usuario, $spass

$UpdateSession = New-Object -ComObject Microsoft.Update.Session
$UpdateSearcher = ($UpdateSession.CreateupdateSearcher())
$Updates = $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0 and IsInstalled=0").updates
$total = $Updates | measure
$total.count

那么我怎样才能将凭据传递给变量。问题访问被拒绝来自这一行

$Updates = $UpdateSearcher.Search("IsAssigned=1 and IsHidden=0").updates

【问题讨论】:

【参考方案1】:
$args = ' -file path-to-script.ps1'
Start-Process -FilePath powershell.exe -Credential $creds -ArgumentList $args -Verb RunAs

Powershell 还具有 -Command,您可以使用它来调用函数或 cmdlet 而不是另一个脚本。

【讨论】:

以上是关于以不同用户身份运行代码以获得提升的权限的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件:删除提升的权限(以原始用户身份运行命令)

win10系统要提升啥权限才能运行DISM

如何以编程方式获得 root 权限?

以另一个用户身份运行 Visual Studio 并提升

以不同用户身份运行应用程序

如何让windows7默认为以管理员身份打开所有程序