Как изменить метку диска с помощью Powershell? - PullRequest
2 голосов
/ 22 февраля 2012

Я пытаюсь смонтировать пару сетевых дисков, а затем переименовать их.Однако мой скрипт Powershell не работает после первого переименования диска.Для второго я получаю сообщение об ошибке:

Exception calling "Put" with "0" argument(s): ""
At C:\Users\ben\Documents\mapdrives.ps1:12 char:11
+ $disk.Put <<<< ()
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException

Мой скрипт выглядит так:

cls
$Username = ""
$Password = ""
$net = New-Object -com WScript.Network; 

$Drive = "M:"
$UNC = "\\server01\bin$"
$net.mapnetworkdrive($Drive, $Unc, $false, $Username, $Password)
$disk = Get-WmiObject "Win32_LogicalDisk WHERE DeviceID='M:'"
if (-not $disk) { return }
$disk.VolumeName = "server1_bin"
$disk.Put()

$Drive = "N:"
$UNC = "\\server01\data$"
$net.mapnetworkdrive($Drive, $Unc, $false, $Username, $Password)
$disk = Get-WmiObject "Win32_LogicalDisk WHERE DeviceID='N:'"
if (-not $disk) { return }
$disk.VolumeName = "server1_data"
$disk.Put()

Что я делаю не так?

Ответы [ 2 ]

7 голосов
/ 22 февраля 2012

Попробуйте вот так, используя comobject для обозначения диска:

$a = New-Object -ComObject shell.application

$a.NameSpace( "M:\" ).self.name = "server1_bin"

в любом случае вам нужно запустить консоль как пользователь с правами администратора

0 голосов
/ 24 октября 2017

Я написал сценарий PowerShell

function ChangeDriveLabel([string]$driveletter,[string]$newlabel )
{    
    $disk = Get-WmiObject -Class win32_volume -Filter "DriveLetter = '$driveletter'"

    Set-WmiInstance -input $disk -Arguments @{ Label=$newlabel}

}

ChangeDriveLabel -driveletter 'e:' -newlabel 'DBLOG'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...