gpt4 book ai didi

powershell - powershell-在函数内部显示数组

转载 作者:行者123 更新时间:2023-12-03 01:26:21 25 4
gpt4 key购买 nike

所以我有一个对象

$appstatus=[pscustomobject] @{
txtlist=@()
csvlist=@()
someotherproperties
}
以及一个加载TXT或导入CSV文件的功能。根据所选的文件名,它会填充$ appstatus对象的一个​​属性。然后,我还有另一个功能来显示当前加载的列表。就像是
function showhosts(){
if(($appstatus.txtlist).count -gt 0){
write-host $appstatus.txtlist
}else{
write-host $appstatus.csvlist
}
}
txtlist很好,但是问题是csvlist的问题,因为write-host不会显示漂亮的表格格式,但是这个@ {property = value; ...}长字符串代替。我不能只在没有写主机的情况下键入$ appstatus.csvlist,因为它不会显示,而是变成函数的返回值,所以我该如何在函数内很好地显示对象,就像从调用它一样主脚本?

最佳答案

要求如下:

  • 在控制台上显示数据而不写入成功流。
  • 显示默认的PowerShell格式输出

  • 您可以为此目的使用 Out-Host
    function showhosts(){
    if(($appstatus.txtlist).count -gt 0){
    $appstatus.txtlist | Out-Host
    }else{
    $appstatus.csvlist | Out-Host
    }
    }

    Write-Host默认情况下不输出到成功流,并且在打印到控制台时具有更强大的功能。从PowerShell 5开始,它将写入信息流,该信息流可以存储在变量中,以后可以访问。如果您想通过典型的变量分配来捕获信息流,则信息流也可以重定向到成功流。但是,它确实将输出字符串化到控制台,该控制台解释了 @{property = value}语法。然后,在大多数系统上,所有 [string]转换数组都由单个空格连接,因为这是默认的分隔符。
    # Example 1
    # Stringify simple array
    Write-Host 1,2,3
    1 2 3

    # Example 2
    # Stringify an array of custom objects
    Write-Host $obj.two
    @{property=value1} @{property=value2}

    # Example 3
    # Saving Write-Host output to variable $out using information stream
    Write-Host $obj.two -InformationVariable out
    @{property=value1} @{property=value2}
    $out
    @{property=value1} @{property=value2}

    # Redirecting information stream to success stream
    # Notice write-host no longer outputs to console after redirection
    # $out has normal output plus write-host output
    $out = "first line`n"
    $out += Write-Host $obj.two 6>&1
    $out
    first line
    @{property=value1} @{property=value2}

    关于powershell - powershell-在函数内部显示数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62646705/

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