有时我会执行PowerShell命令而忘记将其返回值/对象存储在变量中。 PowerShell是否将最后一个命令的返回对象存储在我可以访问的变量中?
PS C:\> Get-ChildItem
...
PS C:\> # Oh no, I forgot to assign the output to a variable
PS C:\> $a = Get-ChildItem
PS C:\>
答案 0 :(得分:4)
我确定这不是你想要的,但你可能会发现它很有趣。 Stuffing the output of the last command into an automatic variable(get-powershell.com)。解决方案由Andy Schneider发布,其灵感来自" // \ o //"和乔尔。这是从链接文章剪切到"覆盖默认" 的代码,并将结果存储在全局变量$lastobject
中。
function out-default {
$input | Tee-Object -var global:lastobject |
Microsoft.PowerShell.Utility\out-default
}
# In case you are using custom formatting
# You will need to override the format-* cmdlets and then
# add this to your prompt function
if($LastFormat){$LastOut=$LastFormat; $LastFormat=$Null }
答案 1 :(得分:0)
目前在WMF 5.1上,看起来Out-Default
位于不同的名称空间中。
function Out-Default {
$Input | Tee-Object -Var Global:LastOutput |
Microsoft.PowerShell.Core\Out-Default
}