4

ネットワーク内のWindowsクライアントのすべてのユーザーのいくつかの設定を確認する必要があります。すべてのユーザーは移動プロファイルを持っています。

ユーザーのNTuser.datのオフラインコピーを読み込み、特定のキーを読み取るPowershellスクリプトを作成しました。次に、ファイルがアンロードされ、次のファイルがレジストリにロードされます。

問題は、約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変数の一部への参照がまだある場合、その呼び出しは失敗する可能性があります。を介してPSDriveを参照するすべての変数を削除してみてくださいRemove-Variable

于 2012-06-13T12:05:04.390 に答える