【发布时间】:2019-07-30 15:28:54
【问题描述】:
我正在构建增量目录结构,出于某种原因Join-Path 显示了 2 个目录。当我稍后将它与我发送到 copy-item 的文件一起加入时,它会导致错误,如下所示。我已经在$to_loc_finalDT1 行的评论中显示了,我第一次看到这两个目录:
Copy-Item : Cannot find path '\\T2\DisasterBackup\Loc_2019-03-08\Privileges\Privileges_HH_Bak.csv \\T2\DisasterBackup\Loc_2019-03-08\Privileges\Privileges_HH_Bak.csv' because it does not exist
所以这是相关的 powershell 脚本:
$T2 = "\\T2\DisasterBackup\Loc"
$toLocParentDT2 = CreateDatedFolder $parentDirBaseNameDT2
$to_loc_finalDT2 = Join-Path -Path $toLocParentDT2 -ChildPath "Privileges"
#create sub-folder location
if(-Not (Test-Path $to_loc_finalDT2 ))
{
write-output " Creating folder $to_loc_finalDT2 because it does not exist "
New-Item -ItemType directory -Path $to_loc_finalDT2 -force
}
#second dir save files to
$parentDirBaseNameDT1 = "\\T1\DisasterBackup\Loc"
$toLocParentDT1 = CreateDatedFolder $parentDirBaseNameDT1
$to_loc_finalDT1 = Join-Path -Path $toLocParentDT1 -ChildPath "Privileges" #shows 2 dirs here in debugger: \\T2\DisasterBackup\Loc_2019-03-08\Privileges \\T2\DisasterBackup\Loc_2019-03-08\Privileges
#create sub-folder location
if(-Not (Test-Path $to_loc_finalDT1 ))
{
write-output " Creating folder $to_loc_finalDT1 because it does not exist "
New-Item -ItemType directory -Path $to_loc_finalDT1 -force
}
我不知道如何让Join-Path 只拥有一个目录,因为它应该。现在,我认为它被视为一个数组,这是不正确的。
我尝试搜索相关问题,但没有看到类似的内容。
更新
这里是 CreateDatedFolder 的代码:
#create dated folder to put backup files in
function CreateDatedFolder([string]$name){
$datedDir = ""
$datedDir = "$name" + "_" + "$((Get-Date).ToString('yyyy-MM-dd'))"
New-Item -ItemType Directory -Path $datedDir -force
return $datedDir
}
它的输出在返回时看起来很好。它将日期附加到 \T2\DisasterBackup\Loc 上,但调试器只在那里显示一个目录,而不是一个数组或两个单独字符串的目录。
【问题讨论】:
-
CreateDatedFolder是一个函数吗?它有什么作用?在我看来,CreateDatedFolder创建了两个存储在$toLocParentDT1中的输出,Join-Path处理它们。 -
@T-Me - 我将 CreateDatedFolder 添加到我的问题的更新中。它将日期附加到给定的文件夹中。输出只正确显示了一个文件夹,而不是两个。
标签: powershell return output return-value multiple-return-values