【发布时间】:2015-07-07 09:57:35
【问题描述】:
我有一个简单的脚本,可以将驱动器号分配给任何未命名的分区,如下所示:
function GetNextAvailableLetter
{
#returns an unused char for drive letter assignment, or $null if none are available
}
foreach ($disk in ( get-wmiobject -class win32_volume | where-object { $_.DriveLetter -eq $null } ) )
{
$letter = GetNextAvailableLetter
if ( $letter -ne $null )
{
$disk.DriveLetter = $letter + ":"
$disk.Put()
}
}
奇怪的是,有时它会起作用,有时Put() 会抛出异常:
Exception calling "Put" with "0" argument(s): "Not supported"
我不知道为什么Put() 会抛出。
【问题讨论】:
-
我的第一个猜测是
$disk可能包含多个对象。当这种情况发生时,$disk或$disk.Count的输出是什么。想知道那里是否有多个元素 -
@Matt 不幸的是,这似乎不是问题所在。我已经使用 foreach 循环更新了我的问题来澄清。通过这些更改,我仍然遇到同样的错误。
-
太糟糕了,但至少我们走得更远。也许这会帮助别人。如果有帮助,也看到了这个帖子stackoverflow.com/questions/3230277/powershell-and-diskpart。使用其他一些命令进行挂载。也调用 put 为
.Put_。 $disk 的磁盘类型是什么。
标签: windows powershell wmi