システムで使用可能なすべてのドライブを反復処理するスクリプトを作成し、そのドライブで何かを行う必要があります。コードは、PSバージョン2.0〜4.0をサポートする必要があります。問題は、ドライブのリストを取得すると、以下に示すように、PSバージョン2.0と4.0の間で異なるタイプが戻ってくるということです。ここパワーシェルのバージョン間で同じクエリの異なるデータ型
$PSVersionTable
$drives = Get-WmiObject -class Win32_LogicalDisk -Filter "DriveType=3" | select Name
'Type = ' + $drives.GetType().FullName
Foreach($drive in $drives)
{
#some logic
}
はPS版で出力された2.0
名前値
---- ----- CLRVersion 2.0.50727.5485
BuildVersion 6.1.7601.17514
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleバージョン{1.0、2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
タイプこれは私がPSバージョン3.0以上に得るものであるSystem.Management.Automation.PSCustomObject
あります。
名前値
---- ----- PSVersion 4.0
WSManStackVersion 3.0
SerializationVersion 1.1.0.1
CLRVersion 4.0.30319.42000
BuildVersion 6.3.9600.16394
PSCompatibleVersions {1.0、2.0 、3.0、4.0}
PSRemotingProtocolVersion 2.2
タイプはのSystem.Object []
どのようにしても、一つだけがありますので[]ので、私のコードは一貫