我正在使用备份文件夹的脚本,而不是在下一个块中尝试从原始位置删除那些文件夹。这是脚本
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 $_
}
答案 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完成后再转到下一个命令。