Собственно самый работающий вариант - это делать Remove-SmbShare и после окончания New-SmbShare.
Неверно. Самый работающий вариант - VSS. И если ваше ПО умеет в него, всё остальное просто не нужно. Потому что на процесс бэкапа с использованием VSS не влияет вообще никак.
korolin2k, Мало того, судя по видимому куску | where {$_.Path -like "*.*"} |
файлы без расширения вы не закрываете.
А файл с кодом ошибки "Нет открытого файла с данным идентификационным номером" уже и без вас успел закрыться
Только, наверное всё же $_.thumbnailPhoto -eq $null, оно байтовое
ну и samaccountname можно тоже в ldap фильтр засунуть как -and (samaccountname -like '*.*') Но это будет полезно только если AD здоровенный
Ну оно и будет выполняться параллельно, каждое в своём потоке/процессе
запускаться и контролироваться будет централизовано, у админа
просто будет по потоку на комп
Кстати, нашёл готовую функцию, которую себе писал под подобные задачи
Вы не указали, одной нодой хотите видеть эти записи или несколькими
Если просто запихнуть всё в одну, достаточно из массива сделать строку с помощью -join
p.s. Powershell, конечно, удобно сделал так чтобы из массива можно было одно свойство выбрать через $fold.Access.IdentityReference, но понимания людям убавил.
вы должны понимать, что на самом деле $fold.Access - это массив, $fold.Access.IdentityReference - это тоже массив, но уже из значений поля IdentityReference первого массива. Тогда будет сразу понятно, что, чтобы из массива сделать одну строку, его надо объединить. Или, наоборот, перебрать массив по элементу
korolin2k, -replace не любит пустых полей. Надо на пустоту проверять
Но если заменить '' на $null, замена прокатывает.
то есть понаделать if ($Department -eq '') { $Department = $null }
на каждое поле, где может быть пусто
Сергей, Если у вас netcore и выше, а не net4, то оно у вас и так заработает
достаточно на линуксе иметь ту же версию дотнета (или выше) и запускать как dotnet yourfile.dll