4

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

我编写了一个 Powershell 脚本,它加载用户 NTuser.dat 的脱机副本并读出特定密钥。然后卸载该文件并将下一个文件加载到注册表中。

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

$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"
}
4

1 回答 1

4

在您的“我在这里检查密钥”部分中,您是否使用以下方式将配置单元安装为 PS 驱动器:

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>

如果您在调用 REG UNLOAD 之前仍然引用了一些 PSDrive 变量,则该调用可能会失败。尝试删除所有仍会通过Remove-Variable.

于 2012-06-13T12:05:04.390 回答