小编iot*_*top的帖子

如何使用函数从管道中获取对象作为字符串?

以字符串而不是对象形式输出结果的命令:

ls | Out-String -Stream
Run Code Online (Sandbox Code Playgroud)

输出:

    Directory: C:\MyPath\dir1

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2022-01-22  5:34 PM              0 1.txt
-a---          2022-01-22  5:34 PM              0 2.txt
-a---          2022-01-22  5:34 PM              0 3.txt
Run Code Online (Sandbox Code Playgroud)

我尝试使用函数获得相同的结果:

function f {
    [CmdletBinding()]
    param (
        [Parameter(ValueFromPipeline,
            ValueFromPipelineByPropertyName)]
        $Content
    )
    
    process {
        $Content | Out-String -Stream
    }
}

ls | f
Run Code Online (Sandbox Code Playgroud)

但是,每个项目的输出都是分开的:

    Directory: C:\MyPath\dir1

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---          2022-01-22  5:34 PM              0 1.txt


    Directory: C:\MyPath\dir1

Mode                 LastWriteTime         Length Name
---- …
Run Code Online (Sandbox Code Playgroud)

powershell

8
推荐指数
3
解决办法
1144
查看次数

标签 统计

powershell ×1