我还是很新的,例如我有一个脚本通过压缩并将它们复制到新创建的文件夹来备份一些文件夹。
现在我想知道拉链和复制过程是否成功,成功的意思是我的电脑是否压缩并复制了它。我不想检查内容,所以我假设我的脚本采用正确的文件夹并压缩它们。 这是我的剧本:
$backupversion = "1.65"
# declare variables for zip
$folder = "C:\com\services" , "C:\com\www"
$destPath = "C:\com\backup\$backupversion\"
# Create Folder for the zipped services
New-Item -ItemType directory -Path "$destPath"
#Define zip function
function create-7zip{
param([String] $folder,
[String] $destinationFilePath)
write-host $folder $destinationFilePath
[string]$pathToZipExe = "C:\Program Files (x86)\7-Zip\7zG.exe";
[Array]$arguments = "a", "-tzip", "$destinationFilePath", "$folder";
& $pathToZipExe $arguments;
}
Get-ChildItem $folder | ? { $_.PSIsContainer} | % {
write-host $_.BaseName $_.Name;
$dest= [System.String]::Concat($destPath,$_.Name,".zip");
(create-7zip $_.FullName $dest)
}
现在,我可以检查父文件夹中是否有新创建的文件夹。 或者我可以检查我创建的子文件夹中是否有zip文件夹。
你会建议什么方式?我可能只知道这种方式,但有一百万种方法可以做到这一点。 你的想法是什么?唯一的规则是,应该使用powershell。
提前致谢
答案 0 :(得分:4)
您可以尝试使用Try and Catch
方法尝试包装(create-7zip $_.FullName $dest)
然后捕获任何错误:
Try{ (create-7zip $_.FullName $dest) }
Catch{ Write-Host $error[0] }
这将Try
函数create-7zip
并写出许多因shell而产生的错误。
答案 1 :(得分:2)
可以尝试的一件事是检查$?变量用于命令的状态。
$?存储最后一个命令运行的状态,
所以
create-7zip $_.FullName $dest
如果你然后回显$?
,你会看到真或假。
另一个选项是$error variable
您也可以通过各种方式组合这些(或者使用异常处理)。
例如,运行命令
foreach-object {
create-7zip $_.FullName $dest
if (!$?) {"$_.FullName $ErrorVariable" | out-file Errors.txt}
}
该脚本对于创意来说比工作代码更加伪代码,但它至少应该让你接近使用它!