Выход файла журнала - PullRequest
       3

Выход файла журнала

0 голосов
/ 07 ноября 2019

В журнале ловятся только идентификаторы в моем текстовом файле (get-content), он не печатает имя файла, который копируется

Я пытался использовать опцию log с robocopy, однако он только регистрируетпоследний раз войдите в мой текстовый файл get-content

$Source = "F:\Temp\"
$Test = "F:\Output\"
$Daily_Results="F:\Output\Test\"

foreach ($ID in Get-Content F:\Files\files.txt) {
    $ID
    Get-ChildItem -Path $Source | foreach {
        if($_ -match $ID)  { 
            $Path=$Source+"$_\"
            $Path
            robocopy $path $test 
            Write-Host $Path
           "File copied"
            Write-Output $ID "File copied" | Out-File $Daily_Results\$(get-date -f yyyy-MM-dd)_CopyMove_Results.txt -append
            Write-Output $_ | Out-File $Daily_Results\$(get-date -f yyyy-MM-dd)_CopyMove_Results.txt -append
        } 
    }
}

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Поскольку вы копируете файлы один за другим, я не вижу здесь реального преимущества использования robocopy, а есть собственный Copy-Item командлет PowerShell пользователя.

Поскольку вы не сказали, что такое $ID из текстового файла может быть, из кода, который вы дали, я понимаю, что это некоторая строка, которая должна быть частью имени файла для копирования.

Это должно работать для вас тогда

$Source        = 'F:\Temp'
$Destination   = 'F:\Output'
$Daily_Results = Join-Path -Path 'F:\Output\Test' -ChildPath ('{0:yyyy-MM-dd}_CopyMove_Results.txt' -f (Get-Date))

foreach ($ID in Get-Content F:\Files\files.txt) {
    Get-ChildItem -Path $Source -File -Recurse | Where-Object { $_.Name -like "*$ID*" } | ForEach-Object {
        $_ | Copy-Item -Destination $Destination -Force
        Write-Host  "File '$($_.Name)' copied"
        # output to the log file
        "$ID File copied: '$($_.Name)'" | Out-File -FilePath $Daily_Results -Append
    }
}
0 голосов
/ 07 ноября 2019

В результате получается, что $_ дает вам полный объект, вам нужно явно сказать, что вы хотите Name.

Write-Output $_.Name | Out-File $Daily_Results\$(get-date -f yyyy-MM-dd)_CopyMove_Results.txt -append
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...