কিভাবে আমি সঠিকভাবে এই বস্তুর বিন্যাস করা হবে?


1

আমি এমন কিছু ড্রাইভ সম্পর্কে তথ্য সহ একটি বস্তু তৈরি করার চেষ্টা করছি যা এমন কিছু দেখায়:

[
  {"letter": "C:", "volumeName": "Disk C", "brand": "INTEL ModelName", "mediaType" : "Fixed hard disk media"},
  {"letter": "D:", "volumeName": "Disk D", "brand": "Seagate ModelName", "mediaType" : "Fixed hard disk media"},
]

কিন্তু নিম্নোক্ত পাওয়ারশেল কমান্ডটি কেবল একটি বস্তুর মধ্যে প্রতিটি ডিস্কের সমস্ত বৈশিষ্ট্যগুলি নির্বাণ করার পরিবর্তে কেবলমাত্র দুর্বল গঠনযুক্ত ফলাফলগুলি নয় বরং 1 ডিস্কের প্রতিটি সম্পত্তিটির জন্য একটি বস্তু তৈরি করে:

% {New-Object PSObject -Property @{'caption' =$(wmic logicaldisk get caption $_); 'volumeName' =$(wmic logicaldisk get VolumeName $_); 'brand' =$(wmic diskdrive get caption $_); 'format' =$(wmic diskdrive get mediaType $_);}} | format-list

হালনাগাদ

আমি পরিবর্তে এই কমান্ডটি ব্যবহার করার চেষ্টা করেছি:

Get-WMIObject Win32_LogicalDisk | % {New-Object PSObject -Property @{'caption' =$($_.caption); 'volumeName' =$($_.VolumeName); 'brand' =$(); 'format' =$()}} | format-list

যা আমাকে মান অর্ধেক দেয়

caption    : C:
brand      :
format     :
volumeName : SSD

caption    : D:
brand      :
format     :
volumeName : Disk D

caption    : E:
brand      :
format     :
volumeName : Disk e

caption    : F:
brand      :
format     :
volumeName :

আপনি আগে কি আছে %?
EBGreen

@ ইবি গ্রীন কিছুই না। শুধু আরেকটি কমান্ড ছিল wmic logicaldisk... কিন্তু আমি এটি মুছে ফেললাম, যেহেতু আমি এটি থেকে ফলাফলগুলি কীভাবে পেতে এবং বস্তুতে ঢুকতে পারি তা জানি না, তাই আমি বস্তুর বৈশিষ্ট্যগুলিতে ঠিক প্রতিটি কমান্ড কার্যকর করি।
Un1

ওয়েল, % জন্য উদীয়মান হয় forEach-Object কমান্ড যাতে আপনি ব্যাট বন্ধ ঠিক silly ডান থেকে আপনি এটি পুনরাবৃত্তি একটি সংগ্রহ পাস করা হয় না। আপনার প্রথম পদক্ষেপটি এমন কিছু করা উচিত যা আপনার প্রয়োজনীয় সংগ্রহটি তৈরি করবে। আমি সুপারিশ করেছিলাম Get-WMIObject Win32_LogicalDisk |
EBGreen

@EBGreen ধন্যবাদ, আমি চেষ্টা করেছিলাম, এবং এটি কাজ করে, কিন্তু এখন আমি কেবল মানগুলি পেতে পারি Win32_LogicalDisk এবং অন্যান্য 2 বৈশিষ্ট্য খালি। আপনি কিভাবে অন্য 2 পূরণ করতে জানেন? যারা মান বলা ফাংশন থেকে আসা diskdrive যখন প্রথম 2 থেকে হয় logicaldisk
Un1

আচ্ছা, আপনাকে ব্যবহার করতে হবে Get-WMIObject Win32_DiskDrive আপনি কিছু ফ্যাশন দুই লিঙ্ক করতে হবে। এছাড়াও সচেতন থাকুন যে Win32_LogicalDisk নেটওয়ার্ক ম্যাপড ড্রাইভগুলির পাশাপাশি শারীরিক ড্রাইভগুলির জন্য তথ্য পাবে এবং এটি যে কোনও ড্রাইভের সাথে শারীরিকভাবে বসবাসকারী সার্ভারের অনুসন্ধান ছাড়াই Win32_DiskDrive তথ্য পেতে কোন উপায় নেই।
EBGreen

উত্তর:


1

এখানে ডিস্ক পার্টিশনের সাহায্যে ভলিউমের সাথে ডিস্ক সংযোগ করতে পারেন উদাহরণস্বরূপ কাজ করছে। ব্যাপারটি যে ভলিউম সরাসরি ডিস্কের সাথে সংযুক্ত নয়, তবে শুধুমাত্র পার্টিশনগুলির মাধ্যমে

Get-WmiObject Win32_DiskDrive | 
Select-Object DeviceID, Model, MediaType |
ForEach-Object { 
    $o = $_
    Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskDrive.DeviceID=`"$($_.DeviceID.replace('\','\\'))`"} WHERE AssocClass = Win32_DiskDriveToDiskPartition" |
    Select-Object @{ N='Model'; E={$o.Model} }, 
                  @{ N='MediaType'; E={$o.MediaType} }, 
                  DeviceID
} |
ForEach-Object {
    $o2 = $_
    Get-WmiObject -Query "ASSOCIATORS OF {Win32_DiskPartition.DeviceID=`"$($_.DeviceID)`"} WHERE AssocClass = Win32_LogicalDiskToPartition" |
    Select-Object @{ N='Letter'; E={$_.Name} }, 
                  VolumeName, 
                  @{ N='MediaType'; E={$o2.MediaType} }, 
                  @{ N='Model'; E={$o2.Model} }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.