Я работаю над перемещением некоторых файлов с одного физического диска на другой в большой группе серверов Windows 2012. Буквы и размеры дисков на этих серверах одинаковы. В основном у нас есть общий ресурс на каждом сервере, и я хочу переместить эти данные и поделиться на другой диск, на котором больше свободного места. Я пытаюсь разработать сценарий для выполнения следующих задач:
Это код, который я собрал. Как указано в заголовке, я не могу заставить New-SMBShare правильно работать в этом скрипте. Я не получаю сообщений об ошибках, но по завершении скрипта доступ к диску не будет осуществляться. Я пытаюсь выполнить сценарий из Powershell ISE, и если я запустил ту же команду самостоятельно, общий ресурс будет создан должным образом. Что может привести к сбою команды при запуске в сценарии.
Иногда я получаю следующее: Format-Volume : Cannot perform the requested operation when the drive is read only
Я получаю это время от времени, когда запускаю это, поэтому я не уверен, почему это происходит с перерывами. Иногда кажется, что предыдущая команда не была завершена до запуска команды форматирования.
Наконец, я также не совсем уверен, как лучше всего регистрировать любые ошибки или даже сообщения об успехе. По этой причине я рассматривал возможность использования Robocopy вместо Copy-Item, но если кто-нибудь знает хороший способ сделать это с помощью Copy-Item, я хотел бы его здесь.
#Stopping service to prevent "Format Disk" dialog box from appearing on screen
Stop-Service ShellHWDetection
#Create New 90GB Partition from W Drive
Resize-Partition -DriveLetter W -Size (1772GB)
Get-Disk | where size -GT 1.5TB | New-Partition -UseMaximumSize -DriveLetter K
Get-Partition -DriveLetter K | Format-Volume -FileSystem NTFS -NewFileSystemLabel "PC_Images" -Confirm:$false
#Restart ShellHWDetection service
start-service ShellHWDetection
#Copy files from "I drive" PC_Images share to new partition
Copy-Item -Path I:\* -Destination K:\ -Recurse -erroraction silentlycontinue
#Remove existing PC_Images share and recreate on new partition
Get-SMBShare -Name PC_Images | Remove-SMBShare -Confirm:$False
New-SMBShare -Name PC_Images -Path K:\ -ChangeAccess Everyone
#Change drive letter on new share to I
Set-Partition -DriveLetter I -NewDriveLetter X
Set-Partition -DriveLetter K -NewDriveLetter I
Любая помощь будет оценена
Я столкнулся с аналогичной проблемой с ерундой только для чтения и решил ее примерно следующим образом (вы можете передать New-Partition напрямую в Format-Volume и опустить Get-Partition):
New-Partition … | ForEach-Object { Start-Sleep -s 3; $_ | Format-Volume … }
Я понял проблему по своему основному вопросу. Мой сценарий изменяет букву диска ПОСЛЕ того, как я создал общий ресурс, который удаляет общий ресурс. Если я изменю букву диска перед созданием общего ресурса, он будет работать должным образом. Я все еще не уверен, почему я периодически получаю ошибку только для чтения.