2012-01-25 63 views
3

而不是輸入PsIsContainer,我希望能夠使用「目錄」或「文件夾」字符串。在PowerShell中有沒有辦法讓我用一個字符串替換另一個字符串,就像在這種情況下一樣?PsIsContainer的別名?

回答

7

認爲你可以通過預定義了幾個scriptblocks例如爲:

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

在PowerShell中V3好消息親近你在做什麼AFER。這是原生支持例如爲:

dir -directory 
dir -ad 
dir -file 
dir -af 
+0

剛試過。有用。 –

+0

我喜歡* nix函數,如dird:function dird {dir | ? {$ _。psiscontainer}} – x0n

+0

謝謝,標記爲答案和+1。 – Sabuncu

4

你可以更新您使用以下文件和Update-TypeData cmdlet中System.IO.FileInfo類型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} 
+0

+1引入一個全新的研究領域。謝謝。 – Sabuncu