如何从用户上下文执行Add-LocalGroupMember脚本包

时间:2019-05-06 11:45:22

标签: windows powershell active-directory sccm

我正在尝试在SCCM中实现脚本部署程序包,该程序包旨在在特定ad 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

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

非常感谢

1 个答案:

答案 0 :(得分:0)

您是否要针对可能登录这些计算机的每个用户运行此任务?还是仅仅是当前登录的用户?

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

使用工具包,您可以创建一个针对当前登录用户的脚本,然后可以通过SCCM对其进行部署。使用let titleresult = try JSONDecoder().decode([getTitle].self, from: data) 会为您提供所有本地和RDP登录用户的会话详细信息,而不必大惊小怪。