Обновление утилиты CheckBootSpeed до версии 2.0 было в немалой степени обусловлено желанием собрать сведения о дефрагментации SSD на ПК с Windows 8. Чтобы понять, есть ли в системе твердотельный накопитель, я на скорую руку добавил в скрипт сбора информации такой фрагмент:
foreach ($d in Get-Partition) {$d.AccessPaths, $d.DiskId, ""}
Один из путей доступа выводилmv букву диска, а его идентификатор позволял определить модель (в крайнем случае, с помощью поисковиков).
C:\ \\?\Volume{f2d14198-3e1e-11e3-824e-806e6f6e6963}\ \\?\scsi#disk&ven_samsung&prod_ssd_840_pro_seri#4&1a6bca51&0&000000#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
Выглядит результат некрасиво, и я давно хотел доработать скрипт.
Толчком же к этому стала подготовка серии материалов к публикации – мне снова нужна информация о ваших ПК! :) Поэтому сегодня я сначала покажу разные командлеты PowerShell и общие приемы работы с этой консолью, которые я использовал для предлагаемого вам скрипта. Но прежде я хочу сделать небольшое отступление.
Созданный мной скрипт решал поставленную задачу и отлично работал. Но я все же слабо владею PowerShell, и поэтому попросил посмотреть свой код эксперта по этому скриптовому языку – Вадимса Поданса. Он внес в него ряд изменений, после которых я бы сформулировал разницу между пользователем и экспертом так: оба могут решить поставленную задачу, но эксперт сделает это грамотнее, надежнее и быстрее.
Ниже вы увидите несколько подтверждений этому тезису. Теперь к делу!
[+] Сегодня в программе
- Информация о дисках и разделах
- Выбор отображаемых свойств
- Перебор объектов
- Изменение заголовков столбцов таблицы
- Преобразование и подсчет свойств (калькулятор)
- Классы WMI
- Подсчет объектов
- Цикл
- Определение версии операционной системы
- Определение изготовителя ПК
- Выполнение скриптов PowerShell
- Нужна ваша помощь!
Информация о дисках и разделах
Командлеты: Get-PhysicalDisk, Get-Disk, Get-Partition
Эти командлеты модуля Storage работают только в Windows 8 и более новых ОС (решение для Windows 7 будет ниже в статье). Их названия говорят сами за себя, но я все же считаю нужным напомнить общую информацию о дисках и разделах, а также прояснить некоторые моменты.
- Get-PhysicalDisk позволяет получить информацию о физических дисках, т.е. характеристики устройств.
- Get-Disk выводит сведения о дисках на логическом уровне с точки зрения операционной системы.
- Get-Partition отображает информацию о разделах на всех дисках.
Разницу между первыми двумя командлетами проще всего объяснить на примере моего ПК. У меня два внешних USB-диска объединены в дисковое пространство. Get-PhysicalDisk показывает два физических диска, а Get-Disk – один (как и файловый менеджер). На рисунке ниже эти диски выделены желтым.
Информации вроде много, no подана она не очень удачно. Давайте посмотрим, что можно улучшить:
- Убрать лишние сведения и добавить нужные (тип накопителя и разметки дисков, наличие загрузочных файлов на разделе).
- Изменить названия заголовков таблицы и ширину столбцов (например, у номеров и букв разделов слишком широкие столбцы).
- Отразить четкую связь между диском и его разделами.
Дальше я буду разбирать именно эти три командлета, а владельцы Windows 7 могут попробовать те же приемы на dir.
Выбор отображаемых свойств
Командлеты: Format-List, Format-Table и Sort-Object
Выполнение любого командлета без параметров позволяет увидеть лишь некоторые свойства. Их полный список можно вывести, перенаправив вывод по конвейеру в командлет Format-List.
Get-PhysicalDisk | fl *
Любое свойство можно вывести в таблице с помощью командлета Format-Table, выровняв столбцы по ширине содержимого. Давайте отобразим нужное и уберем лишнее:
Get-PhysicalDisk | ft -AutoSize DeviceId,Model,MediaType,BusType,Size
В PowerShell Windows 8 обнаружилось решение задачи, которое я безуспешно искал со времен Windows 7 для утилиты CheckBootSpeed. Теперь с помощью командлета Get-PhysicalDisk можно определить тип накопителя – SSD или HDD!
DeviceId Model MediaType BusType Size -------- ----- --------- ------- ---- 2 TOSHIBA MK7559GSXP HDD SATA 750156374016 0 Samsung SSD 840 PRO Series SSD SATA 256060514304 1 KINGSTON SH103S3120G SSD SATA 120034123776 4 Transcend UnSpecified USB 319169757184 3 SNA-DC/U UnSpecified USB 249376538624
В комментариях Александр Сентюрин подметил, что диски идут не по порядку, и посоветовал отсортировать их. Это делается с помощью командлета Sort-Object — после сортировки по свойству DeviceID диски выстроятся в таблице начиная с нулевого.
Get-PhysicalDisk | sort DeviceId | ft -AutoSize DeviceId,Model,MediaType,BusType,Size
Я не случайно вывел в результатах BusType — тип шины! Основным диском в моем планшете служит eMMC SSD, и по сути – это карта памяти (вторая вставлена в слот для увеличения дискового пространства).
DeviceId Model MediaType BusType Size -------- ----- --------- ------- ---- 0 MBG4GA SSD SD 31226593280 1 SD SSD SD 31611420672
Я уже писал об этом в обзоре платформы Clover Trail и даже показывал там, что диспетчер задач Windows 8 в курсе типа накопителя. Любопытно, что в Windows 8.1 он уже показывает модель диска, что более конкретно, но в то же время скрывает истинную натуру SSD. PowerShell же срывает покровы :)
Кстати, размер дисков получился в байтах, но к этому я вернусь чуть позже. Аналогичные команды для Get-Disk и Get-Partition попробуйте самостоятельно или смотрите, какие свойства выбрал я.
Перебор объектов
Командлет: ForEach-Object
В данном случае объекты — это диски. Задача формулируется примерно так: отобразить сведения о диске, затем информацию о его разделах, и так для каждого диска.
Get-Disk | ForEach-Object { $_ | Format-Table -AutoSize Number,FriendlyName,Size,PartitionStyle Get-Partition -DiskNumber $_.number | Format-Table -AutoSize ` PartitionNumber,DriveLetter,Size,Offset,IsBoot,IsSystem,Type }
Этот код собирает информацию о всех дисках с помощью Get-Disk и перенаправляет ее командлету ForEach-Object для перебора. Для текущего объекта $_ выводится информация о дисках, а затем — о разделах с помощью Disk-Partition. У него параметр -Number принимает свойство $_.Number, т.е. номер текущего диска.
Number FriendlyName Size PartitionStyle ------ ------------ ---- -------------- 0 Samsung SSD 840 PRO Series 256060514304 MBR PartitionNumber DriveLetter Size Offset IsBoot IsSystem Type --------------- ----------- ---- ------ ------ -------- ---- 1 367001600 1048576 False True IFS 2 C 230084837376 368050176 True False IFS
Результат уже похож на правду, но надо сделать понятные заголовки столбцов!
Изменение заголовков столбцов таблицы
Хеш-таблицы | Выражения
Понимая, что цели можно достичь разными способами, я сразу попросил Вадимса подсказать самый короткий. Он навел меня на хеш-таблицы и выражения. В хеш-таблицу заносится пара «свойство – значение», но вместо стандартного имени свойства подставляется выражение, в котором задается нужное имя.
Например, переименование столбцов для первых трех свойств диска делается так:
Get-Disk -Number 0 | ft –AutoSize ` @{Expression={$_.Number};Label="Диск"}, ` @{Expression={$_.FriendlyName};Label="Название"}, ` @{Expression={$_.Size};Label="Размер"}
Здесь $_ обозначает текущий объект, т.е. диск с номером 0, свойства которого мы разбираем. Поэтому $_.Number выводит его номер. Аналогично можно поступить и с другими столбцами, но я остановлюсь на размере.
Преобразование и подсчет свойств (калькулятор)
Тип данных: [int] | Оператор: /
Без параметров командлет Get-Disk отображает столбец Total Size и размер в гигабайтах, но в списке свойств есть только Size в байтах. Дело в том, что PowerShell динамически интерпретирует размер в зависимости от величины, следуя предустановленным правилам форматирования. Можно в них поковыряться, но я покажу, как срезать путь :)
PowerShell может работать калькулятором, причем вполне интеллектуальным. Допустим, переменная $a задает размер в байтах. Это значение можно поделить на 1GB и округлить до целого с помощью типа данных [int]. В примере ниже результатом будет 128.
$a=137438956596 [int]($a/1gb)
Это можно использовать в выражении, указав единицу измерения в столбце. Полный фрагмент скрипта:
Get-Disk -Number 0 | ft –AutoSize ` @{Expression={$_.Number};Label="Диск"}, ` @{Expression={$_.FriendlyName};Label="Название"}, ` @{Expression = {[int]($_.Size/1GB)}; Label = "Размер (GB)"}, @{Expression={$_.PartitionStyle};Label="Разметка"}
Результат выглядит так:
Диск Название Размер (GB) Разметка ---- -------- ----------- -------- 0 Samsung SSD 840 PRO Series 238 MBR
Аналогично можно преобразовать таблицу командлета Get-Partition.
Показанные выше командлеты работают в Windows 8 и более новых ОС, но надо решить задачу и для Windows 7.
Классы WMI
Командлет: Get-WmiObject | Классы Win32: Win32_DiskDrive и Win32_DiskPartition
В Windows 7 нет таких удобных командлетов, как в Windows 8, поэтому точно такого же представления информации не достичь. Но с помощью командлета Get-WmiObject можно извлечь большинство сведений из классов WMI, и в первую очередь нас интересуют указанные в подзаголовке.
Посмотреть свойства каждого класса вы можете самостоятельно. К сожалению, они не позволяют сопоставить разделы с буквами дисков. Поэтому буквы придется выводить отдельно с помощью класса Win32_Volume и ориентироваться на размер томов.
Давайте посмотрим, как это работает.
Подсчет объектов
Командлет: Measure-Object
Для начала нужно определить число дисков в системе, перенаправив информацию о дисках командлету Measure-Object.
(Get-WmiObject Win32_DiskDrive | Measure-Object).count-1
Тонкость в том, что нумерация дисков начинается с нуля, поэтому для перебора нужно отнять от их числа единицу. Чуть ниже вы увидите еще один способ.
Цикл
Командлет: For
Число дисков можно задать в цикле перебора с помощью for, и у меня получилась такая вполне рабочая конструкция.
$Drives = Get-WmiObject Win32_DiskDrive $DiskInfo = for ($i = 0; $i -le (($Drives | Measure-Object).count-1); $i++) { $Drives | Where-Object {$_.Index -eq $i} | ft -AutoSize Index,Caption,Size Get-WmiObject Win32_DiskPartition | Where-Object {$_.DiskIndex -eq $i} | ft -AutoSize ` Index,Size,StartingOffset,BootPartition,Type } $DiskInfo
Номер диска у классов Win32_DiskDrive и Win32_DiskPartition обозначается разными свойствами — Index и DiskIndex соответственно. А остальное читается легко. Сначала выбирается диск 0 и выводится информация по нему, а затем – по его разделам.
Увидев этот код Вадимс сначала посоветовал работать с классом напрямую, чтобы использовать фильтр вместо Where-Object.
Get-WmiObject Win32_DiskPartition -Filter "DiskIndex = '$i'"
Этот подход надежнее и позволяет избежать лишнего этапа на конвейере. Но он работает только при обращении к классу напрямую, как в случае с разделами, но не проходит, если класс уже помещен в переменную ($DiskDrive). Можно избавиться от нее, но тогда получается два запроса к Win32_DiskDrive, что неэффективно с точки зрения производительности.
В результате Вадимс показал мне решение, вокруг да около которого я очень долго ходил. Он элегантно поместил класс WMI в массив (первая строка) и воспользовался его свойством Count для подсчета дисков.
$DiskDrive = @(Get-WmiObject Win32_DiskDrive) $DiskInfo = for ($index = 0; $index -lt $DiskDrive.Count; $index++) { $DiskDrive | Where-Object {$_.index -eq $index} | Format-Table -AutoSize ` Index,Caption,Size Get-WmiObject Win32_DiskPartition -Filter "DiskIndex = '$index'" | Format-Table -AutoSize ` PartitionNumber,Size,StartingOffset,BootPartition,Type } $DiskInfo
Определение версии операционной системы
Класс .NET: [environment] | Тип данных: [double]
Windows 7 и Windows 8 – это маркетинговые версии ОС, а «техническую» можно посмотреть, набрав в консоли winver.
В PowerShell ее можно извлечь массой способов, и самый распространенный:
(Get-WmiObject Win32_OperatingSystem).Version
Задача сводится к превращению текстовой строки 6.3.9600 в дробное число вида 6.3. Я понятия не имел, как это сделать, и нагуглил решение, показывать которое я не буду :) Да, оно работало, но Вадимс посоветовал не использовать WMI для таких задач, а обратиться к классу Environment в .NET Framework, на котором построен PowerShell.
[environment]::osversion.Version Major Minor Build Revision ----- ----- ----- -------- 6 3 9600 0
Вадимс объяснил, что такой подход значительно ускоряет запрос, потому что при запуске PowerShell эти классы уже загружены. В подтверждение тезиса он сравнил время выполнения команд с помощью командлета Measure-Command. Получилось в сто раз быстрее!
PS C:\> 1..5 | %{(measure-command {(Get-WmiObject Win32_OperatingSystem).OSVersion}).TotalMilliseconds} 45,5833 35,9619 25,5198 35,6166 16,0488 PS C:\> 1..5 | %{(measure-command {[environment]::osversion.version}).TotalMilliseconds} 0,7387 0,0717 0,0675 0,064 0,0354
В десятичную дробь с одним знаком после запятой (6.3) это превращается так:
[double][environment]::osversion.version.tostring(2)
Две цифры отсекаются с помощью tostring, а преобразовать в дробное число помогает тип данных [double].
Определение изготовителя ПК
Командлет: Get-WmiObject | Класс: Win32_ComputerSystem
Наберите в консоли msinfo32. Это, кстати, еще один способ посмотреть версию ОС :)
Эти сведения закладываются в BIOS изготовителем устройства, поэтому YMMV. Они должны быть на планшетах и ноутбуках, которые меня интересуют в первую очередь.
$PC = Get-WmiObject Win32_ComputerSystem if ($PC.Manufacturer.Contains("filled") -or $PC.Manufacturer.Contains("manufacturer")) { $PCInfo = "Модель ПК не определена" } else { $PCInfo = $PC.manufacturer,$PC.model } $PCInfo
Выполнение скриптов PowerShell
Если «батник» запустит даже самый неопытный пользователь, то с выполнением скриптов PowerShell в Windows все намного строже. Да, можно снять ограничения политики:
Set-ExecutionPolicy Bypass
Но в консоли все равно придется запускать скрипты так:
.\Script.ps1
Однако можно пойти другим путем:
powershell.exe -ExecutionPolicy Bypass -file Script.ps1
Этот способ работает в консоли PowerShell, командной строке, командных файлах, планировщике заданий и т.д. Именно его я задействовал для своего скрипта, который предлагаю вам запустить.
Нужна ваша помощь!
Как я сказал в начале статьи, мне нужно собрать сведения о различных ПК, но не со всех подряд. Необходимо выполнение двух условий:
- Windows была предустановлена на ПК изготовителем. В большинстве случаев — это ноутбук или планшет.
- С основного диска не удалялись служебные разделы. Если вы изменяли разделы с данными – ок. Но если вы удалили, например, раздел с резервным образом или вообще отформатировали диск – информация для меня бесполезна.
Если ваш ПК соответствует этим критериям:
- Скачайте архив и распакуйте его в любую папку.
- Щелкните правой кнопкой мыши на файле start.cmd и выберите Запуск от имени администратора. По окончании работы скрипта результаты сохранятся в той же папке в текстовом файле, который откроется в блокноте.
- Скопируйте весь текст и вставьте в комментарий!
Жду ваших результатов :) Спасибо!
Если у вас есть вопросы по скрипту, я попробую ответить в комментариях. А что вы в последний раз автоматизировали скриптом дома или по работе?
Олег
Microsoft Corporation
Surface with Windows 8 Pro
Майкрософт Windows 8.1 Профессиональная
Vadim Sterkin
Спасибо, Олег. Интересны три момента.
1. LITEONIT LMT-19nmBGA-128G. Предположу, что этот накопитель аналогичен Plextor M5P. На это намекает 19nm (память Toshiba, скорее всего), при этом Liteon делает прошивки контроллеров Marvell для Plextor.
2. Размер раздела EFI (номер 2) — 200MB. При этом сама Microsoft рекомендует 100 или 260.
3. Размер раздела с инструментами WinRE (номер 1) — 1GB. Интересно, что они туда напихали :)
Александр Сентюрин
Спасибо, как всегда четко разложил по полочкам. Люблю людей к тебе на сайт отправлять, проще, чем на пальцах объяснять :)
Вадим, добавлю свои пять копеек: я обычно когда руками что-нибудь у пшелла прошу, между запросом и ft обычно добавляю еще одну трубу, sort. Ему достаточно сказать, по чему сортировать, и сразу вывод приобретает упорядоченный вид.
Например:
get-чегото | sort name | ft name, и так далее.
Vadim Sterkin
Александр, спасибо за примечание. Да, я вот посмотрел сейчас на рез-ты и подумал, что надо было добавить сортировку по номеру диска. С одной стороны — лишний конвейер, но объектов там немного, да и цель все-таки в красивом и понятном выводе. Вечером добавлю :)
Serg
Александр Сентюринё,
Если список большой то сортировать его долго.
Vadims Podāns
Gigabyte Technology Co., Ltd.
EP45T-UD3R
Microsoft Windows Server 2012 R2 Standard
Правда, скрипт выкакал одну ошибку (вполне ожидаемую в данном случае):
Vadim Sterkin
Вадимс, обработку ошибок я не закладывал :) Вообще, была мысль исключить USB-диски, т.к. они не влияют ни на что в конфигурации ПК.
Максим
ASUSTeK COMPUTER INC.
UX51VZA
Майкрософт Windows 8.1 Профессиональная
Vadim Sterkin
Максим, интересный расклад. Похоже, ASUS делает не по-науке немного :) У них раздел EFI (300MB) идет первым, а затем уже раздел с инструментами WinRE (900MB). Microsoft рекомендует делать наоборот.
Sergey Derevyanko
Dell Inc.
Vostro 3700
Microsoft Windows 7 Домашняя базовая
Vadim Sterkin
Сергей, он что, так и шел? А где все служебные разделы-то?
Эдвард
Командлеты, повер шелл, классы — все это хорошо. Только объясните пожалуйста зачем это мне, или кому еще нужно. То есть я сам отправляю информацию о дисковой подсистеме и ее организации кому то, для чего? Для чего это нужно мне? Зачем? Советую более подробно раскрыть эти вопросы, которые наверняка возникнут у многих.
Vadim Sterkin
Эдвард, вообще, я сразу сказал, что конкретные сведения нужны мне — для будущих статей. Вам это не нужно сейчас, а через месяц вам может понадобиться автоматизировать какую-то задачу, и вы сможете воспользоваться приемами, которые я показал. Альтернатива — пойти в форум скриптов на OSZone и создать тему вида «напишите мне батник» :)
Дмитрий
Gigabyte Technology Co., Ltd.
To be filled by O.E.M.
Microsoft Windows 7 Максимальная
Vadim Sterkin
Дмитрий, и что у вас за ПК? Такой расклад был при покупке?
Юрий
ASUSTeK COMPUTER INC.
K56CM
Майкрософт Windows 8.1 для одного языка
Vadim Sterkin
Спасибо, Юрий! Такой же расклад, как выше у другого ASUS.
Maxim
Здравствуйте, Вадим!
Мой ПК не в точности удовлетворяет критериям, которые Вы указали, но я думаю, что мои сведения могут быть Вам интересны.
ОС я перенес с HDD на mSATA SSD. Однако, на HDD я оставил все разделы на своих местах и со своими размерами. После переноса ОС я отформатировал бывший диск C:\ на HDD, теперь это у меня обычный диск с данными (G:\). Все остальные разделы — такие же, как сделал производитель.
LENOVO
IdeaPad U310
Майкрософт Windows 8 Профессиональная с Media Center
Vadim Sterkin
Спасибо, Максим. Да, мне видно по жесткому диску. Непонятно только, почему там два раздела по 1GB. Если #1 (Recovery) д.б. содержит RE, то что на #3 — загадка.
Сергей
Acer
Aspire 5551G
Microsoft Windows 7 Домашняя расширенная
Vadim Sterkin
Спасибо, Сергей. Видимо, на первом разделе образ восстановления (13GB).
Александр Сентюрин
Serg, вы, конечно, правы. Но руками обычно смотришь небольшой объем данных, который сразу в консоли и просматриваешь. Поэтому и использую sort. Если объемы большие — тут лучше в файл, и в любимую программу для анализа.
Григорий
SAMSUNG ELECTRONICS CO., LTD.
300V3A/300V4A/300V5A/200A4B/200A5B
Microsoft Windows 7 Максимальная
Vadim Sterkin
Спасибо, Григорий! Видимо, изготовитель поместил на первый раздел образ восстановления (23GB), но непонятно, почему в устройстве от Samsung стоит накопитель от OCZ. Так и шло сразу?
Григорий
Vadim Sterkin,
Нее, 23ГБ это Linux MInt, а вставил я его после года эксплуатации)
Владимир из Ульяновска
Здравствуйте Вадим!
Решил я проверить свой ноутбук с предустановленной операционной системой Windows 7 Начальная Сборка 7601 вашей программой.
Скачал архив, поместил его в отдельную папку на диск D, в этой же папке его распаковал. Выделил файл start. cmd и запустил его с правами администратора. Но, текстового файла в папке не появилось. Там находится один только текстовый файл — readme. txt с инструкцией по работе с вашей программой. Где его искать?
Всего хорошего!
Vadim Sterkin
Владимир, забейте.
Наталья
По сравнению с результатами у других пользователей, мало данных отчего-то. Seagate — это внешний жёсткий диск, он обычно не вынимается, поэтому тоже попал в отчёт. Первый раздел — скрытый, где ASUS хранит заводские настройки.
ASUSTeK Computer Inc.
K43SD
Microsoft Windows 7 Home Premium
Vadim Sterkin
Наталья, спасибо. Все нормально у вас (в Windows 7 информация иначе подается). Только первый раздел 25GB не очень понятен. Видимо, там резервный образ.
Maxim
Вадим!
Самому тоже стало интересно, что там. Перезагрузил ПК в Paragon и увидел, что:
#1 — WINRE_DRV NTFS
#3 — LRS_ESP FAT32
Глубже анализировать не стал. Для этого надо копировать разделы на свободный носитель и подключать их, сейчас носителя с собой нет.
Vadim Sterkin
Максим, видимо, они вдобавок к разделу EFI 260MB (загрузка) создают еще один раздел EFI для своих нужд.
Дмитрий
Vadim Sterkin,
Покупал комп в магазине с установленным SSD и винтом на 500 ГБ.
Два других докупал уже сам.
Систему переустанавливал с форматированием.
Vadim Sterkin
Дмитрий, так второе условие я же не случайно озвучил…
Василий
Hewlett-Packard
HP Pavilion Sleekbook 15
Майкрософт Windows 8.1 для одного языка
Vadim Sterkin
Спасибо, Василий! Интересно, что нет раздела со средой восстановления (только EFI и MSR). И раздела с резервным образом тоже нет. Не похоже на HP :)
Алексей Г
Как показывает практика — только образ среды восстановления :-)
Кстати, у других этого не нашёл, но у меня HDD от WDC не определяется как жёсткий диск…
1 WDC WD6402AAEX-00Y9A0 UnSpecified SATA 596
Все остальные устройства определились верно (SSD, HDD)
Сразу оговорюсь, ком собирал сам, а OEM.
Vadim Sterkin
Алексей, понятно, что там образ RE. Вопрос в том, реально ли он занимает столько места, и если да — что они туда напихали :)
Ваш диск не то чтобы не определяется, просто он не отдает свойство MediaType, видимо. Попробуйте вывести все свойства для него и посмотреть.
Виктор
Gigabyte Technology Co., Ltd.
M56S-S3
Microsoft Windows 7 Максимальная
MegaVolt
SAMSUNG ELECTRONICS CO., LTD.
RC530/RC730
Microsoft Windows 7 Домашняя базовая
Андрей
Доброй ночи.
Вадим, не знаю будет вам интересно, SSD нет, форматировал только раздел с 7-кой при переустановки на 8 (нервы не выдержали, тормозило)
ASUSTeK COMPUTER INC.
X101CH
Майкрософт Windows 8.1 Профессиональная
Вадим
Уважаемый Вадим!
Я запустил ваш файл. Открылось и быстро закрылось окно cmd.
Ничего при этом не произошло. Тогда я сам открыл cmd с правами администратора, скопировал туда Вашу команду
powershell -ExecutionPolicy Bypass -File %~dp0diskreport.ps1
и нажал Enter. Получил такой ответ (красным шрифтом):
Das Argument «%~dp0diskreport.ps1» für den -File-Parameter ist nicht vorhanden.
Geben Sie als Argument für den -File-Parameter den Pfad zu einer vorhandenen .ps1-Datei an.
Что означает, что аргумента «%~dp0diskreport.ps1» для файлового параметра не существует.
Введите в качестве аргумента путь к имеющемуся .ps1-файлу.
Как мне поступить?
Vadim Sterkin
Введите в качестве аргумента путь к имеющемуся .ps1-файлу.
Алексей
Алексей,
SAMSUNG ELECTRONICS CO., LTD.
R530/R730/R540
Майкрософт Windows 8.1 Профессиональная с Media Center
Vadim Sterkin
Алексей, интересно, что в новом ноутбуке разметка MBR.
Алексей Г
Именно этот девайс не отдаёт) В другой ПК попробовал подключить, драйвер SATA контроллера сменить — также. Wdc косяк)
Насчёт WINRE-образа: обычно там WinPE-среда, и в автозапуске — встроенное средство восстановления. При этом вес образа чуть менее 400 мб в > случаев. Acer & Samsung делали так в последнее время.
Vadim Sterkin
Ну вот и непонятно, зачем им еще 600MB на разделе.
Vitaly Chudovsky
Microsoft
Surface with Windows RT
Vadim Sterkin
Виталий, о, наконец-то первый планшет с RT :) Занятно, что в нем тот же eMMC SSD, что и в Elitepad 900. А раздел EFI 200MB как и на Surface Pro.
ДЮК
Модель ПК не определена
Майкрософт Windows 8 Профессиональная
Vadim Sterkin
И что, ваш ПК шел с такой конфигурацией? Маловероятно, похоже на самосбор.
Кирилл О.
ASUSTeK Computer Inc.
P52F
Microsoft Windows 7 Домашняя базовая
Лёха
LENOVO
20138
Майкрософт Windows 8.1 для одного языка
Александр
ASUSTeK Computer INC.
1215B
Microsoft Windows 7 Начальная
Владимир из Ульяновска
Здравствуйте Вадим!
У Александра такая же операционка, только ноутбук ASUS.А у меня ноутбук SAMSUNG R-430. А отчёт ваша программа не делает. Запускаю с правами админа, а в ответ полная тишина. Ваш файл я поместил в папку отдельную на диск D: Вы можете мне написать- почему у меня не получается отчёта? С уважением Владимир.
Vadim Sterkin
Владимир, я не знаю, особенно на основе приведенной вами инфо. Скрипт предоставляется «как есть», без поддержки. Хотите разобраться самостоятельно? Запускайте его из консоли (инструкции есть в статье), смотрите ошибки и т.д.
Сергей
Sony Corporation
SVT1112M1RS
Майкрософт Windows 8.1 Профессиональная
Vadim Sterkin
Спасибо, Сергей! Смотрю Sony тоже делает два раздела FAT32 по 260MB, и назначение первого не совсем понятно.
Mark
ASUSTeK COMPUTER INC.
X202E
Microsoft Windows 8.1
Vadim Sterkin
Марк,
1. Код явно не полный.
2. Я сильно сомневаюсь, что ваш ПК шел с этим дисковым накопителем.
Alegz81
Windows 8.1 Pro x64 на SSD
Linux Mint на втором HDD разделы 4 и 5
Hewlett-Packard
HP ENVY dv7 Notebook PC
Майкрософт Windows 8.1 Профессиональная
Vadim Sterkin
И как это мне должно помочь? Да, я увидел, как вы разбили диски, спасибо.
Олег
Готов удовлетворить любопытство. Сообщите каким инструментом можно вынудить информацию.
Vadim Sterkin
Олег, это для опытных пользователей. Надо загрузиться в RE, назначить разделу букву в Diskpart и с помощью dir посмотреть, что там за структура папок, что в каждой. Может понадобиться dir /as (для скрытых файлов). Пишите в форму обратной связи, если что.
Oleg B.
Windows 8.1 Pro x64 OEM updated from Windows 8.0 Pro x64 OEM
ASUSTeK COMPUTER INC.
K55A
Microsoft Windows 8.1
PS Видимо, ASUSы при разметке руководствовались «Windows and GPT FAQ»
http://msdn.microsoft.com/en-us/windows/hardware/gg463525.aspx
Q. Where should the ESP be placed on the disk?
A. The ESP should be first on the disk. While there is no architectural requirement, there are numerous reasons why it is beneficial to place the ESP first. The primary reason for this is that it is impossible to span volumes when the ESP is logically between the two data partitions that you are attempting to span.
Вроде, всё логично.
Vadim Sterkin
Олег, да, все логично. Однако этот FAQ писали раньше, чем эту страницу TechNet, где другoй стандартный и рекомендуемый порядок разделов. И в своих Surface компания его придерживается ^^
Boris_R
Производители ноутбуков оставляют свободное место в разделе с WinRE, чтобы производители антивирусов могли сохранять туда свои файлы :) :)
Извиняюсь, что не в теме.
У меня на ноутбуке стоит Виста, Размер раздела с инструментами WinRE тоже 1GB.
Просматривал содержимое этого раздела с помощью утилиты прямого доступа к диску (имеется в составе VBA Arckit Full Beta) и с удивлением обнаружил там папку с файлами Kaspersky Resque Disk, которым когда то проверял ноутбук, Теперь чешу репу: как безопасно для системы удалить эту папку со всеми ее файлами, а это несколько сотен Мб.
Вадим, по вашему мнению это нормальная ситуация, когда антивирусная программа сохраняет свои файлы в разделе с WinRE и не удаляет их после окончания своей работы?
Vadim Sterkin
Борис, интересно. Я затрудняюсь прокомментировать, но на форуме ЛК должно найтись объяснение. Расскажите потом о рез-тах исследования.
Boris_R
Небольшая, но весьма плодотворная дискуссия см. http://forum.kaspersky.com/index.php?showtopic=282656&st=0&gopid=2152894&#entry2152894 позволила мне восстановить в памяти некоторые события годичной давности и сделать вывод, что наиболее вероятной причиной появления папки с файлами от Kaspersky Resque Disk в разделе WinRE могли стать мои кривые ручки, которыми я по незнанию слегка повредил файловую систему. Дело в том, что многие Live CD с антивирусами используют файловую систему Юникс. Когда запустил Live CD VBARESCUE, там требовалось произвести какие-то действия по монтированию и размонтированию томов. Видимо здесь я и накосячил, т.к. в Юниксе никогда раньше не работал.
Система, однако, осталась живая, восстановление при сбоях протекает нормально, а я совсем забыл про этот факт, посчитав, что все прошло в штатном режиме.
Справедливости ради надо отметить, что некоторые диагностические утилиты от Майкрософт, запускаемые для проверки системы вылетали с сообщениями о неполадках в файловой системе, но период паранойи прошел, и я давно уже не заморачиваюсь на подобных проверках. Главное — прикладные программы работают практически без сбоев.
Вадим, а вы считаете мою версию (ошибки при работе с файловой системой в среде Юникс) похожей на правду? Или надо искать другие версии?
Vadim Sterkin
Борис, похоже :)
maxi
Sony Corporation
VPCZ13V9R
Microsoft Windows 7 Максимальная