После страницы Google № 3 я сдаюсь.
Я хочу скопировать все подкаталоги сетевого ресурса на другой сервер. В основном я делаю миграцию «домашней папки» из QNAP (я знаю, что это ОС Linux) в Windows Server 2016
$newPath = "D:\Shares"
$dir = Get-ChildItem -Path "\\srv-nas1" -Directory | ?{$_.PSISContainer}
$exceptions = @("some", "folder", "exceptions", "nothing", "important")
$errors = ""
foreach ($d in $dir){
$d.Name
Try{
if(-not ($exceptions -contains $d.Name)){
$dirData = $d.FullName
$adUsername = "DOMAIN\"+$d.Name
$newSharePath = $newPath + "\" + $d.Name
$newShareName = $d.Name + "$"
"[!]Initialized migration for: " + $adUserName
$Acl = Get-Acl $dirData
$AdminAr = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\admin", "FullControl","ContainerInherit, ObjectInherit","None","Allow")
$UsrAr = New-Object System.Security.AccessControl.FileSystemAccessRule($adUsername, "FullControl","ContainerInherit, ObjectInherit","None","Allow")
$Acl.SetAccessRule($AdminAr)
$Acl.SetAccessRule($UsrAr)
Copy-Item -Path $dirData -Destination $newPath -recurse -Force
New-SmbShare -Name $newShareName –Path $newSharePath -FullAccess "DOMAIN\admin", $adUsername
Set-Acl $newSharePath $Acl
"[+]" + $adUsername + " successfully migrated"
exit 1
}
}Catch{
"[-]ERROR WTH USER: " + "DOMAIN\"+$d.Name
$_.Exception
$ErrorMessage = $_.Exception.Message
$FailedItem = $_.Exception.ItemName
$errors += 'ErrorMessage ' + $ErrorMessage + " FailedItem " + $FailedItem + " User " + $adUsername + " `n"
}
}
$errors
Видимо путь к NAS не может быть найден при запуске кода. Я знаю, что может быть конфликт, потому что это Linux и из-за того, что я просматриваю корневой путь к ресурсу. Я также пытался подражать ему
foreach($Share in Get-WmiObject Win32_Share){
Get-ChildItem "\\$($Share.__SERVER)\$($Share.Name)"
}
Но это Linux, так что, очевидно, он не работал.
Есть ли шанс, что я смогу заставить его работать?