等待脚本完成

时间:2014-07-11 10:51:50

标签: powershell

我正在使用备份文件夹的脚本,而不是在下一个块中尝试从原始位置删除那些文件夹。这是脚本

if ($confirmation -eq 'y') {
  # 3. BACKUP script
  ./bakup_mysite.ps1

  # 4. DELETE CONTENTS OF my_site
  get-childitem "C:\inetpub\wwwroot\my_site\" -recurse | % {
    remove-item $_.FullName -recurse -force
  }
}

如果我在第3步之后放了Read-Host它会停止并要求用户按任意键然后删除下一个块。但是我想等一下,这样用户就不必按任何键,一切都会自动发生。

这是从my_site.ps1

调用的备用代码
$Service_folder_name = 'C:\Services\'
$Pics_folder_name = 'C:\Pics\'


$Date = Get-Date

$folder_date = $Date.ToString("yyyy-MM-dd_HHmm")

$backup_folder_name = 'c:\_Backups\my_site\' + $folder_date

if (!(Test-Path -path $backup_folder_name)) {

New-Item $backup_folder_name -type directory
}

if ((Test-Path -path $Pics_folder_name)) {
gi $pics_folder_name | .\Library\out-zip.ps1 $backup_folder_name\pics.zip $_
}

if ((Test-Path -path $Service_folder_name)) {
gi $Service_folder_name | .\Library\out-zip.ps1 $backup_folder_name\Services.zip $_
}

1 个答案:

答案 0 :(得分:1)

对于Powershell cmdlet或函数,PowerShell在开始下一个命令之前等待。如果您的备份脚本不是这种情况,那么诀窍就是管道输出Out-Null:

./bakup_mysite.ps1 | Out-Null

PowerShell将等到您的脚本退出后再继续。

另一个选择是使用后台作业:

$BackupJob = Start-Job -FilePath "\Path\To\bakup_mysite.ps1"
Wait-Job $BackupJob 

Powershell会等到作业$ BackupJob完成后再转到下一个命令。