如何使用Powershell压缩SQL Server备份文件并保存在同一目录中?

时间:2018-01-05 00:06:49

标签: sql-server powershell

我正在尝试压缩SQL Server备份文件并使用PowerShell将其保存在同一目录中。它对我有用的唯一方法是,如果我将它移动到临时文件夹然后将其拉出并将其移回原始文件夹。但我不想动它。我只想将它保留在现有文件夹中,并忽略该文件夹中的所有其他文件。 zip文件名应与扩展名为.zip的备份文件同名,并且不需要位于文件夹中。

这是我的代码(我想改变)

#Backup SQL database
Backup-SqlDatabase -Database Mydbname -ServerInstance MyServerName-   BackupSetName "Mydbname-Full Database Backup" -DatabaseFile Mydbname.bak -ExpirationDate 0 -Initialize

#Move backup to temp location and Zip the folder
$temppath = "C:\Temp\Bkup"
$sourcepath = "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\Mydbname.bak"
$destpath = "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\"
Move-Item -Path $sourcepath -Destination $temppath
Compress-Archive -Path $temppath -DestinationPath\Mydbname.bak.zip      

有没有办法简化此代码,以便它不会创建新文件夹? 注意:如果我运行脚本两次,它将第二次失败,因为我仍然在temp文件夹中有移动的文件。有没有办法在将文件移回原始文件夹后从临时位置删除该文件。 (我是PowerShell的新手。)

1 个答案:

答案 0 :(得分:1)

由于您的来源是一个文件,请尝试此操作。压缩存档可以将源作为单个文件。我评论了两条线。

$sourcepath = "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\Mydbname.bak"
$destpath = "C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\"
Compress-Archive -Path $sourcepath -DestinationPath\Mydbname.bak.zip
相关问题