powershell и diskpart - PullRequest
       3

powershell и diskpart

4 голосов
/ 12 июля 2010

Короче говоря, у меня есть том, которому нужно назначить букву диска (используя diskpart).Проблема сейчас заключается в том, что громкость не остается прежней.Вы вводите часть диска a «список томов», и конкретным томом будет том 0, а затем «выход».Введите снова и выполните «список томов» снова, и на этот раз это том 4. И так продолжается.Теперь, если это сделал человек, это не будет проблемой, однако это автоматизированная задача, которая «отключит» том в windows 2003 и будет использоваться на других серверах и снова смонтирована на сервере Windows 2003.

Я пытаюсь написать скрипт в powershell, который сможет идентифицировать том на основе нескольких уникальных полей.Проблема заключается в том, что я застреваю при интерпретации вывода команды diskpart «list volume» с помощью powershell.

Следующая команда предоставляет вывод, с которым мне нужно работать, но он появляется после того, как я потерян.

cls
$dp = "list volume" | diskpart | ? { $_ -match "^  [^-]" }
$dp | format-table  -auto

, и это вывод, который он предоставляет, и том, который я ищу, это Том 1.

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  Volume 0     F                       DVD-ROM         0 B  Healthy            
  *Volume 1                             Partition    100 GB  Healthy*            
  Volume 2     E   DATA         NTFS   Partition    547 GB  Healthy            
  Volume 3     C   OS           NTFS   Partition     39 GB  Healthy    System  
  Volume 4     D   APPS         NTFS   Partition     98 GB  Healthy            

Может кто-нибудь помочь мне в правильном направлении, пожалуйста.Я в конце моей привязи.

Ответы [ 3 ]

6 голосов
/ 13 августа 2010

Да, я понял !!

Вот ответ.
Используя VB Script, мне удалось создать скрипт, который делал то, что я искал, затем я перевел его на Powershell, и ниже приведен скрипт.

$drive = gwmi Win32_Volume | where {$_.DeviceID -like "*b0f012f6-82b1-11df-a41c-001f29e8f0be*"}
$drive.AddMountPoint("T:\")
$drive.DriveLetter = "T:"
$drive.Put_
$drive.Mount()

Идентификатор устройства, который я получил, запустив следующий скрипт:

# get volumes on this system
$volumes = get-wmiobject Win32_Volume
# display volume info
# There are {0} volumes on this system, as follows: " -f ($volumes.length)
# Iterate through volumes and display information
foreach ($vol in $volumes) {
    "Volume: {0}" -f ++$i
    "============================="
    $vol | Format-List Access,Automount,Availability,BlockSize,BootVolume,Capacity,Caption,Compressed,ConfigManagerErrorCode,ConfigManagerUserConfig,CreationClassName,Description,DeviceID,DirtyBitSet,DriveLetter,DriveType,ErrorCleared,ErrorDescription,ErrorMethodology,FileSystem,FreeSpace,IndexingEnabled,InstallDate,Label,LastErrorCode,MaximumFileNameLength,Name,NumberOfBlocks,PageFilePresent,PNPDeviceID,PowerManagementCapabilities,PowerManagementSupported,Purpose,QuotasEnabled,QuotasIncomplete,QuotasRebuilding,SerialNumber,Status,StatusInfo,SupportsDiskQuotas,SupportsFileBasedCompression,SystemCreationClassName,SystemName,SystemVolume
}

из поста msdn по классу Win32_Volume .

Я надеюсь, что это может помочь кому-то еще

Спасибо всем, кто помогает!

2 голосов
/ 12 июля 2010

Вы можете просто использовать Powershell и WMI, чтобы установить букву диска.Не нужно диска, если вы не делаете что-то еще (я не знаком с этим инструментом)

Итак (если вы пытаетесь установить букву диска одного тома, который не имеет буквы) этодолжно работать:

$drive = gwmi Win32_Volume | where {$_.DriveLetter -eq ""}

$drive.DriveLetter = "X:"

$drive.Put()

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

gwmi Win32_Volume | where {$_.DriveLetter -eq ""}
1 голос
/ 12 июля 2010

Да. Это «особенность» diskpart.

Предложения от MS (не очень полезны в вашем случае)

  • Сохранить консоль управления дисками (Diskmgmt.msc) работает, пока вы обрабатывать скрипты. Или сохранить экземпляр запуска утилиты Diskpart.exe в фоновом режиме, пока вы обрабатываете скрипты. Когда вы делаете это, объем числа не должны меняться между экземпляры Diskpart.exe полезность. Используйте громкость метки информация вместо объема номер для отслеживания определенных объемов.

    См. Сообщение об ошибке здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...