Jeśli naprawdę chcesz „grep” sformatowany wyjściowe (wyświetlanie ciągów), a następnie przejść z podejściem Mike'a. Zdarzają się sytuacje, w których przydaje się to. Jeśli jednak chcesz spróbować zastosować charakter obiektu PowerShell, spróbuj tego. Po pierwsze, sprawdź właściwości dotyczące obiektów spływających rurociągu:
PS> alias | Get-Member
TypeName: System.Management.Automation.AliasInfo
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
<snip>
*Definition* Property System.String Definition {get;}
<snip>
Uwaga właściwość Definicja który jest nagłówek widać podczas wyświetlania wyjście Get-Alias (Alias) np:
PS> alias
CommandType Name *Definition*
----------- ---- ----------
Alias % ForEach-Object
<snip>
Zazwyczaj tytuł nagłówka pasuje do nazwy właściwości, ale nie zawsze. To tutaj przydaje się używanie Get-Member. Pokazuje, czego potrzebujesz, aby "skryptować" przeciwko. Teraz, jeśli chcesz "grep" to zawartość właściwości Definicja, rozważ to. Zamiast po prostu grepping wartość, że jedna właściwość, można zamiast filtrować każdy obiekt AliasInfo w pipepline przez zawartość tej właściwości można użyć regex to zrobić np
PS> alias | Where-Object {$_.Definition -match 'alias'}
CommandType Name Definition
----------- ---- ----------
Alias epal Export-Alias
Alias gal Get-Alias
Alias ipal Import-Alias
Alias nal New-Alias
Alias sal Set-Alias
W tym przykładzie używam gdzie -Object cmdlet do filtrowania obiektów na podstawie dowolnego dowolnego skryptu. W tym przypadku filtruję według właściwości Defintion dopasowanej do aliasu wyrażenia regularnego. Tylko te obiekty, które zwracają wartość true dla tego filtru, mogą rozprzestrzeniać się w potoku i zostać sformatowane do wyświetlania na hoście.
BTW, jeśli piszesz to, możesz użyć jednego z dwóch aliasów dla Where-Object - "Where" lub "?".Na przykład:
PS> gal | ?{$_.Definition -match '-Item*'}
W Powershell 1.0 nie ma opcji -split. Możesz to zrobić zamiast: (alias | out-string -stream) | select-string Napisz – Mike
Czyż nie wszystko tu całkowicie pomijasz? Nie musisz pobierać wyników Powerhell. – x0n
@ x0n No cóż, zdarzają się przypadki, w których szybko przeszukuję coś przez konsolę PS i nie wiem i/lub nie dbam o to, czy jest to konkretna właściwość. Uważam, że zbyt nużące jest używanie 'Get-Member', a następnie użycie poprawnej właściwości i wyrażenia w komendzie' where'. I "grep" jest szczególnie dobry w tym. – OnesimusUnbound