使用Powershell复制同一目录中的文件
我正在尝试编写powershell脚本,该脚本将在应用程序所在的同一路径上创建backupfolder,并需要在部署之前将文件夹和文件复制到backupfolder中。下面是用于执行的命令,但我收到错误使用Powershell复制同一目录中的文件,powershell,Powershell,我正在尝试编写powershell脚本,该脚本将在应用程序所在的同一路径上创建backupfolder,并需要在部署之前将文件夹和文件复制到backupfolder中。下面是用于执行的命令,但我收到错误 $Source = "C:\XYZ" $BackupFolder = New-Item -ItemType Directory -Force -Path $source_$(Get-Date) Copy-Item -Path $Source\* $BackupFolder -Force 错
$Source = "C:\XYZ"
$BackupFolder = New-Item -ItemType Directory -Force -Path $source_$(Get-Date)
Copy-Item -Path $Source\* $BackupFolder -Force
错误:无法将项目C:\XYZ\Backup_18-02-2017复制到自身
尝试:
这将消除您作为复制源复制到的文件夹。变量可以包含下划线。以下代码工作并显示字符串“asdf” 您的
New Item
cmdlet调用本应失败,因为$source\
不是变量,将返回null。这是PowerShell的默认行为。当我按原样运行代码时,我得到以下信息:
新项目:找不到驱动器。名为“02/18/2017 22”的驱动器不存在。第1行字符:1
+新项目-项目类型目录-强制-路径“$source_u$(Get Date)”-什么。。。
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:ObjectNotFound:(2017年2月18日22:String)[新项目],DriveNotFoundException
+FullyQualifiedErrorId:DriveNotFound,Microsoft.PowerShell.Commands.NewItemCommand
所以我希望您的文件夹变量为null
有几种方法可以解决我确信的部分问题
$BackupFolder = New-Item -ItemType Directory -Force -Path "$source`_$(Get-Date)"
$BackupFolder = New-Item -ItemType Directory -Force -Path "$($source)_$(Get-Date)"
$BackupFolder = New-Item -ItemType Directory -Force -Path ("{0}_{1} -f "$source, Get-Date)
您仍需尝试从副本中排除此文件夹,如
试试这样的
$Source = "C:\XYZ"
$Destination="{0}{1:yyyyMMdd}" -f $source, (Get-Date)
New-Item -ItemType Directory -Force -Path $Destination
Copy-Item -Path $Source\* $Destination -Recurse -Force
如果我理解正确的话。您需要将
“C:\XYZ”
备份到名为“C:\XYZ\backup\u$DATE”
的同一目录中。实际上,您要做的是创建一个循环,一旦达到最大248个字符,循环就会中断。如果使用-exclude
选项,则可以排除备份目录“C:\XYZ\backup\u$DATE”
此函数将完成此操作,并提供错误处理
Function Get-CopyDirectory{
#####################
# Dynamic Variables #
#####################
$Date = Get-Date -format ddMM-yyyy
$Exclude="Backup*"
####################
# Static Variables #
####################
$AppPath = "F:\Test\"
$BackupPath = "$AppPath\BACKUP_$Date\"
if (Test-Path $BackupPath) {
Write-Host "Backup Exist" -f Cyan
}
else
{
Copy-Item "$AppPath\*" $BackupPath -Exclude $Exclude -recurse -verbose
}
}
CLS
Get-CopyDirectory
我假设您已尝试使用管理员权限
$source\uu
是一个有效的标识符名称。使用$($source)
或$source`
William-我没听清你的问题,如果你问的是关于正在运行的具有管理员权限的Powershell,那么是的,正在运行脚本的帐户具有管理员权限很高兴它工作正常。如果你想接受这个答案,那就太酷了。
Copy-Item $Source\* $BackupFolder -Exclude $BackupFolder
$Source = "C:\XYZ"
$Destination="{0}{1:yyyyMMdd}" -f $source, (Get-Date)
New-Item -ItemType Directory -Force -Path $Destination
Copy-Item -Path $Source\* $Destination -Recurse -Force
Function Get-CopyDirectory{
#####################
# Dynamic Variables #
#####################
$Date = Get-Date -format ddMM-yyyy
$Exclude="Backup*"
####################
# Static Variables #
####################
$AppPath = "F:\Test\"
$BackupPath = "$AppPath\BACKUP_$Date\"
if (Test-Path $BackupPath) {
Write-Host "Backup Exist" -f Cyan
}
else
{
Copy-Item "$AppPath\*" $BackupPath -Exclude $Exclude -recurse -verbose
}
}
CLS
Get-CopyDirectory