我想自动备份并始终保留一些旧版本。我们的想法是在共享上使用Windows备份并使用PowerShell脚本启动它。
我差不多完成了,但我坚持重命名。
分享:\\Server\SysBackup\WindowsImageBackup
在该共享中,我拥有所有PC的文件夹。因此,例如,我想保留最后三个备份,它应该如下:
当前备份:PC1
旧备份:PC1_1,PC1_2
现在我想将它们重命名为更高的数字
PC1_2→PC1_3
PC1_1→PC1_2
PC1→PC1_1
因此备份现在可以使用PC1文件夹进行最新备份。
这就是我到目前为止所做的:
$BackupFolder = Get-ChildItem -Directory ($Target + "\WindowsImageBackup") |
Where-Object -Property Name -Like $env:computername* |
Select-Object -Property Name
$CurrentBackups = $BackupFolder.Count
if ($CurrentBackups -ge 1) {
Push-Location ($Target + "\WindowsImageBackup")
$i = 0
$xCurrentArray = $CurrentBackups - 1
$NewSubVersion = $CurrentBackups
while ($i -le $CurrentBackups) {
$NewName = $BackupFolder[$xCurrentArray].Name.TrimEnd("_")
Rename-Item $BackupFolder[$xCurrentArray] -NewName
}
Pop-Location
Clear-Variable $i
}
文件未重命名,我收到以下错误:
您无法在空值表达式上调用方法 Rename-Item:缺少参数'NewName'的参数。指定“System.String”类型的参数,然后重试。
我的错误在哪里?
答案 0 :(得分:0)
我发现了错误
if ($CurrentBackups -ge 1)
{
Push-Location ($Target + "\WindowsImageBackup\")
$i= 0
$xCurrentArray = $CurrentBackups - 1
$NewSubVersion = $CurrentBackups
while ($i -lt $CurrentBackups)
{
if ($BackupFolder[$xCurrentArray].Contains("_"))
{
$Index = $BackupFolder[$xCurrentArray].IndexOf("_")
$NewName = $BackupFolder[$xCurrentArray].Substring(0, $Index)
Rename-Item $BackupFolder[$xCurrentArray] -NewName ($NewName + "_" + $NewSubVersion)
Clear-Variable Index
$NewSubVersion--
}
else
{
$NewName = $BackupFolder[$xCurrentArray]
Rename-Item $BackupFolder[$xCurrentArray] -NewName ($NewName + "_1")
}
$i++
$xCurrentArray--
}
Pop-Location
Clear-Variable i
}