高级功能上的 PowerShell Invoke-Command
PowerShell Invoke-Command on an advanced function
我有一个模块文件中可用的高级函数 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.
如上所示 here 我认为 $ sign
对应 ScriptBlock
是不正确的。但是这样我就不需要将我的高级函数放在 ScriptBlock 中来复制它,因为它现在自动发生,而它只在模块中可用。所以我只需要找出如何在日志文件中捕获输出。
感谢您的帮助。
几分钟前找到解决方案:
# 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
我有一个模块文件中可用的高级函数 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.
如上所示 here 我认为 $ sign
对应 ScriptBlock
是不正确的。但是这样我就不需要将我的高级函数放在 ScriptBlock 中来复制它,因为它现在自动发生,而它只在模块中可用。所以我只需要找出如何在日志文件中捕获输出。
感谢您的帮助。
几分钟前找到解决方案:
# 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