首页 > 解决方案 > 如何从用户上下文执行 Add-LocalGroupMember 脚本包

问题描述

我正在尝试在 SCCM 中实现一个脚本部署包,该包旨在在特定广告 OU 组中新部署的工作站上执行。问题在于执行权;如果我以用户权限运行模式部署包-i,则访问被拒绝,如果我以管理员权限运行它,我会添加错误的帐户。

我尝试在不编码服务帐户凭据的情况下运行脚本,但是这识别了系统执行帐户,然后我添加了凭据,这仅适用于管理员用户。

$User = $env:USERNAME 
$Computer = $env:COMPUTERNAME 
$svcAcc = "xxx\svc_LocalAdmin" 
$PasswordFile = ".\Password.txt" $KeyFile = ".\AES.key" 
$key = Get-Content $KeyFile

$Cred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $svcAcc,(Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)

Invoke-Command -ComputerName $Computer -ScriptBlock {Add-LocalGroupMember -Group "Administrator" -Member $args[0]} -ArgumentList $User

我希望这可以与所有帐户一起运行,因为脚本中提供了服务帐户凭据。我如何从用户帐户上下文中获得相同的结果?

非常感谢

标签: windowspowershellactive-directorysccm

解决方案


您是否尝试对可能登录这些机器的每个用户运行此任务?还是只是当前登录的用户?

对于这些类型的任务,我强烈推荐PowerShell AppDeploy Toolkit

使用该工具包,您可以创建一个可以针对当前登录用户的脚本,然后可以通过 SCCM 部署该脚本。UsingGet-LoggedOnUser可以为您提供所有本地和 RDP 登录用户的会话详细信息,而不会大惊小怪。


推荐阅读