পাওয়ারশেলের ব্যবহৃত গেটটাইপ, ভেরিয়েবলের মধ্যে পার্থক্য


92

ভেরিয়েবল $aএবং এর মধ্যে পার্থক্য কী $b?

$a = (Get-Date).DayOfWeek
$b = Get-Date | Select-Object DayOfWeek

আমি চেক করার চেষ্টা করেছি

$a.GetType
$b.GetType

MemberType          : Method
OverloadDefinitions : {type GetType()}
TypeNameOfValue     : System.Management.Automation.PSMethod
Value               : type GetType()
Name                : GetType
IsInstance          : True

MemberType          : Method
OverloadDefinitions : {type GetType()}
TypeNameOfValue     : System.Management.Automation.PSMethod
Value               : type GetType()
Name                : GetType
IsInstance          : True

তবে এই ভেরিয়েবলগুলির আউটপুট ভিন্ন দেখায় কোনও পার্থক্য বলে মনে হচ্ছে।

উত্তর:


163

প্রথমত, গেটটাইপ কল করার জন্য আপনার প্রথম বন্ধনী নেই। আপনি যা দেখছেন তা হল [DayOfWeek] এ গেটটাইপ পদ্ধতি বর্ণনা করে মেথডইনফো। গেটটাইপকে কল করতে আসলে আপনার করা উচিত:

$a.GetType();
$b.GetType();

আপনার এটি দেখতে হবে যে $aএটি একটি [DayOfWeek], এবং $bএকটি কাস্টম অবজেক্ট যা সিলেক্ট-অবজেক্ট সেমিডলেট দ্বারা উত্পন্ন একটি ডেটা অবজেক্টের কেবলমাত্র DayOfWeek সম্পত্তি ক্যাপচার করতে। অতএব, এটি কেবলমাত্র ডে-অফ-উইক সম্পত্তি সহ একটি বিষয়:

C:\> $b.DayOfWeek -eq $a
True

20

সিলেক্ট-অবজেক্ট একটি নতুন পসোবজেক্ট তৈরি করে এবং আপনি যে বৈশিষ্ট্যগুলির অনুরোধ করেছেন তার অনুলিপি করে। আপনি এটি getType () দিয়ে যাচাই করতে পারেন:

PS > $a.GetType().fullname
System.DayOfWeek

PS > $b.GetType().fullname
System.Management.Automation.PSCustomObject

10

সিলেক্ট-অবজেক্ট সুনির্দিষ্ট বৈশিষ্ট্য সহ একটি কাস্টম পিএসওজেক্ট ফেরত দেয়। এমনকি একক সম্পত্তি থাকা সত্ত্বেও আপনি বাস্তব পরিবর্তনশীল পাবেন না; এটি পিএসওজেক্টের ভিতরে আবৃত।

পরিবর্তে, করুন:

Get-Date | Select-Object -ExpandProperty DayOfWeek

এটি আপনাকে একই ফলাফল পাবে:

(Get-Date).DayOfWeek

পার্থক্যটি হ'ল যদি গেট-ডেট একাধিক অবজেক্ট ফেরত দেয় তবে পাইপলাইনটি প্যারেন্টেটিকাল রাস্তার চেয়ে ভাল কাজ করে যেমন (Get-ChildItem)উদাহরণস্বরূপ, আইটেমগুলির একটি অ্যারে। এটি পাওয়ারশেল v3-তে পরিবর্তিত হয়েছে এবং (Get-ChildItem).FullPathপ্রত্যাশার মতো কাজ করে এবং পুরো পথগুলির একটি অ্যারে দেয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.