0

我仍然很新,例如,我有一个脚本可以通过压缩并将它们复制到新创建的文件夹来备份一些文件夹。

现在我想知道压缩和复制过程是否成功,成功是指我的计算机是否压缩并复制了它。我不想检查内容,所以我假设我的脚本采用了正确的文件夹并将它们压缩。这是我的脚本:

$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。

提前致谢

4

2 回答 2

4

您可以尝试通过用tryTry and Catch包装来使用该方法(create-7zip $_.FullName $dest),然后捕获任何错误:

Try{ (create-7zip $_.FullName $dest) }
Catch{ Write-Host $error[0] }

这将Try运行create-7zip并写入许多在 shell 中产生的错误。

于 2013-08-30T13:05:21.930 回答
2

可以尝试的一件事是检查 $? 命令状态的变量。

美元?存储上次命令运行的状态,

因此对于

create-7zip $_.FullName $dest

如果您随后回显,$?您将看到真或假。

另一个选项是$error 变量

您还可以以各种方式组合这些(或与异常处理)。

例如,运行您的命令

foreach-object {
create-7zip $_.FullName $dest
if (!$?) {"$_.FullName $ErrorVariable" | out-file Errors.txt}
}

该脚本比工作代码更像是想法的伪代码,但它至少应该让您接近使用它!

于 2013-08-30T13:28:50.273 回答