Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 管道格式问题_Powershell - Fatal编程技术网

Powershell 管道格式问题

Powershell 管道格式问题,powershell,Powershell,我正在尝试格式化来自管道的对象,如下所示 function Format-Nice { [CmdletBinding()] param( [Parameter(ValueFromPipeline=$true)]$objects ) process { $objects | Format-Table -Property Name, @{Label='Size';expressi

我正在尝试格式化来自管道的对象,如下所示

function Format-Nice
{
        [CmdletBinding()] param(
            [Parameter(ValueFromPipeline=$true)]$objects
        )
        process {
            $objects | Format-Table -Property Name, 
            @{Label='Size';expression={[int]($_.Length/1MB) }}
        }
}

然而,这似乎是在shell上的一个单独表中断开管道中的每个对象。我打算编写一个通用格式函数,该函数将根据管道中的当前对象类型提供自定义哈希表表达式。

您需要使用
SteppablePipeline
,这样您就不会为每个输入对象运行
格式表的新副本:

function Format-Nice
{
    [CmdletBinding()] param(
        [Parameter(ValueFromPipeline=$true)][PSObject]$InputObject
    )
    begin {
        $SteppablePipeline={
            Format-Table -Property Name,
            @{Label='Size';expression={[int]($_.Length/1MB) }}
        }.GetSteppablePipeline($MyInvocation.CommandOrigin);
        $SteppablePipeline.Begin($PSCmdlet)
    }
    process {
        if($MyInvocation.ExpectingInput) {
            $SteppablePipeline.Process($InputObject)
        } else {
            $SteppablePipeline.Process()
        }
    }
    end {
        $SteppablePipeline.End()
        $SteppablePipeline.Dispose()
    }
}

您需要使用
SteppablePipeline
,这样您就不会为每个输入对象运行
格式表的新副本了:

function Format-Nice
{
    [CmdletBinding()] param(
        [Parameter(ValueFromPipeline=$true)][PSObject]$InputObject
    )
    begin {
        $SteppablePipeline={
            Format-Table -Property Name,
            @{Label='Size';expression={[int]($_.Length/1MB) }}
        }.GetSteppablePipeline($MyInvocation.CommandOrigin);
        $SteppablePipeline.Begin($PSCmdlet)
    }
    process {
        if($MyInvocation.ExpectingInput) {
            $SteppablePipeline.Process($InputObject)
        } else {
            $SteppablePipeline.Process()
        }
    }
    end {
        $SteppablePipeline.End()
        $SteppablePipeline.Dispose()
    }
}

您需要使用
SteppablePipeline
,这样您就不会为每个输入对象运行
格式表的新副本了:

function Format-Nice
{
    [CmdletBinding()] param(
        [Parameter(ValueFromPipeline=$true)][PSObject]$InputObject
    )
    begin {
        $SteppablePipeline={
            Format-Table -Property Name,
            @{Label='Size';expression={[int]($_.Length/1MB) }}
        }.GetSteppablePipeline($MyInvocation.CommandOrigin);
        $SteppablePipeline.Begin($PSCmdlet)
    }
    process {
        if($MyInvocation.ExpectingInput) {
            $SteppablePipeline.Process($InputObject)
        } else {
            $SteppablePipeline.Process()
        }
    }
    end {
        $SteppablePipeline.End()
        $SteppablePipeline.Dispose()
    }
}

您需要使用
SteppablePipeline
,这样您就不会为每个输入对象运行
格式表的新副本了:

function Format-Nice
{
    [CmdletBinding()] param(
        [Parameter(ValueFromPipeline=$true)][PSObject]$InputObject
    )
    begin {
        $SteppablePipeline={
            Format-Table -Property Name,
            @{Label='Size';expression={[int]($_.Length/1MB) }}
        }.GetSteppablePipeline($MyInvocation.CommandOrigin);
        $SteppablePipeline.Begin($PSCmdlet)
    }
    process {
        if($MyInvocation.ExpectingInput) {
            $SteppablePipeline.Process($InputObject)
        } else {
            $SteppablePipeline.Process()
        }
    }
    end {
        $SteppablePipeline.End()
        $SteppablePipeline.Dispose()
    }
}

“这似乎是在一个单独的表中断开管道中的每个对象”我无法复制此行为(在PS 2.0中)。“这似乎是在一个单独的表中断开管道中的每个对象”我无法复制此行为(在PS 2.0中)。“这似乎是在一个单独的表中断开管道中的每个对象”我无法复制此行为(在PS 2.0中)。“这似乎是在将管道中的每个对象从一个单独的表中断开”我无法复制此行为(在PS 2.0中)。@ShijuSamuel很遗憾,我唯一能向您指出的是关于,但是它确实缺乏使用示例。@ShijuSamuel另一个可步进管道使用示例可以在PowerShell中的
mkdir
函数中找到:
Get命令mkdir | Select Object-ExpandProperty Definition
@ShijuSamuel遗憾的是,我唯一能指给你的是关于,但是它确实缺乏使用示例。@ShijuSamuel另一个可步进管道使用示例可以在PowerShell中的
mkdir
函数中找到:
Get命令mkdir | Select Object-ExpandProperty Definition
@ShijuSamuel遗憾的是,我唯一能指给你的是关于,但是它确实缺乏使用示例。@ShijuSamuel另一个可步进管道使用示例可以在PowerShell中的
mkdir
函数中找到:
Get命令mkdir | Select Object-ExpandProperty Definition
@ShijuSamuel遗憾的是,我唯一能指给你的是关于,但是它确实缺少使用示例。@另一个可分步管道使用示例可以在PowerShell中的
mkdir
函数中找到:
Get命令mkdir |选择对象-ExpandProperty定义