我有一个 powershell 脚本,可以将包含某些“关键字”的文件移动到各种 .csv 文件中列出的相应文件夹。虽然我似乎有移动文件的机制。我不断收到以下错误
Join-Path : Cannot bind argument to parameter 'Path' because it is null.
At C:\Users\superflysnooka\Documents\Support\Projects\REDTransferAnalysis\REDFileTransferR2.ps1:46 char:38
+ $destinationPath = Join-Path $destinationDirectory $fileName
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidData: (:) [Join-Path], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.JoinPathCommand
我不确定这是否是因为我传递主代码执行所需参数的方式。
$sourceDirectory = "C:\Users\superflysnooka\Documents\Support\Projects\REDTransferAnalysis\staging\"
# Import analog and digital directories from CSV files
$analogDirectories = Import-Csv "C:\Users\superflysnooka\Documents\Support\Projects\REDTransferAnalysis\cfg\analog_folders.csv"
$digitalDirectories = Import-Csv "C:\Users\superflysnooka\Documents\Support\Projects\REDTransferAnalysis\cfg\digital_folders.csv"
# Create log file
$logFile = "C:\Users\superflysnooka\Documents\Support\Projects\REDTransferAnalysis\log\filetransferlog.txt"
# Get current date
$currentDate = Get-Date -Format "yyyy-MM-dd"
# Loop through files in the source directory
Get-ChildItem $sourceDirectory | ForEach-Object {
$fileName = $_.Name
$filePath = $_.FullName
# Check if file contains "analog" or "digital"
if ($fileName -like "*Analog*") {
$destinationDirectories = $analogDirectories.Directory
} elseif ($fileName -like "*Digital*") {
$destinationDirectories = $digitalDirectories.Directory
} else {
Add-Content -Path $logFile -Value "[$currentDate] Failed to transfer file: $fileName"
return
}
# Move or copy file to destination directories
foreach ($destinationDirectory in $destinationDirectories) {
$destinationPath = Join-Path $destinationDirectory $fileName
if ($fileName -like "*Analog*") {
Move-Item -Path $filePath -Destination $destinationPath
} elseif ($fileName -like "*Digital*") {
Copy-Item -Path $filePath -Destination $destinationPath
}
Add-Content -Path $logFile -Value "[$currentDate] Successfully transferred file: $fileName to $destinationDirectory"
}
}
这是其中一个 .csv 文件的第一列的样子
Directory
C:\Users\superflysnooka\Documents\Support\Projects\COBETransferAnalysis\sites\Area1\Analog
C:\Users\superflysnooka\Documents\Support\Projects\COBETransferAnalysis\sites\Area2\Analog
C:\Users\superflysnooka\Documents\Support\Projects\COBETransferAnalysis\sites\Area3\Analog
C:\Users\superflysnooka\Documents\Support\Projects\COBETransferAnalysis\sites\Area4\Analog
通过以下方式解决