У меня есть скриптовый блок, который я хотел бы запустить как фоновое задание. Ниже приведена команда, которую я хотел бы запустить:Невозможно запустить scriptblock как фоновое или удаленное задание, работает отлично, выполняя непосредственно
Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv -Append C:\Temp\Test_Source_Checksum.csv
Если я запустил эту команду, она успешно проходит без проблем.
Я попытался следующим за «Start-Job»
Start-Job -ScriptBlock { Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv -Append C:\Temp\Test_Source_Checksum.csv }
Это приводит к «Get-Job» отображая завершенные, когда он на самом деле hasnt, или оленья кожа, как представляется, судя по отсутствующему файлу: 'Test_Source_Checksum.csv'
Я также попытался с помощью следующего за 'Invoke-Command'
Invoke-Command -AsJob -ComputerName ($env:COMPUTERNAME) -ScriptBlock { Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv -Append C:\Temp\Test_Source_Checksum.csv }
Это приводит к 'Get-Job' размещая не удалось.
Если я показываю неудачу с помощью:
(get-job -name Job38).JobStateInfo.Reason
Я ничего не получаю обратно ...
Могу ли я с помощью Start-Job/Invoke-Command неправильно здесь?
Причина, по которой я хотел бы запустить это как фоновое задание, я пытаюсь скопировать большие объемы данных и контрольную сумму (для миграции DFS). Я хотел бы, чтобы скопировать данные в небольших подмножеств, то контрольная сумма данных, которые были скопированы во время его копирования следующей партии над ... прополоскать и повторить
Спасибо,
Chris
EDIT: Вот копия всего скрипта:
##----------------------------------------------------------------------------------##
$source="E:\DFSR_Migration_Test_Prod"
$dest="F:\DFSR_Migration_Test_Prod"
$what = @("/COPYALL","/B","/SEC","/E","/xd","dfsrprivate")
$options = @("/R:6","/tee","/MT:32")
$cmdArgs = @("$source","$dest",$what,$options)
##----------------------------------------------------------------------------------##
robocopy @cmdArgs
Write-Output "Prod_Copied @" (get-date) | Out-File C:\Temp\File_Copy.txt -Encoding ascii -Append -NoClobber
Write-Output "Initiating Prod Source Checksum @" (get-date) | Out-File C:\Temp\File_Copy.txt -Encoding ascii -Append -NoClobber
Start-Job -ScriptBlock { Get-ChildItem -Recurse $source | Get-DfsrFileHash | Export-csv C:\Temp\Prod_Source_Checksum.csv }
Write-Output "Initiating Prod Destination Checksum @" (get-date) | Out-File C:\Temp\File_Copy.txt -Encoding ascii -Append -NoClobber
Start-Job -ScriptBlock { Get-ChildItem -Recurse $dest | Get-DfsrFileHash | Export-csv C:\Temp\Prod_Destination_Checksum.csv }
Вы видите ошибки, если будете пытаться получить результаты работы? 'Get-Job | Receive-Job' – boeprox
Да, спасибо, похоже, что WinRM не была настроена, поэтому не удалось запустить Invoke-Command. Это теперь разрешено, но теперь как Invoke-Command, так и Start-Job те же, что и в, оба говорят, что завершены, но не выполнили скриптблока (no 'Test_Source_Checksum.csv) –
Какая версия PowerShell вы используете? Вы пытались импортировать модуль в скриптблоке до запуска команды Get-DfsrFileHash? – boeprox