Псевдоним для PsIsContainer? - PullRequest
       3

Псевдоним для PsIsContainer?

3 голосов
/ 26 января 2012

Вместо того, чтобы вводить PsIsContainer, я хотел бы иметь возможность использовать строки "dir" или "folder". Есть ли способ в PowerShell, который позволяет мне заменить одну строку на другую, как в этом случае?

Ответы [ 2 ]

7 голосов
/ 26 января 2012

Я думаю вы можете приблизиться к тому, что вам нужно, предварительно определив пару блоков скриптов, например ::1003 *

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

Хорошие новости в PowerShell V3. Это поддерживается изначально, например ::1006*

dir -directory
dir -ad
dir -file
dir -af
4 голосов
/ 26 января 2012

Вы можете обновить свои TypeData для типа System.IO.FileInfo, используя следующий файл и командлет Update-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>

Обновите данные типа:

update-typedata D:\fileinfo.ps1xml

Теперь вы сможете набирать:

gci | ?{$_.dir}

и

gci | ?{$_.file}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...