Di PowerShell, bagaimana Anda mendapatkan nilai properti objek dengan menentukan namanya (string)? Saya ingin sesuatu seperti berikut:
$obj = get-something
# View the object's members:
$obj | gm
# I could retrieve a property by doing so:
write-host $obj.SomeProp
# But for many purposes, I would really want to:
write-host $obj | Get-PropertyByName "SomeProp"
Apakah ada yang mirip dengan "Dapatkan-PropertyByName" di PowerShell?
powershell
KFL
sumber
sumber
select -expand "SomeProp"
jika Anda menginginkan nilainya.select "SomeProp"
mengembalikan objek kustom dengan properti "SomeProp", dan kemudian dia cukup banyak kembali pada langkah 1.$obj."SomeProp"
diwrite-host
?$obj.($propName)
juga berfungsi. (Tanda kurung tidak diperlukan, tetapi itu terlihat sangat aneh bagi saya tanpa mereka.)$propName
menyimpannya di objek misalnya$Headers.PropertyName
maka tanda kurung diperlukan$obj.($Headers.PropertyName)
.Memperluas pada @ aquinas:
atau
atau
Saya membuat saran-saran ini untuk mereka yang mungkin hanya mencari perintah single-line untuk mendapatkan beberapa informasi dan ingin memasukkan contoh dunia nyata.
Dalam mengelola Office 365 via PowerShell, berikut adalah contoh yang saya gunakan untuk mendapatkan semua pengguna / grup yang telah ditambahkan ke daftar "BookInPolicy":
Hanya menggunakan "Select BookInPolicy" memotong beberapa anggota, jadi terima kasih atas informasi ini!
sumber
Anda bisa mendapatkan properti dengan nama menggunakan
Select-Object
cmdlet dan menentukan nama properti yang Anda minati. Perhatikan bahwa ini tidak hanya mengembalikan nilai mentah untuk properti itu; alih-alih Anda mendapatkan sesuatu yang masih berperilaku seperti objek.Untuk menggunakan nilai properti itu, Anda masih perlu mengidentifikasi properti yang Anda cari, bahkan jika hanya ada satu properti:
Seperti jawaban lain di sini, jika Anda ingin menggunakan satu properti dalam sebuah string, Anda perlu mengevaluasi ekspresi (letakkan tanda kurung di sekitarnya) dan awali dengan tanda dolar ($) untuk menyatakan ekspresi secara dinamis sebagai variabel yang akan dimasukkan ke dalam string:
Cukup benar, orang lain telah menjawab pertanyaan ini dengan merekomendasikan
-ExpandProperty
parameter untukSelect-Object
cmdlet. Ini memintas beberapa sakit kepala dengan mengembalikan nilai properti yang ditentukan, tetapi Anda akan ingin menggunakan pendekatan yang berbeda dalam skenario yang berbeda.PowerShell variabel
sumber
Coba ini :
sumber
The value of Prop is Value
dan kemudianThe value of NonexistentProp is
Berikut ini cara alternatif untuk mendapatkan nilai properti objek:
sumber
sumber