gpt4 book ai didi

Powershell:哈希表内容未显示在函数中

转载 作者:行者123 更新时间:2023-12-03 13:02:03 24 4
gpt4 key购买 nike

我有一个函数,我向它传递一个哈希表。在我想要的功能中 1) 通过 Write-Host 在屏幕上显示文本; 2) 一次性显示哈希表的内容——提供通常的两列“名称”/“值”哈希表显示。 3) 让函数返回 $true$false

MyFunction $MyHashTable

函数内:
param (
[hashtable]$TheHashTable
)
# Sundry things here and then:
write-host "Some information to display on-screen`n"
# and then:
$TheHashTable

后者的预期结果类似于:
Some information to display on-screen

Name Value
---- -----
a b
c d

最终:
return $true #  If what I'm doing worked; otherwise, $false

如果我调用如上所示的函数,我会在屏幕上看到通过 Write-Host 显示的文本,以及哈希表内容的两列显示 - 文本 TrueFalse 在屏幕上,具体取决于函数返回的内容。

如果我这样称呼它:
$myResult = MyFunction $MyHashTable

...我在 $myResult 中捕获了函数的返回值——但是哈希表的内容的显示被抑制了。如果我这样做,它也会被抑制:
if ( (MyFunction $MyHashTable) -eq $true ) {
# do something
} else {
# do something different
}

有没有办法
  • 保证hashtable内容的显示,无论函数如何调用;
  • 无论如何,在执行 True 语句时抑制 FalseReturn 的屏幕显示?
  • 最佳答案

    您的函数生成的任何输出都将通过管道发送。这正是您编写时发生的情况:

    $TheHashTable

    如果您想将此值写入屏幕而不是管道,您还应该使用 Write-Host ,就像您之前在示例中所做的那样:
    Write-Host $TheHastTable

    但是,使用上面的代码,您可能会得到类似于以下输出的内容:
    PS>$table = @{ "test"="fred";"barney"="wilma"}
    PS> write-host $table
    System.Collections.DictionaryEntry System.Collections.DictionaryEntry

    显然 Write-Host 没有应用您期望的格式,这可以通过使用 Out-String 来修复,如下所示:
    PS> $table | Out-String | Write-Host

    导致:
    Name                           Value
    ---- -----
    barney wilma
    test fred

    关于Powershell:哈希表内容未显示在函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13353300/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com