如何使用 powershell 检查服务器上用户配置文件的位置?

如何使用 powershell 检查服务器上用户配置文件的位置?

是否可以使用 powershell 和正则表达式查找不在特定服务器/文件夹中的所有用户配置文件?如果可以,该怎么做?

答案1

在 powershell 中,使用 Win32_UserProfile WMI 对象远程查找配置文件:

gwmi -ComputerName <computername> Win32_UserProfile

要查找不在服务器上的用户配置文件(或位于服务器上的用户配置文件),您可以执行以下操作:

gwmi -ComputerName <computername> Win32_UserProfile | ? {"C:\Users\<username>" -contains $_.LocalPath}

如果路径存在,则会产生结果,如果不存在,则不会产生结果。您可以做比这更花哨的事情,但基本上这应该可以实现您的需要,而无需使用正则表达式。

答案2

对于当前用户运行:

$env:USERPROFILE

要获取所有环境变量的列表,请运行:

Get-ChildItem Env:

答案3

有趣的是,我今天必须这样做。试试这个脚本,用适当的值替换servernamesharenamec:\path\to\save.csv。我凭记忆输入了这些,所以我不能保证没有错误 :(

$a = [adsisearcher]'(&(objectclass=user)(objectcategory=user)(profilepath=*))'
[void]$a.propertiestoload.add('name')
[void]$a.propertiestoload.add('profilepath')
$a.pagesize = 1000

$a.findall() | foreach-object {
    if($_.properties.profilepath[0] -notmatch '^\\\\servername\\sharename\\')
    {
        $op = '' | select name,profilepath
        $op.name = $_.properties.name[0]
        $op.profilepath = $_.properties.profilepath[0]
        $op
    }
} | export-csv -NoTypeInformation c:\path\to\save.csv

答案4

如果将不匹配条件作为 LDAP 查询的一部分,效率会更高,
请尝试:

$a = [adsisearcher]'(&(objectclass=user)(objectcategory=user)(!profilepath=\\\\servername\sharename*))'

相关内容