2016-10-20 40 views
1

我在网上看到了很多关于获取远程注册表的例子,但我想检查登录用户的文件夹重定向,而不是我运行脚本的用户。获取登录用户的远程注册表

这甚至可以使用PowerShell?在我加入这家公司之前,他们的IT外包了,整个AD/GPO都是一团糟。有些用户正在重定向,有些则不是,所以我想检查谁启用了重定向功能,而无需物理地访问每台计算机。

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('CurrentUser','10.0.0.113') 
$regkey = $reg.OpenSubKey("Software\\Microsoft\\Windows\CurrentVersion\\Explorer\\User Shell Folders") 
$regkey.GetValue("Personal") 

我试过这个,但又只显示了我关于脚本运行的admin用户帐户的信息。

+0

在这种情况下,我认为你想看看NTUser.dat的人(那个hkey当前用户为那个用户),那么谁在当时登录谁都没关系。 http://www.adminarsenal.com/admin-arsenal-blog/modifying-the-registry-of-another-user/要知道,我认为最好的是,用户在那一刻没有登录,或者你做NTUser.dat的副本 – Kage

+0

另请参阅此处:http://stackoverflow.com/questions/11013466/loading-ntuser-dat-with-powershell –

回答

1

这是可能的,但需要finding out who is currently logged in,然后loading their ntuser.dat file into the registry

$computer = '...' 
$qry = 'SELECT * FROM Win32_Process WHERE Name="explorer.exe"' 
$key = 'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' 

$username = (Get-WmiObject -Computer $computer -Query $qry).GetOwner().User 

Invoke-Command -Computer $computer -ScriptBlock { 
    & reg load "HKU\foo C:\Users\$using:username\ntuser.dat" | Out-Null 
    (Get-ItemProperty "HKU:\foo\$using:key").Personal 
    & reg unload 'HKU\foo' | Out-Null 
} 

更简单的方法可能会使用一个登录脚本将信息写入一个文件中(无论是在用户的计算机或中央共享上),这样你就可以收集来自那里的信息:

$key = 'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders' 
$output = "\\server\share\$env:USERNAME.txt" 

Get-ItemProperty "HKCU:\$key" | Select-Object -Expand Personal | 
    Set-Content $output