Pat*_*ick 2 backup powershell windows-server-2008
我编写了一个 PowerShell 脚本,用于压缩文件夹的内容并将其发送到服务器进行备份。问题是复制过程不会等待 zip 过程完成。我尝试使用Out-Nulland Wait-Process,但似乎没有任何效果。 Out-Null只是不做任何事情,并Wait-Process告诉我不存在这样的过程。我似乎无法弄清楚 Windows 压缩的进程名称。任何帮助将不胜感激。下面是我想暂停直到完成的代码部分。
function out-zip {
Param([string]$path)
if (-not $path.EndsWith('.zip')) {$path += '.zip'}
if (-not (test-path $path)) {
set-content $path ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18))
}
$ZipFile = (new-object -com shell.application).NameSpace($path)
$input | foreach {$zipfile.CopyHere($_.fullname)}
}
gi "C:\File-Backups\Share1" | out-zip C:\File-Backups\transfer\PC1-Backup
Run Code Online (Sandbox Code Playgroud)
您确定代码实际上将文件压缩为有效的 zip 格式吗?它看起来对我没有任何用处。(编辑:哦是这样吗?整洁!)
无论如何,无论如何都要回答您的问题, Out-Null 不会做任何事情,因为它是 Out-Null ......而 Wait-Process 不会做任何事情,因为您没有运行进程。
你想要的是 Powershell 工作。
开始工作
http://technet.microsoft.com/en-us/library/hh849698.aspx
等待工作
http://technet.microsoft.com/en-us/library/hh849735.aspx
编辑 2:此外,看起来您正在使用 Powershell v3!
[Reflection.Assembly]::LoadWithPartialName( "System.IO.Compression.FileSystem" )
$src_folder = "D:\stuff"
$destfile = "D:\stuff.zip"
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
$includebasedir = $false
[System.IO.Compression.ZipFile]::CreateFromDirectory($src_folder,$destfile,$compressionLevel, $includebasedir )
Run Code Online (Sandbox Code Playgroud)
在最后一行周围放置一个 foreach 以适当地压缩每个文件,或者您想这样做,然后将整个内容包装为 Start-Job 的输入。
| 归档时间: |
|
| 查看次数: |
6002 次 |
| 最近记录: |