Powershell $ENV:USERNAME在SCCM以管理员身份运行脚本时返回计算机名,非管理员登录

Powershell $ENV:USERNAME在SCCM以管理员身份运行脚本时返回计算机名,非管理员登录,powershell,environment-variables,administrator,non-admin,Powershell,Environment Variables,Administrator,Non Admin,我有一个脚本,需要在非管理员登录时从软件中心运行 它需要将应用程序数据复制到$ENV:USERNAME\AppData\\*(除其他外),并且需要以管理员身份运行才能正常工作 我发现的问题是,当脚本在具有管理员权限的非管理员配置文件上运行时,环境变量$ENV:USERNAME返回机器名,而不是实际登录的用户名 有办法解决这个问题吗?您可以使用([Security.Principal.WindowsIdentity]::GetCurrent()).Name或者从注册表获取配置文件路径: HKEY_

我有一个脚本,需要在非管理员登录时从软件中心运行

它需要将应用程序数据复制到
$ENV:USERNAME\AppData\\*
(除其他外),并且需要以管理员身份运行才能正常工作

我发现的问题是,当脚本在具有管理员权限的非管理员配置文件上运行时,环境变量
$ENV:USERNAME
返回机器名,而不是实际登录的用户名

有办法解决这个问题吗?

您可以使用
([Security.Principal.WindowsIdentity]::GetCurrent()).Name
或者从注册表获取配置文件路径:

HKEY_CURRENT_USER\Volatile Environment\APPDATA
HKEY_CURRENT_USER\Volatile Environment\LOCALAPPDATA
HKEY_CURRENT_USER\Volatile Environment\USERPROFILE

选择你的武器:)

太棒了。这很有魅力。我必须添加([Security.Principal.WindowsIdentity]::GetCurrent()).Name.replace(“$ENV:USERDOMAIN\”,”)。但这太完美了。非常欢迎:-)。你可以点击我答案旁边的柜台接受,如果你认为合适的话,我没有足够的声誉来接受。对不起=(有一个15分钟的计时器iirc:-)。。。但是已经一个小时了。嗯,我不知道!