|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Узнать, MBR или GPT? |
|
CMD/BAT - [решено] Узнать, MBR или GPT?
|
Старожил Сообщения: 148 |
Профиль | Сайт | Отправить PM | Цитировать Нужно получить данные, какой формат имеет диск С, MBR или GPT и исходя из этой инфы задать флаговую переменную как 0 или 1.
|
|
Отправлено: 19:10, 24-04-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 11:51, 25-04-2013 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
(*.*) Сообщения: 36553
|
Профиль | Сайт | Отправить PM | Цитировать powershell.exe можно вызвать из SetupComplete
|
------- Отправлено: 13:17, 25-04-2013 | #12 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 15:02, 25-04-2013 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата m0nkrus:
$sComputerName = "." If((Get-WmiObject -ComputerName $sComputerName -Query "ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='$((Get-WmiObject -ComputerName $sComputerName -Query "SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '$((Get-WmiObject -ComputerName $sComputerName -Query "SELECT * FROM Win32_OperatingSystem").SystemDrive)'").DeviceID)'} WHERE ResultClass = Win32_DiskPartition").Type.StartsWith("GPT")) { Exit 0 } Else { Exit 1 } P.S. Для верности, конечно, корректнее будет брать не 0 и 1, а какие-либо большие величины, заведомо превышающие те, которые может возвращать сам powershell.exe (например, в случае ошибок). |
|
Отправлено: 15:22, 25-04-2013 | #14 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska, спасибо, потестирую.
|
Отправлено: 15:29, 25-04-2013 | #15 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska, так, что-то я уперся...
Я так понимаю, в прошлом вашем посте первое - это скрипт для PowerShell, который должен быть помещен в файл БезИмени1.ps1, так? Второе - cmd-файл, который и обращается к скрипту PowerShell и получает от него результат, так? Так вот, не работает. Если оставить расширение ps1, то cmd-шник просто открывает ps1 блокнотом. А если расширение заменить на пауэршелловское psc1, то cmd просто вылетает на этой команде. Тот же эффект при замене строки .\БезИмени1.ps1 на PowerShell -PSConsoleFile БезИмени1.psс1 Что я делаю не так? У меня, между тем, разработка скрипта на основе diskpart вышла на финишную прямую. Вот до чего я дошел: CD /d %~dp0 ECHO LIST DISK | DISKPART | FINDSTR /r /c:"\*$" > disks.txt FOR /f "tokens=2" %%i IN (disks.txt) DO ECHO select disk %%i >> diskpart.txt && ECHO detail disk >> diskpart.txt DISKPART /s diskpart.txt | FINDSTR /e "Boot Загрузоч" IF ERRORLEVEL 1 ( ECHO Загрузочный том размещен на MBR-разделе ) ELSE ( ECHO Загрузочный том размещен на GPT-разделе ) |
Последний раз редактировалось m0nkrus, 27-04-2013 в 23:07. Отправлено: 20:58, 25-04-2013 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата m0nkrus:
Цитата m0nkrus:
Стоп. У Вас логика с errorlevel — мне не понятная. Словами опишите. |
||
Последний раз редактировалось Iska, 25-04-2013 в 23:36. Отправлено: 23:25, 25-04-2013 | #17 |
Старожил Сообщения: 148
|
Профиль | Сайт | Отправить PM | Цитировать Iska, с PowerShell посмотрю позже.
Логика с errorlevel простая: если в файле найдена ключевая строка, информирующая, что на ней размещен загрузочный диск (он в системе один), то ошибки нет и это GPT, если такой строки ни на одном из GTP-дисков не обнаружено, то, и поиск не дал результата - ошибка - значит по остаточному признаку загрузочным диском считать MBR. |
Отправлено: 10:11, 26-04-2013 | #18 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать m0nkrus, спасибо, теперь ясно.
Цитата m0nkrus:
|
|
Отправлено: 10:56, 26-04-2013 | #19 |
Пользователь Сообщения: 92
|
Профиль | Отправить PM | Цитировать m0nkrus, на тему оптимизации: логично было бы вместо detail disk использовать uniqueid disk, и если ID содержит "{" - то диск имеет GUID, и следовательно GPT.
@echo off CD /d %~dp0 for /f "tokens=2" %%I IN ('Echo List Disk ^| Diskpart ^| Findstr /e "Boot Загрузоч"') do echo Select Disk ^%%I > diskpart.txt && echo uniqueid disk >> diskpart.txt for /f "tokens=*" %%J IN ('Diskpart /s diskpart.txt ^| find "{"') DO ( if errorlevel==0 ( echo Загрузочный диск GPT Set Sys=GPT ) else ( echo Загрузочный диск MBR Set Sys=MBR ) ) pause |
Последний раз редактировалось Ксеноинженер, 26-04-2013 в 20:06. Отправлено: 19:52, 26-04-2013 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
HDD - Как разбить HDD диск: MBR или GPT ? | jolo | Накопители (SSD, HDD, USB Flash) | 22 | 09-12-2014 04:46 | |
Разное - GPT в MBR без потери данных | V1P3RS | Microsoft Windows 7 | 13 | 02-04-2014 03:09 | |
Разное - GPT в MBR и нерабочий WiFi | pavel.trice@vk | Microsoft Windows 7 | 1 | 20-01-2013 13:33 | |
Установка - [решено] Установка Windows 7 на SSD с MBR-разметкой (требует GPT) | AtlASS | Microsoft Windows 7 | 14 | 14-11-2012 06:31 | |
HDD - [решено] Восcтановить MBR и/или информацию.. | Dick | Накопители (SSD, HDD, USB Flash) | 17 | 27-07-2012 18:33 |
|