继续脚本,一旦搜索完成



我在脚本中有命令来执行合规性搜索(Microsoft Exchange(,这需要~20分钟,我需要等到它完成才能使用powershell。一旦搜索完成,我需要自动继续脚本。下面是示例:

ShowSearchResults 
Write-Host "You can find search results under the following path: C:ExportResults" -ForegroundColor Green
Write-Host "Do you want to delete found mails? (y/n)" -ForegroundColor Green
New-ComplianceSearchAction -SearchName $FinalSearchName  -PurgeType softdelete -Purge

当我开始"显示搜索结果"时,我需要等待一次完成。我需要显示"写入主机..."一旦搜索完成,直到它,我需要我的会话。

我尝试使用启动作业,但没有找到这种方式的解决方案

你的代码对我来说似乎很好,除了 1 个错误陈述。

与大多数脚本语言一样,PowerShell 默认情况下将从上到下执行脚本中的命令/语句。

因此,只有在上一个命令完成后,才会执行Write-Host

至于"歪曲"语句,您可能希望使用Read-Host来让用户选择软删除上次搜索。所以经过小的修正,你的代码看起来像下面这样,

#1
$ComplianceSearchJob = Start-Job -ScriptBlock {
ShowSearchResults
Write-Host "You can find search results under the following path: C:ExportResults" -ForegroundColor Green
# Invoke-Item "C:ExportResultsSearchResults.csv"
}
#2
Receive-Job $ComplianceSearchJob -Keep
#3
$DeleteChoice = Read-Host "Do you want to delete found mails? (y/n): " -ForegroundColor Green
if($DeleteChoice -eq "Y"){ # case insensitive
New-ComplianceSearchAction -SearchName $FinalSearchName  -PurgeType softdelete -Purge
}

编辑 1:添加了在注释中打开C:ExportResultsSearchResults.csv文件Invoke-Item

编辑 2:用于Start-Job以允许作为后台进程运行。

最新更新