Имя сопоставления дисков New-PSDrive - PullRequest
0 голосов
/ 21 декабря 2018

В моем скрипте powershell я использую функцию New-PSDrive для сопоставления пути к файлу удаленного сервера на моем локальном компьютере в качестве процесса развертывания Windows.

Я планирую использовать этот скрипт Powershell в будущем, поэтому я не будухочу любой конфликт между дисками из-за именования.Например, если двум операциям развертывания необходимо одновременно получить доступ к сценарию, одна из двух будет развернута некорректно.

Вот вопрос: могу ли я использовать метку времени или любую другую уникальную информацию в качестве имени сопоставления диска?Таким образом, я могу быть уверен, что избежу конфликта имен.

Редактировать:

Я пытался создать пользовательское отображение с именем new-psdrive без параметра persist, но таким образом powershell пытается достичьпапка с относительным путем (под текущим рабочим каталогом)

Вот код, в который я пытаюсь скопировать некоторые файлы (резервная копия):

$day = Get-Date -Format "yyyyMMdd"
$appsource = "\\$computername\D$\Applications"

New-PSDrive -Name J -PSProvider FileSystem -Root $appsource-Credential $cred -persist

Write-Host "Backup işlemi başladı." 
robocopy "J:\App" "J:\backup\$day"

Редактировать 2:

Вы не можете использовать динамическое имя в качестве имени постоянного сопоставления диска.Если вы хотите получить доступ к междоменному компьютеру, лучший (но экономически эффективный) способ использовать Invoke-Command для запуска сценария на удаленном компьютере.Необходимо разрешить двухсторонний (удаленный локальный, локальный удаленный) обмен файлами.Если вы используете Invoke-Command, вы не конфликтуете.Поскольку команда использует динамический сеанс на удаленном компьютере.

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Поскольку для подключенных к Windows накопителей предъявляются жесткие требования к именам (что и создается при использовании параметра persist), может быть лучше использовать команду invoke и передать блок скрипта, чем сопоставлять диск вообще.

$SB = {
$day = Get-Date -Format "yyyyMMdd"
Robocopy "D:\Test\App" "D:\Test\backup\$day"
}
Invoke-Command -ComputerName $CompName -Credential $cred -ScriptBlock $SB  

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

0 голосов
/ 21 декабря 2018

В соответствии с документацией от Get-Help New-PSDrive -full имя нового диска предоставляется в виде строки, поэтому, если вы можете создать строку из предпочитаемой вами информации (отметка времени и т. Д.) Перед ее передачейдо New-PSDrive, вы можете использовать его как имя диска.Обратите внимание, что вам следует избегать символов, которые будут проблематичными в путевых именах, таких как пробелы и зарезервированные символы (например, \, :, /, символы подстановки и т. Д.).

ПосколькуВаше редактирование показывает, что вы используете ROBOCOPY, который работает «вне» пространства кода / памяти PowerShell, возможно, вы не сможете использовать New-PSDrive для установления сопоставления - у меня были противоречивые результаты с этим.Гораздо надежнее установить сопоставление с помощью NET USE - в вашем случае NET USE J: $appsource, скорее всего, добьется цели.

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