我有以下的powershell代码,其中, 文件夹1中的(原始)文件备份在folder2中,文件夹1中的文件用folder3文件更新。
cls [xml] $XML = Get-content -Path <path of xml> $main = $XML.File[0].Path.key $hotfix = $XML.File[1].Path.key $backup = $XML.File[2].Path.key Get-ChildItem -Path $main | Where-Object { Test-Path (Join-Path $hotfix $_.Name) } | ForEach-Object { Copy-Item $_.FullName -Destination $backup -Recurse -Container } write-host "`nBack up done !" Get-ChildItem -Path $hotfix | ForEach-Object {Copy-Item $_.FullName -Destination $main -force} write-host "`nFiles replaced !"
现在,由于文件的备份是在folder2中进行的,我需要创建一个日志文件,其中包含 - 备份文件的名称,日期和时间,备份的位置
任何人都可以帮我这个吗? 我做了以下代码,但没有用,因为我无法同步这两个代码。
cls $path = "C:\Log\Nlog.log" $numberLines = 25 For ($i=0;$i -le $numberLines;$i++) { $SampleString = "Added sample {0} at {1}" -f $i,(Get-Date).ToString("h:m:s") add-content -Path $path -Value $SampleString -Force }
感谢任何帮助或不同的方法!!
答案 0 :(得分:0)
您可以使用-PassThru
开关参数让Copy-Item
返回刚刚复制的新项目 - 然后在ForEach-Object
scriptblock内立即执行日志记录:
| ForEach-Object {
$BackupFiles = Copy-Item $_.FullName -Destination $backup -Recurse -Container -PassThru
$BackupFiles |ForEach-Object {
$LogMessage = "[{0:dd-MM-yyyy hh:mm:ss.fff}]File copied: {1}" -f $(Get-Date),$_.FullName
$LogMessage | Out-File ".\backups.log" -Append
}
}