我制作了一个脚本来自动更改和/或创建公司所有员工的默认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的想法,这个想法非常有趣,而且在某种程度上更准确。
谢谢大家!
答案 0 :(得分:0)
你是如何调用环境变量的? $Env:computername
以前通过SCCM推出的脚本为我工作。
答案 1 :(得分:0)
为什么不列举"%SystemDrive%\ Users"文件夹,排除某些内置帐户,并在一个批处理中处理它们?
要使用UserName环境变量,脚本必须以登录用户身份运行,这也意味着您的所有用户至少具有对员工数据库的读取权限,至少在我们的环境中,这将是一个很大的禁忌。