Получить букву диска из идентификатора тома

#powershell

Вопрос:

Я хочу использовать букву диска вместо идентификатора тома, как показано ниже. Как я могу это сделать ?

Спасибо,

Мой вывод :

 VolumeName                                                  OriginatingMachine  InstallDate
\?Volume{3c0a6eed-1b4c-4e90-a25b-8af1af46e368}           app01.contoso.com   4/13/2021 6:03:34 PM
\?Volume{de5c18ac-56e1-4efa-afb4-abaf476a99a9}           app01.contoso.com   4/13/2021 6:03:34 PM
 

Мой желаемый результат :

 VolumeName  OriginatingMachine  InstallDate
E:          app01.contoso.com   4/13/2021 6:03:34 PM
X:          app01.contoso.com   4/13/2021 6:03:34 PM
 

Команда:

 Get-CimInstance Win32_ShadowCopy | Where InstallDate -lt ([datetime]::Now.AddDays(-5)) | Select-Object VolumeName,OriginatingMachine,InstallDate
 

Вывод Get-CimInstance Win32_ShadowCopy :

 Caption            :
Description        :
InstallDate        : 9/17/2021 9:22:06 PM
Name               :
Status             :
ClientAccessible   : False
Count              : 11
DeviceObject       : \?GLOBALROOTDeviceHarddiskVolumeShadowCopy1234
Differential       : True
ExposedLocally     : False
ExposedName        :
ExposedPath        :
ExposedRemotely    : False
HardwareAssisted   : False
ID                 : {3C8DAB36-F083-4C68-84BA-E339B8A18AF3}
Imported           : False
NoAutoRelease      : True
NotSurfaced        : False
NoWriters          : False
OriginatingMachine : app01.contoso.com
Persistent         : True
Plex               : False
ProviderID         : {B5946137-7B9F-4925-AF80-51ABD60B20D5}
ServiceMachine     : app01.contoso.com
SetID              : {D3D15CE2-9FFC-4A22-B03C-77D7FCB7D40E}
State              : 12
Transportable      : False
VolumeName         : \?Volume{85e62cfa-2e9c-4a46-af5a-f0748acd60b6}
PSComputerName     :
 

Комментарии:

1. Можете ли вы попробовать получить доступ DeviceObject ?. То есть, Select-Object DeviceObject,OriginatingMachine,InstallDate

2. Я хочу использовать букву диска вместо идентификатора тома, как показано ниже. не объект устройства. Я загрузил образец вывода Get-CimInstance Win32_ShadowCopy :

3. Если вам это просто нужно для локальной машины, вы можете использовать Get-Volume -UniqueID значение VolumeName свойства из вывода Win32_ShadowCopy.

Ответ №1:

Win32_ShadowCopy Команда возвращает Win32_ShadowCopy объекты, которые имеют ряд полей, описанных здесь.

Некоторые из полей, представленных в ShadowCopy, совпадают с другими классами WMI, которые содержат информацию о буквах дисков, а именно с VolumeName полем. Это поле также присутствует как в ShadowCopy Win32_Volume классе и, последний из которых обладает нужным нам свойством буквы диска!

Все, что нам нужно сделать, это просмотреть все теневые копии, затем просмотреть все тома на компьютере, а затем мы можем просмотреть копии, чтобы найти соответствующие тома. Если у вас действительно сложная логика монтажа, вам нужно будет добавить некоторую дополнительную логику, хотя бы в этом foreach разделе.

Поэтому мы бы сделали небольшую быструю функцию для выполнения этого поиска для нас, которая выглядела бы так:

 function Get-Win32ShadowVolumeDiskInfo{
    $shadowCopies = Get-CimInstance Win32_ShadowCopy
    $volumes = Get-CimInstance Win32_Volume
    $returnObject = @()

    foreach ($copy in $shadowCopies){
        $matchingVolume = $volumes | Where DeviceID -eq $copy.VolumeName
        $returnObject  = [PSCustomObject]@{
            VolumeName=$matchingVolume.Name;
            OriginatingMachine = $copy.OriginatingMachine;
            InstallDate = $copy.InstallDate}
    }

    $returnObject
}


 

Комментарии:

1. спасибо, кстати, как мы можем добавить «Где установить дату-lt ([дата-время]::Сейчас. Добавочные дни(-5)) » ?

2. Ты бы руководил этим: Get-Win32ShadowVolumeDiskInfo | Where InstallDate -lt ([datetime]::Now.AddDays(-5))

3. Я бы предпочел ([datetime]::Now.AddDays(-5).Date) установить эту контрольную дату на полночь. Кроме того, пожалуйста , не делайте $returnObject = [PSCustomObject]@{..} этого, вместо этого просто попросите цикл просто вывести [PSCustomObject]. Кроме этого, 1

4. Здесь я тоже должен согласиться с @Тео. 1 также!

5. Хорошие предложения! Спасибо!