Как я могу синхронизировать папки из серверного файла на клиентский компьютер с powershell? - PullRequest
0 голосов
/ 23 мая 2019

У меня возникли некоторые проблемы с центром синхронизации на моем компьютере, так как я обновляю его до 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

Спасибо за вашу помощь в будущем

1 Ответ

0 голосов
/ 31 мая 2019

Я обнаружил, что не так с первой ошибкой, благодаря точкам останова. Я изменил $ TargetFolder следующим образом:

$TargetFolder = @(Get-ChildItem -Recurse "D:\Doc_Sync")

Но у меня все еще есть вторая ошибка с "$ FullTargetObject". Понимаю, что не так с этой линией ... Я поработаю над ней в эти выходные.

...