出于事件响应的目的,我正在尝试创建一个将通过所有c:\ users目录并复制ntuser.dat的powershell脚本,然后将其粘贴到该脚本创建的新目录中。我有一些难题,但是我很难把所有的难题放在一起。 我无法解决的一些问题是 1.查找所有c:\ users * \ ntuser.dat并取消隐藏 2.重命名所有ntuser.dat以包括文件夹名称 3.将所有新重命名的ntuser.dat复制到新文件夹中 4.将c:\ users中的所有ntuser.dat重命名为正常。
#1 Unhides the ntuser.dat
$h = gci C:\Users\Test1\NTUSER.DAT -Force
$h.Attributes = $h.Attributes -bxor [System.IO.FileAttributes]::Hidden
#2 Renames ntuser.dat as foldername_ntuser.dat
Get-ChildItem C:\users\test1\ -Filter *.dat -Recurse | Rename-Item -NewName {$_.Directory.Name+'_'+$_.Name}
#3 Creating a new folder and copying the newly named test_ntuser.dat
$SourceFile = "c:\users\test1\*.dat"
$DestinationFile = "c:\users\user2\desktop\test\test_netuser.dat"
If (Test-Path $DestinationFile) {
$i = 0
While (Test-Path $DestinationFile) {
$i +=1
$DestinationFile = "c:\users\user2\desktop\test\"
}
}Else {
New-Item -ItemType file -Path $DestinationFile -Force
}
Copy-Item -Path $SourceFile -Destination $DestinationFile -Force
最后,我希望脚本取消隐藏,重命名并从以下位置移动到新文件夹 c:\ users \ test1 \ c:\ users \ test2 c:\ users \ test3 无需参考每个用户的路径
答案 0 :(得分:0)
好吧,这样做会遇到一些问题,因为如果正在使用用户,则将NTUSER.dat加载到内存中。因此,您无法在登录计算机时复制自己的NTUSER.dat。另外,如果有以用户名运行的服务,您将无法获得这些以太币。
因此,让我们回顾一下您想要的东西以及为什么不需要它。
1 查找所有c:\ users \ ntuser.dat并取消隐藏*: 无需取消隐藏原始文件。您只需要取消隐藏副本即可。
2 重命名所有ntuser.dat以包括文件夹名称:无需重命名原始文件,而只是副本。
3 将所有新重命名的ntuser.dat复制到新文件夹中:通过复制本身,您无需任何前两个步骤即可为文件命名。
4 将c:\ users中的所有ntuser.dat重命名为正常:无需执行此步骤,因为从未重命名原始文件。
Function Copy-NTUser($SavePath){
Get-ChildItem C:\Users\ -Directory | %{
$Name = $_.Name
Get-ChildItem "$($_.FullName)\ntuser.dat" -File -force -ErrorAction SilentlyContinue | %{
$FullName = $_.FullName
try{
Copy-Item -Path $_.FullName -Destination "$($SavePath)\$($Name)_$($_.name)" -Force -PassThru | %{
$_.Attributes = $_.Attributes -bxor [System.IO.FileAttributes]::Hidden
}
}catch{
"$($FullName) could not be copied as its currently in use."
}
}
}
}
Copy-NTUser -SavePath C:\Test\NTUSER