我正在编写一个脚本来执行Windows机器上每个(本地)用户的USERPROFILE文件夹中的一些文件操作。
我找到了各种使用$env:USERPROFILE
来标识当前登录用户的配置文件目录的示例。我还看到过一些示例,这些示例假设所有用户配置文件都保存在C:\USERS\中,并迭代/筛选该文件夹。
但是,可以在Windows上移动配置文件文件夹。我的目标是在给定特定用户的用户名(字符串)或LocalUser对象的情况下(可靠地)找到该用户的配置文件目录。
我可以获得基于活动帐户的用户对象数组,使用-
$users = Get-LocalUser | Where-Object Enabled -eq true
但是这些LocalUser对象的属性是有限的,UserProfile路径不在其中。我相信这些信息存储在注册表中。我已经多次阅读了PowerShell文档,但我还没有找到正确的咒语,可以为我提供给定用户的用户配置文件的路径,我可以在循环中使用它来迭代所有用户及其配置文件文件夹。
3条答案
按热度按时间flmtquvp1#
您可以从注册表中检索所有用户配置文件目录的根(父)目录**,如下所示:
要获得特定用户的*配置文件目录,比如
jdoe
,您可以使用:然而,最终的真相来源是上述注册表项路径的子项中的
ProfileImagePath
值,以每个用户的SID(安全标识符)命名,Get-LocalUser
提供(输出对象具有.SID
属性)。因此,最好使用:
要可靠地获取所有已启用本地用户的配置文件目录,请使用以下方法:
r1wp621o2#
也许是这样的:
产出:
x8diyxa73#
您可以使用WMI类Win32_USERPROFILE,但它只有sid,没有用户名: