如何在SCCM部署Powershell脚本时获取环境变量?

时间:2016-10-14 11:45:04

标签: powershell environment-variables sccm

我制作了一个脚本来自动更改和/或创建公司所有员工的默认Outlook签名。

从技术上讲,它获取部署脚本的环境变量用户名,访问人员数据库以获取有关此用户的一些信息,然后通过替换链接的docx模板中的值来为签名创建3个不同的文件。非常简单和合乎逻辑。

在不同的测试之后,当您直接在计算机上启动脚本时,它可以正常工作,可以使用Powershell ISE,直接由CMD或在Visual Studio中。但是当我们尝试部署它时,就像使用SCCM一样,它无法获得任何环境变量。

在SCCM部署脚本时,你们是否知道如何在脚本中获取环境变量?

这是我已经尝试过的:

$Name = [Environment]::UserName

$EnvVarUserName = Get-Item Env:\USERNAME

甚至是这样的东西:

$proc = gwmi win32_process -Filter "Name = 'explorer.exe'"
$report = @()
ForEach ($p in $proc)
{
    $temp = "" | Select User
    $temp.user = ($p.GetOwner()).User
    $report += $temp
}

提前致谢,祝你们度过美好的一天!

[编辑]:

我找到了这样做的方法,而不是最好的方法,但它确实有效。我得到机器的名称,检查数据库,当笔记本电脑连接到我们的网络时,它存储用户ID和机器,然后在员工数据库中获取信息。

我仍然会检查Matt的想法,这个想法非常有趣,而且在某种程度上更准确。

谢谢大家!

2 个答案:

答案 0 :(得分:0)

你是如何调用环境变量的? $Env:computername以前通过SCCM推出的脚本为我工作。

答案 1 :(得分:0)

为什么不列举"%SystemDrive%\ Users"文件夹,排除某些内置帐户,并在一个批处理中处理它们?

要使用UserName环境变量,脚本必须以登录用户身份运行,这也意味着您的所有用户至少具有对员工数据库的读取权限,至少在我们的环境中,这将是一个很大的禁忌。