简而言之,我有一个需要分配驱动器号的卷(使用diskpart)。现在的问题是音量不保持不变。您输入磁盘部分a do a "list volume“,具体的卷将是卷0,然后"exit”。再次输入,并再次执行"list volume“,这一次是第4卷。因此它继续。现在,如果这是由一个人完成的,这将不是一个问题,然而,这是一个自动任务,它将在Windows2003上“断开”卷,并在其他服务器上使用,并再次安装在Windows2003服务器上。
我正在尝试用powershell编写一个脚本,它将能够根据几个唯一的字段来识别卷。问题来了,我在用powershell解释diskpart的"list volume“命令的输出时遇到了麻烦。
下面的命令提供了我需要使用的输出,但是在我迷路之后。
cls
$dp = "list volume" | diskpart | ? { $_ -match "^ [^-]" }
$dp | format-table -auto这是它提供的输出,我要找的是第一卷。
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 有谁能帮我指个方向吗?我已经走投无路了。
发布于 2010-08-14 00:45:05
是的,我知道了!!
这就是答案。
使用VB脚本,我设法创建了一个脚本,它完成了我正在寻找的功能,然后我将其转换为Powershell,下面是该脚本。
$drive = gwmi Win32_Volume | where {$_.DeviceID -like "*b0f012f6-82b1-11df-a41c-001f29e8f0be*"}
$drive.AddMountPoint("T:\")
$drive.DriveLetter = "T:"
$drive.Put_
$drive.Mount()通过运行以下脚本获得的设备ID I:
# 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 on the class Win32_Volume上的一篇帖子。
我希望这能帮助其他人
感谢大家的帮助!
发布于 2010-07-13 00:56:38
您可以只使用Powershell和WMI来设置驱动器号。除非你在做别的事情,否则不需要diskpart (我不熟悉那个工具)
因此(假设您正在尝试设置一个没有盘符的卷的驱动器号),这应该是可行的:
$drive = gwmi Win32_Volume | where {$_.DriveLetter -eq ""}
$drive.DriveLetter = "X:"
$drive.Put()如果您不确定驱动器,只需先查询它,并确保您只得到一个您想要的:
gwmi Win32_Volume | where {$_.DriveLetter -eq ""}发布于 2010-07-13 01:25:28
是啊。这是diskpart的一个“特性”。
来自MS的建议(在您的案例中不是很有用)
请参阅错误报告here.
https://stackoverflow.com/questions/3230277
复制相似问题