我的意思是着色ls的输出。
我检查了Powershell: Properly coloring Get-Childitem output once and for all
这两个选项似乎是:

  • 使用OP中所提倡的New-CommandWrapper和Jon Z的回答。
  • 使用模块PSColor

  • 我从OP获得了New-CommandWrapper的代码(与provided by O'Reilly相同),将其放置在文件New-CommandWrapper.ps1中,并将其点缀在我的profile.ps1中。
    现在,当我打开一个新的 session 时
    cmdlet New-CommandWrapper.ps1 at command pipeline position 1
    Supply values for the following parameters:
    Name:
    
    可以吗?如果是这样,我应该输入什么?或者我该如何解决?
    (我敢肯定这个问题很简单)。
    注意:我无法使PSColor工作,这可能值得另一个问题。
    a comment中所述,导入模块后,(几乎?)任何cmdlet输出
    Value cannot be null.
    Parameter name: command
    En línea: 39 Carácter: 9
    +         $steppablePipeline.Begin($PSCmdlet)
    +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`
    

    编辑:
    通过托马斯建议的修改,问题得以解决。
    现在我得到了同样的Value cannot be null.错误。
    我想得出的结论是,他的建议是正确的,我解决了我遇到的许多链式问题之一……但我不确定。

    最佳答案

    如评论中所述,New-CommandWrapper打包为脚本而不是功能,因此,如果要点源脚本,则需要稍微编辑脚本文件:

  • function New-CommandWrapper {的最顶部插入New-CommandWrapper.ps1
  • 在最后一行
  • 上添加}
    现在,您可以从源文件中对其进行点源(如果需要的话),并使用链接的答案中给出的示例:
    PS C:\> . .\path\to\New-CommandWrapper.ps1
    PS C:\> New-CommandWrapper Out-Default `
    >>>    -Process {
    >>>        if(($_ -is [System.IO.DirectoryInfo]) -or ($_ -is [System.IO.FileInfo]))
    >>>        {if(-not ($notfirst)) {
    >>>           Write-Host "    Directory: $(pwd)`n"
    >>>           Write-Host "Mode                LastWriteTime     Length Name"
    >>>           Write-Host "----                -------------     ------ ----"
    >>>           $notfirst=$true
    >>>           }
    >>>           if ($_ -is [System.IO.DirectoryInfo]) {
    >>>           Write-host ("{0,-7} {1,25} {2,10} {3}" -f $_.mode, ([String]::Format("{0,10}  {1,8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))), $_.length, $_.name) -foregroundcolor "yellow" }
    >>>           else {
    >>>           Write-host ("{0,-7} {1,25} {2,10} {3}" -f $_.mode, ([String]::Format("{0,10}  {1,8}", $_.LastWriteTime.ToString("d"), $_.LastWriteTime.ToString("t"))), $_.length, $_.name) -foregroundcolor "green" }
    >>>           $_ = $null
    >>>        }
    >>>}
    

    10-06 14:18