2015-10-10 5 views
1

Я пытаюсь создать сценарий PowerShell, который найдет доступную букву диска, карту сетевого диска и затем изменится на этот подключенный диск. Я нашел следующие, отображенный \\server\share как D: привод:Найдите доступную букву диска и изменение

$Drive = New-PSDrive -Name $(for($j=67;gdr($d=[char]$J++)2>0){}$d) -PSProvider FileSystem -Root \\server\share\ 

можно вручную ввести D:, но как я могу изменить это в скрипте? Я думал вдоль линий этого:

$Drive = $Drive.Trim(":") 

Но утверждение выше выдает следующее сообщение об ошибке:

Method invocation failed because [System.Management.Automation.PSDriveInfo] does 
not contain a method named 'Trim'. 
At line:1 char:1 
+ $Drive = $Drive.Trim(":") 
+ ~~~~~~~~~~~~~~~~~~~~~~~~~ 
    + CategoryInfo   : InvalidOperation: (:) [], RuntimeException 
    + FullyQualifiedErrorId : MethodNotFound 

ответ

0

Вы можете проверить список потенциальных букв против списка текущих назначенных букв дисков и использовать первый неиспользованный один:

$used = Get-PSDrive | Select-Object -Expand Name | 
     Where-Object { $_.Length -eq 1 } 
$drive = 90..65 | ForEach-Object { [string][char]$_ } | 
     Where-Object { $used -notcontains $_ } | 
     Select-Object -First 1 

New-PSDrive -Name $drive -PSProvider FileSystem -Root \\server\share 

Set-Location "${drive}:" 

или случайное одно из этого списка:

$used = Get-PSDrive | Select-Object -Expand Name | 
      Where-Object { $_.Length -eq 1 } 
$unused = 90..65 | ForEach-Object { [string][char]$_ } | 
      Where-Object { $used -notcontains $_ } 
$drive = $unused[(Get-Random -Minimum 0 -Maximum $unused.Count)] 

New-PSDrive -Name $drive -PSProvider FileSystem -Root \\server\share 

Set-Location "${drive}:" 
+0

Большое спасибо за Ваш ответ Ansgar. Оба примера выполняются, как вы описали. То, что я надеялся сделать, - это назвать это буквенное письмо в сценарии. В вашем первом примере диск Z: отображается на моем компьютере. Как я могу назвать это в скрипте? Я могу вручную ввести «Z:», чтобы изменить диск, но есть ли способ изменить диск, вызвав переменную $ drive? –

+0

@BrianWeaver Используйте ['Set-Location'] (https://technet.microsoft.com/en-us/library/hh849850.aspx), чтобы сменить диск и/или папку. См. Обновленный ответ. –

+0

Спасибо Ансгару! Это именно то, что мне нужно. Ваша помощь очень ценится. –

0

Функции, используемые в ответе Ансгара, скорее всего, возвращают привод DVD/CD, поскольку в нем нет носителя. Для того, чтобы получить бесплатную букву диска, то есть вероятно * не CD/DVD привод мы ищем от я-г: $dl=ls function:[i-z]: -n | ?{ !(test-path $_) } |select -last 1

 Смежные вопросы

  • Нет связанных вопросов^_^