2012-01-25 13 views
3

PsIsContainerと入力する代わりに、 "dir"または "folder"のいずれかの文字列を使用したいと考えています。 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

私はdirdのような* nix関数が好きです:function dird {dir | ? {$ _。psiscontainer}} – x0n

+0

ありがとうございました。回答と+1としてマークされています。 – Sabuncu

4

あなたは、次のファイルとUpdate-TypeDataコマンドレットを使用して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