PowerShell复制项目内容I';我做错了?

PowerShell复制项目内容I';我做错了?,powershell,copy-item,Powershell,Copy Item,鉴于dir结构: x\Code x\Script\Backup.ps1 Backup.ps1包含: $BackupDirectoy = "..\Backup" $CodeDirectory = "..\Code" function BackupCurrentVersion() { New-Item $BackupDirectoy -type directory -force Copy-Item $CodeDirectory -destination $Bac

鉴于dir结构:

x\Code
x\Script\Backup.ps1
Backup.ps1包含:

$BackupDirectoy       = "..\Backup"
$CodeDirectory        = "..\Code"

function BackupCurrentVersion()
{
  New-Item $BackupDirectoy -type directory -force
  Copy-Item $CodeDirectory -destination $BackupDirectory -recurse
}

BackupCurrentVersion
我做错了,因为代码是在x\Script\Code而不是x\Backup\Code中复制的

有什么问题

$BackupDirectoy       = "..\Backup"
$CodeDirectory        = "..\Code"
这些路径将与运行脚本时提示符所在的当前目录相对。我怀疑您不希望这样,但希望相对于脚本所在的位置运行。如果是这种情况,请尝试以下操作:

$ScriptDir      = Split-Path $MyInvocation.MyCommand.Path -Parent
$BackupDirectoy = "$ScriptDir\..\Backup"
$CodeDirectory  = "$ScriptDir\..\Code"

实际上,我希望路径是相对于脚本位置的。PowerShell中的当前目录设置为x\ScriptHaha。刚发现问题。这是一个拼写错误“BackupDirectoy”-忘记了一个“r”。该死我在这个问题上花了2个小时。通过在脚本开始时使用Set-StrictMode cmdlet,您可以避免此类问题。它不允许您使用任何未声明的变量(它会捕获此错误)。