Bazı genel notlar.
$obj | Select-Object
⊆ $obj | Select-Object -Property *
İkincisi, tüm dahili olmayan, derleyici tarafından oluşturulmayan özellikleri gösterecektir . İlki değil (her zaman) göstermek için görünür tüm Mülkiyet tipleri (benim testlerde, gösterilme görünmüyor CodeProperty
MemberType
sürekli olsa - burada hiçbir garanti).
Get-Member için dikkat edilmesi gereken bazı anahtarlar
Get-Member
yok değil varsayılan olarak statik üye olsun. Ayrıca onları statik olmayan üyelerle birlikte (doğrudan) alamazsınız . Diğer bir deyişle, anahtarı kullanmak yalnızca statik üyelerin döndürülmesine neden olur:
PS Y:\Power> $obj | Get-Member -Static
TypeName: System.IsFire.TurnUpProtocol
Name MemberType Definition
---- ---------- ----------
Equals Method static bool Equals(System.Object objA, System.Object objB)
...
Kullanın -Force
.
Get-Member
Komut kullanan kuvvet göstergesine nesnelerin iç üyeleri ve derleyici tarafından oluşturulan üye ekleme parametre. Get-Member
bu üyeleri alır, ancak varsayılan olarak onları gizler.
PS Y:\Power> $obj | Get-Member -Static
TypeName: System.IsFire.TurnUpProtocol
Name MemberType Definition
---- ---------- ----------
...
pstypenames CodeProperty System.Collections.ObjectModel.Collection...
psadapted MemberSet psadapted {AccessRightType, AccessRuleType,...
...
ConvertTo-Json
Derinlik ve okunabilir "serileştirme" için kullanın
Ben do not gerekli JSON kullanarak nesnelerin tasarrufu tavsiye (kullanımExport-Clixml
yerine). Bununla birlikte, ConvertTo-Json
derinliği belirlemenize de olanak tanıyan, aşağı yukarı okunabilir bir çıktı elde edebilirsiniz.
Belirtmemenin Depth
ima ettiğine dikkat edin-Depth 2
PS Y:\Power> ConvertTo-Json $obj -Depth 1
{
"AllowSystemOverload": true,
"AllowLifeToGetInTheWay": false,
"CantAnyMore": true,
"LastResortOnly": true,
...
Ve okumayı planlamıyorsanız, okuyabilirsiniz -Compress
(yani boşlukları soyun)
PS Y:\Power> ConvertTo-Json $obj -Depth 420 -Compress
kullanım -InputObject
eğer yapabilirsen (ve istekli)
PowerShell'i kullanırken% 99,9 oranında: performans önemli olmayacak veya performans sizin için önemli değil. Bununla birlikte , ihtiyacınız olmadığında borudan kaçınmanın bir miktar ek yük tasarrufu sağlayabileceği ve biraz hız ekleyebileceği unutulmamalıdır (genel olarak boru sistemi süper verimli değildir).
Yani, sahip olduğunuz her şey $obj
yazdırmak için kullanışlı bir tek şeyse (ve bazen benim gibi yazmak için çok tembel değilsiniz -InputObject
):
# select is aliased (hardcoded) to Select-Object
PS Y:\Power> select -Property * -InputObject $obj
# gm is aliased (hardcoded) to Get-Member
PS Y:\Power> gm -Force -InputObject $obj
Uyarı Get-Member -InputObject
:
$ obj bir koleksiyonsa (örneğin System.Object[]
), koleksiyon nesnesinin kendisi hakkında bilgi alırsınız:
PS Y:\Power> gm -InputObject $obj,$obj2
TypeName: System.Object[]
Name MemberType Definition
---- ---------- ----------
Count AliasProperty Count = Length
...
Koleksiyondaki Get-Member
her biri için isterseniz TypeName
( her nesne için değil , her nesne için değil - hepsi aynı olan N nesneden oluşan bir koleksiyon TypeName
, bunun için TypeName
yalnızca 1 tablo yazdırır TypeName
, her nesne için N tablo değil) ...... doğrudan boru ile yapıştırın.
-Force
Çalışması için parametreyiWrite-Host ($obj | Format-List -Force | Out-String)