2012-06-13 51 views
3

我需要检查网络中Windows客户端上所有用户的一些设置。所有用户都有漫游配置文件。使用powershell加载ntuser.dat

我已经编写了一个Powershell脚本来加载用户的NTuser.dat的脱机副本并读出特定的键。然后该文件被卸载并且下一个被加载到注册表中。

问题是,约10个用户没有加载新文件。当脚本再次启动时,用户仍然无法加载。新用户只有在关闭Powershell提示符并打开一个新的用户之后。脚本经常在大约10个用户后停止。

new-Psdrive -name <blah> -PSProvider Registry -root <blih> 
cd <blah>: 
# Some Set-ItemProperty and Get-ItemProperty calls here referring to 
# your PSDrive and using PowerShell variables 
Remove-PSDrive <blah> 

如果你仍然有你的一些PSDrive来的引用:

$userlist = ls "C:\Temp calls\profiles" 
foreach ($user in $userlist){ 
$username = $user.name 
#$username = "ciproda" 
reg load "hklm\$username" "C:\Temp calls\profiles\$username\NTUSER.DAT" | Out-Null 
... 

    Here I check the keys 

    ... 

[gc]::collect() 
start-sleep -s 3 
reg unload "hklm\$username" 
} 

回答

2

在自己的栏目“这里我检查键”,你使用类似安装蜂箱作为PS驱动变量在调用REG UNLOAD之前,该调用可能会失败。尝试通过Remove-Variable删除所有仍会引用PSDrive的变量。

+0

这确实有帮助,使用的注册表项仍然留在我的注册表中,但新的加载。我的脚本现在可以运行,我只需要在运行后重新启动。 – Wriswith

+0

什么类型的东西是? – tor

+0

经过一番研究,我可以回答我自己的问题:应该是这个例子中的“hklm:\ $ username” – tor

相关问题