У меня возникли некоторые проблемы с центром синхронизации на моем компьютере, так как я обновляю его до W10, поэтому я пытаюсь написать альтернативный скрипт, который сравнивает папки / файлы синхронизации на рабочем столе и наших ServerFiles и копирует последнюю версию каждой папки /файлы на компьютере пользователя.
Благодаря сообществу я нашел некоторый код, но он не работает для меня
Help1 Help2
Я новичок в написании сценариев с PowerShell 5.1.Я работаю с WS2008 и рабочим столом на W10.
$SourceFolder = Get-ChildItem -Recurse "\\Srvfiles\USERS\user1\"
#"user1" contains 2 folders and each one have subfolders/files
$TargetFolder = Get-ChildItem "D:\Doc_Sync"
$Result = Compare-Object $SourceFolder $TargetFolder -Property Name, Length
foreach ($folder in $Result) {
if ($folder.SideIndicator -eq "<=") {
$FullSourceObject = $folder.InputObject.FullName
$FullTargetObject = $folder.InputObject.FullName.Replace($SourceFolder, $TargetFolder)
Copy-Item "\\Srvfiles\USERS\user1\$($_.name)" -Destination $Get-ChildItem "D:\Doc_Sync" -Recurse -Force
}
}
Хорошая новость заключается в том, что он работает для некоторых папок, на D: / Doc_Sync он вставляет большинство файлов, но (плохо новый), для остальныхиз них я получил много ошибок:
Cannot bind argument to parameter « DifferenceObject » because it is null.
At line:5 char:40
+ $Result = Compare-Object $SourceFolder $TargetFolder -Property Name, ...
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidData : (:) [Compare-Object], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.CompareObjectCommand
You cannot call a method on a null-valued expression.
At line:10 char:13
+ $FullTargetObject = $folder.InputObject.FullName.Replace( ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation : (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Спасибо за вашу помощь в будущем