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