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