ディスク情報の取得に誰かが助けてくれますか?私は3枚のディスクを持っていますが、メンバーを追加して情報を得ることができません。名前を持つメンバーとしてCannont Add-Memberが存在する
私はエラーを取得する:
"Add-Member : Cannot add a member with the name "Disks" because a member with that name already exists. If you want to overwrite the member anyway, use the Force parameter to overwrite it."
は、これは私のコードです:
function Get-Inven {
param([string[]]$computername)
#Import-Module ActiveDirectory
foreach ($computer in $computername) {
$disks = Get-WmiObject -Class Win32_LogicalDisk -ComputerName $computer -Filter 'DriveType=3'
$os = Get-WmiObject -Class Win32_OperatingSystem -ComputerName $computer
#$comp = Get-ADComputer -Filter { cn=$computer }
$info = @{
'ComputerName'=$computer;
'OSVersion'=$os.caption;
'DnsHostName'=$comp.dnshostname
}
$obj = New-Object -TypeName PSObject -Property $info
foreach ($disk in $disks) {
$info = @{
'DriveLetter'=$disk.deviceID;
'FreeSpace'=($disk.freespace/1MB -as [int])
}
$diskobj = New-Object -TypeName PSObject -Property $Info
$obj | Add-Member -MemberType NoteProperty -Name Disks -Value $diskobj
}
}
}
'-Force'パラメータは、Disksプロパティの値を上書きします。また、' -PassThru'パラメータが毎回オブジェクトを発行しても、 'Add-Member'は引き続き同じオブジェクトを参照しています。複数のドライブを持つコンピュータでこれを実行すると、単一のドライブに対して同じ情報を持つ複数のオブジェクトが取得されます。ドライブC:、D:およびE:を持つ私のマシンでは、ドライブE:の情報を持つ3つのオブジェクトがそれぞれ得られます。 – Rynant
私はあなたがエラーを持っているので、私はあなたがNameプロパティをオーバーライドすることができることを示したいと思ったので、-Forceについてコメントしていました。とにかく、コード上に2cを追加してスレッドを更新しました。 –
ありがとう@シェイレヴィ、あなたは最高です! :) – PowerShell