PowerShell Invoke-Command на разширена функция

Имам разширена функция Copy-FilesHC, която е налична във файл на модул. Тази функция копира някои файлове от Source в папката Destination и генерира някакъв изход за в лог файл.

Функцията работи добре локално:

Copy-FilesHC -Source $Src -Destination $Des *>> $Log

Работи и на отдалечена машина:

# For remote use we need to make it available first
Import-Module (Get-Command Copy-FilesHC).ModuleName

Invoke-Command -Credential $Cred -ComputerName $Host -ScriptBlock ${Function:Copy-FilesHC} -ArgumentList $LocalSrc, $LocalDes

Изглежда обаче не мога да разбера как мога да го накарам да прехвърли изхода към лог файл, както в първата команда. Когато опитам следното, не успява:

Invoke-Command -Credential $Cred -ComputerName $Host -ScriptBlock ${Function:Copy-FilesHC *>> $Log} -ArgumentList $LocalSrc, $LocalDes

Invoke-Command : Cannot validate argument on parameter 'ScriptBlock'. The argument is null. Provide a vali
d value for the argument, and then try running the command again.

Както е посочено тук реших, че $ sign за ScriptBlock беше неправилно. Но по този начин не е необходимо да поставям моята разширена функция в ScriptBlock, за да я копирам, тъй като сега това се случва автоматично, докато е достъпна само в рамките на модула. Така че просто трябва да разбера как да заснема изхода в лог файла.

Благодаря ти за помощта.


person DarkLite1    schedule 30.01.2015    source източник


Отговори (1)


Намерих решението само преди няколко минути:

# For remote use we need to make it available first
Import-Module (Get-Command Copy-FilesHC).ModuleName

Invoke-Command -Credential $Cred -ComputerName $Host -ScriptBlock ${Function:Copy-FilesHC} -ArgumentList $LocalSrc, $LocalDes *>> $Log
person DarkLite1    schedule 30.01.2015