Скрипты PowerShell для ExpDP

Я использую команду expdp для резервного копирования и перенаправить вывод в текстовый файл. Пока это происходит, консоль пуста. Я хотел бы написать скрипт powershell для отображения сообщения о состоянии как "Выполняется", пока выполнение команды expdp не будет завершено. Я попытался использовать команду start-job, однако она не перенаправляет вывод в текстовый файл, поскольку это фоновое задание. Любая помощь здесь приветствуется. Ниже приведен код, используемый для начала работы

$job = Start-Job -ScriptBlock {expdp username/password@database schemas="" directory="" dumpfile="" logfile="" REUSE_DUMPFILES=yes filesize=32G *> PROJECT.txt} -Name ExpdpJob

while ((Get-Job -Name ExpdpJob).State -eq "Running") 
{ 
    Write-Output "Expdp command is running"
}

0 ответов

Для захвата стандартного вывода вы должны будете использовать команду receive-job. Я протестировал приведенный ниже код с PowerShell 5.1, и он работает. Это не будет работать в более низких версиях, так как информационный поток (#6) не поддерживается. В приведенном ниже фрагменте делается вид, что expdp выполняется в течение 10 секунд и ожидает отображения "запущенного" сообщения каждые 5 секунд до завершения, затем записывает выходные данные в файл с помощью Receive-Job и удаляет задание.

$job = Start-Job -ScriptBlock {Start-Sleep -Seconds 10; Write-Host "test";} -Name ExpdpJob

while ((Get-Job -Name ExpdpJob).State -eq "Running") 
{ 
    Write-Output "Expdp command is running"
    Start-Sleep -Seconds 5
}

Write-Output "Expdp command completed"
((Receive-Job $job) 6>&1) >> C:\temp\test123.txt

Remove-Job $job

Get-Content C:\temp\test123.txt
Другие вопросы по тегам