PsIsContainer的别名?

时间:2012-01-25 21:38:11

标签: powershell

我希望能够使用“dir”或“folder”字符串,而不是键入PsIsContainer。在PowerShell中是否有一种方法允许我将一个字符串替换为另一个字符串,如本例所示?

2 个答案:

答案 0 :(得分:7)

认为你可以通过预定义几个脚本块来接近你所追求的东西,例如:

$IsDir = {$_.PsIsContainer}
$IsFile = {!$_.PsIsContainer}
dir | Where $IsDir
dir | Where $IsFile

PowerShell V3的好消息。本机支持这一点,例如:

dir -directory
dir -ad
dir -file
dir -af

答案 1 :(得分:4)

您可以使用以下文件和System.IO.FileInfo cmdlet更新Update-TypeData类型的TypeData。

d:\ fileinfo.ps1xml

<?xml version="1.0" encoding="utf-8" ?>
<Types>
    <Type>
        <Name>System.IO.FileSystemInfo</Name>
        <Members>
            <ScriptProperty>
                <Name>dir</Name>
                <GetScriptBlock>
                 $this.psiscontainer
                </GetScriptBlock>
            </ScriptProperty>
        <ScriptProperty>
                <Name>file</Name>
                <GetScriptBlock>
                 ! ($this.psiscontainer)
                </GetScriptBlock>
            </ScriptProperty>
        </Members>
     </Type>
</Types>

更新TypeData:

update-typedata D:\fileinfo.ps1xml

现在您可以输入:

gci | ?{$_.dir}

gci | ?{$_.file}