Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   определение GUID загрузочного диска (http://forum.oszone.net/showthread.php?t=315263)

mcintosh55 26-05-2016 17:31 2637883

определение GUID загрузочного диска
 
привет всем!!! Есть вот такой кусок кода
Код:

(gwmi win32_volume -Filter "SystemVolume='true'").Caption
он определяет GUID загрузочного диска, но не на всех компьютера определятся (раздел точно есть!!!) в сети поэтому делает бэкап только системного диска может есть еще какой вариант определения.

Iska 26-05-2016 18:47 2637899

Цитата:

Цитата mcintosh55
но не на всех компьютера определятся »

Проверьте, эти «не все компьютеры» случайно не XP? Также, судя по упоминаниям, под Windows Server 2003 отсутствует свойство «SystemVolume».

Цитата:

Цитата mcintosh55
может есть еще какой вариант определения. »

«mountvol.exe», например.

Ubiquiti 26-05-2016 19:03 2637902

не только на 7ке и 8,1 тестил и на некоторых ни чего не выводит (xp уже года три не используем)

Kazun 26-05-2016 19:04 2637903

SystemVolume != BootVolume

https://support.microsoft.com/en-us/kb/314470

System volume
The system volume refers to the disk volume that contains the hardware-specific files that are needed to start Windows, such as Ntldr, Boot.ini, and Ntdetect.com.

Boot volume
The boot volume refers to the disk volume that contains the Windows operating system files and the supporting files. By default, the Windows operating system files are in the WINDOWS folder, and the supporting files are in the WINDOWS\System32 folder.

mcintosh55 26-05-2016 19:29 2637909

Цитата:

Цитата Iska
«mountvol.exe», например. »

Это утилиту Я знаю но как Я определю загрузочный раздел если он буквы не имеет GUID диска C: без проблем определяет

greg zakharov 26-05-2016 19:56 2637918

Цитата:

Цитата mcintosh55
Я определю загрузочный раздел если он буквы не имеет GUID диска C: без проблем определяет

Это равносильно "кто к нам с чем зачем, тот того и от того": Вы не могли бы выражать суть яснее? Что же до продолжения темы... В сторону diskpart смотрели? Ну, а если diskpart не устраивает, то можно и могучим шелом:
Код:

$$ = -join ($d = Get-ItemProperty HKLM:\SYSTEM\MountedDevices).(
  $bd = "\DosDevices\$(
    [Environment]::SystemDirectory.Substring(0, 2)
  )"
)

$guid = ($d.PSObject.Properties | Where-Object {
  (-join $_.Value) -eq $$ -and $_.Name -ne $bd
}).Name

$guid.Substring(($$ = $guid.IndexOf('{')), $guid.Length - $$)


Foreigner 26-05-2016 20:03 2637920

Батник:
Код:

@echo off

for /f "tokens=2 delims={}" %%i in (' "wmic volume where bootvolume="TRUE" get deviceid" ') do echo %%i

Powershell
Код:

(gwmi win32_volume | where { $_.bootvolume } | select -expand deviceid) -replace '.*{(.+)}.*','$1'

mcintosh55 26-05-2016 20:14 2637922

Народ всем спасибо за помощь, ответа Я не получил у меня уже есть код
Код:

(gwmi win32_volume -Filter "SystemVolume='true'").Caption
на powershell который на в начале темы. А суть вопроса в том что код на некоторых компьютерах пустое значение выдает (ОС W7 используется )

Код:

chcp 1251
<# BSD 1.2
скрипт для создания образа системы средствами windows утилита wbadmin.exe
Дата создания: 01.10.2015
Дата изменения: 10.04.22016
#>
#Куда сохраняем
$OutBackup = 'E:'
#системный диск
$Windows = $env:SystemDrive
#статуc службы теневое копирование тома и служба резервного копирования
$status_vss = Get-Service vss | select status
$status_wbengine = Get-Service wbengine | select status
#проверяем запущены службы
if ($status_vss.Status -eq "Stopped")
    {
        Start-Service vss    #если не запущена запускаем
    }
if ($status_wbengine.Status -eq "Stopped")
    {
        Start-Service wbengine    #если не запущена запускаем
    }
#Делает проверку есть ли загрузочный файл на диске с Windows
$TP = Test-Path $env:SystemDrive\BOOTSECT.BAK
#если нету на системном диске  загрузочных файлов то узнает id загрузочного диска
If ($TP -eq $False)
{
$BD = (gwmi win32_volume -Filter "SystemVolume='true'").Caption
# под windows 10 не понимает wbadmin start backup -backupTarget:$($OutBackup) -include:$($BD), $($Windows) -vssFull -quiet
# верхняя строка w7 и w8 все ок
wbadmin start backup -backupTarget:$($OutBackup) -include:$($BD) -vssFull -quiet
wbadmin start backup -backupTarget:$($OutBackup) -include:$($Windows) -vssFull -quiet
}
else
{
wbadmin start backup -backupTarget:$($OutBackup) -include:$($Windows) -vssFull -quiet
}

#удаляем резервные копия
WBADMIN DELETE BACKUP -keepVersions:3 -quiet


Foreigner 26-05-2016 20:21 2637926

Цитата:

Цитата mcintosh55
ответа Я не получил »

Вам вариантов дали, только пользуйся.

mcintosh55 26-05-2016 20:22 2637927

не работает пустое поле выдает ((((

greg zakharov 26-05-2016 20:27 2637928

Цитата:

Цитата mcintosh55
не работает пустое поле выдает

То, что Вы не в ладах с русским (особенно по части пунктуации), ясно, но чтобы в здравом уме заявлять, дескать, ни одно из предложенных выше решений не работает, как-то однако.

Iska 26-05-2016 22:17 2637949

mcintosh55, никто не знает, что у Вас там — в «.Caption» ли у Вас не GUID (обратите, кстати, внимание на приведённый выше код коллеги Foreigner: правильно — использовать свойство «.DeviceID», а вовсе не «.Caption»), отсутствует свойство «.SystemVolume» и посему возвращается пустое множество, возвращается коллекция из нескольких экземпляров объектов «Win32_Volume» вместо одного…

Если сами не хотите/не можете разобраться, начните с того, что как минимум соберите по всем проблемным машинам статистику:
Код:

gwmi win32_volume -Property DriveLetter, Caption, DeviceID, SystemVolume, BootVolume
и выложите сюда. И разберитесь таки, что будет правильным — System volume или Boot volume. А также с русским языком.

Ubiquiti 27-05-2016 11:16 2638031

написал скрипт которые сканирует сеть, собрал статистику есть пару 5 машин у которых deviceid пустой. Вскрытия показала, что жесткие диски подключены к интерфейсу sata3, а тот в свою очередь работает на левом контроллере. Путем просмотра манула по матери выяснил какие порты sata не относятся к этому контроллеру, переключил на них hdd. Скрипт начал правильно определять guid системного раздела.


Время: 09:10.

Время: 09:10.
© OSzone.net 2001-