0

我正在尝试使用 powershell 远程处理运行一段远程代码,并得到一些我无法解释的奇怪行为。这是我运行的命令序列。

$sb1 = {$r1 = 1; $r2 = 2; $r3 = Get-Culture; return $r3}
$sb2 = {1; 2; $r3 = Get-Culture; return $r3}

$session = New-PSSession -ComputerName $comp -Credential $creds

$ret1 = Invoke-Command -Session $Session -ScriptBlock $sb1
$ret2 = Invoke-Command -Session $Session -ScriptBlock $sb2

$ret1
>>> en-US
$ret2
>>> 1

有谁知道这种行为的原因?我觉得很奇怪。返回语句被忽略,脚本块被评估为第一个“未捕获”表达式。嗯?

另外,如果我确实希望这个块总是评估 return 语句,甚至是最后一个语句,有谁知道我可以如何做到这一点?

4

1 回答 1

0

执行整个脚本块并返回结果。$ret2 将包含三个答案。第一个是“1”,第二个是“2”,第三个是Get-Culture 的输出。您可以通过查看 $ret2[0]、$ret2[1] 和 $ret[2] 来探索这些内容。您可以通过 $ret2.count 查看返回的结果数量。

下面显示了我电脑上 $ret2 中的所有内容。

PS C:\Users\user\Documents\PowerShell> $ret2 | select * | fl
@{PSComputerName=MyComputer; RunspaceId=b9568f5d-88a0-4346-be1a-827b8ba2f29d; PSShowComputerName=True}
@{PSComputerName=MyComputer; RunspaceId=b9568f5d-88a0-4346-be1a-827b8ba2f29d; PSShowComputerName=True}


PSComputerName                 : MyComputer
RunspaceId                     : b9568f5d-88a0-4346-be1a-827b8ba2f29d
Parent                         : en
LCID                           : 1033
KeyboardLayoutId               : 1033
Name                           : en-US
IetfLanguageTag                : en-US
DisplayName                    : English (United States)
NativeName                     : English (United States)
EnglishName                    : English (United States)
TwoLetterISOLanguageName       : en
ThreeLetterISOLanguageName     : eng
ThreeLetterWindowsLanguageName : ENU
CompareInfo                    : CompareInfo - en-US
TextInfo                       : TextInfo - en-US
IsNeutralCulture               : False
CultureTypes                   : SpecificCultures, InstalledWin32Cultures, FrameworkCultures
NumberFormat                   : System.Globalization.NumberFormatInfo
DateTimeFormat                 : System.Globalization.DateTimeFormatInfo
Calendar                       : System.Globalization.GregorianCalendar
OptionalCalendars              : {System.Globalization.GregorianCalendar, System.Globalization.GregorianCalendar}
UseUserOverride                : True
IsReadOnly                     : False
于 2013-08-21T14:10:19.010 回答