AD Manager Plus每小时生成一次带时间戳文件路径的报告,我想将这些文件复制到另一个位置-覆盖现有文件。然后,我将安排脚本在文件生成后每小时运行一次。不幸的是,报表被提取到的位置无法修改,并且会创建带有日期和时间戳的文件夹。
示例:
C:\ADManager Plus\audit-data\reports\16042019\DailyTrue-Up01-55-07\Real Last Logon.xls C:\ADManager Plus\audit-data\reports\ddmmyyyy\DailyTrue-Uphh-mm-ss\Real Last Logon.xls
我认为最简单的方法是:
Apr162019
DailyTrue-Up01-55-07
DailyTrue-Up01-55-07
中的Real Last Logon.xls电子表格$Path = "C:\ADManager Plus\audit-data\reports"
$DestinationPath = "\\domain\networkshare\Reports\"
Get-ChildItem -Path $Path -Directory | ForEach-Object {
Get-ChildItem -Path "$Path\$_" -File -Filter "Real Last Logon.xlsx" |
Sort-Object LastWriteTime -Descending |
Select-Object -First 1 |
Copy-Item -Force -Destination (New-Item -Force -Type Directory -Path (Join-Path $DestinationPath ($_.FullName.Replace("$Path\", ''))))
}
我们似乎拥有将所有文件夹复制到该位置的代码,无法在多个目录中查找。
我感觉到我们正在接近这个错误,有人可以建议实现此目标的最佳方法吗?网上很少有文章说明如何从时间戳文件夹中检索文件。
答案 0 :(得分:0)
也许这会帮助您。 https://deskeng.blogspot.com/2019/04/copy-file-from-directories-with-todays.html
$Script:sScriptFolder = (Get-Item $($MyInvocation.MyCommand.Path)).DirectoryName
$Script:sSystemDrive = "$Env:SystemDrive"
#$sVDIMSTName1 = Get-Content "c:\SWKSoftware\VDIComputers.txt"
$sgetDateTime = Get-Date -Format g
$strSourcePath = "C:\Temp\Dir1\"
$sDestinationPath = "C:\Temp\Dir2\"
If ((Test-Path -Path $strSourcePath) -AND (Test-Path -Path $sDestinationPath))
{
#Copy-Item "$strSourcePath\*.*" -Destination "$destinationPath" -Force -Recurse
$sScrParentFolder = split-Path -path $strSourcePath -Leaf
#$sgetDateTime = Get-Date -Format s
$sgetDateTime1 = $(get-date -f yyyyMMdd_HH-mm-ss)
$sDateTimeFolderName = $sScrParentFolder + "-" + $sgetDateTime1
$sDestinationPath = New-Item -ItemType Directory -Path "$sDestinationPath\$sDateTimeFolderName"
ROBOCOPY.EXE $strSourcePath $sDestinationPath /COPYALL /B /SEC /MIR /R:0 /W:0 /NFL /NDL
}
Else
{
Write-host " Source or Destination is not reachable or does not exist..."
}