【发布时间】:2016-07-28 09:18:15
【问题描述】:
我有一个 Powershell 问题。
我试图通过调用引用变量的函数来从函数中获取值到变量。 例如:
$var = New.Object System.Object;
Example-Function -OutObject ([ref]$var);
Example-Function 的定义如下:
function Example-Function
{
[CmdletBinding()]
param
(
[Parameter(Mandatory=$true)]
[ref]
$OutObject
)
$SomeValue = ...
#Write some output
#Do something...
$OutObject.Value = $SomeValue;
}
这工作正常。 $var 变量从函数 ($SomeValue) 中获取它的值。
但是,当将 Example-Function 导入远程会话时,这不起作用,例如:
$creds = New-Object System.Management.Automation.PSCredential('user','pass')
$session = New-PSSession -ComputerName 'ExampleComputer' -Credential $creds -Authentication CredSSP
Import-PSSession -Session $session -CommandName 'Example-Function' -AllowClobber
$var = New.Object System.Object;
Example-Function -OutObject ([ref]$var);
此代码引发以下错误:无法处理参数“OutObject”的参数转换。参数中需要引用类型。
我假设这是因为 Example-Function 现在正在另一台计算机('ExampleComputer')上运行,而 ([ref]$var) 正在引用运行脚本的计算机内存中的变量(我的计算机)。 我不想(不能)使用 return 语句方式的原因是因为我的函数正在编写一些输出,并且在 Powershell 中,从函数输出的所有内容都会返回。 所以,我的问题是,当函数在远程会话中运行时,我可以从一个有很多输出到变量中的函数中获取一个值吗? 如果使用[ref]参数不能做到,有没有别的办法?
谢谢
【问题讨论】:
标签: function powershell parameters return remoting