Я работаю для перемещения некоторых файлов от одного физического диска до другого в большой группе серверов Windows 2012. Буквы дисков и размеры являются всеми одинаковыми на этих серверах. В основном мы принимаем участие на каждом сервере, и я хочу переместить те данные и долю к другому диску, который имеет больше свободного пространства. Я пытаюсь разработать сценарий для выполнения следующего:
Это - код, который я соединил. Как заголовок указывает, я не могу заставить Новое-SMBShare работать правильно в этом сценарии. Я не добираюсь, ошибки, но диск не совместно используются, когда сценарий завершается. Я пытаюсь выполнить сценарий из ISE Powershell и если я работаю на той же своей собственной команде, доля создается как ожидалось. Что заставило бы команду перестать работать, когда выполнено в рамках сценария.
Я также иногда получаю следующее: Format-Volume : Cannot perform the requested operation when the drive is read only
Я получаю это время от времени, когда я выполняю это так, я не уверен, почему это происходит периодически. Почти иногда кажется, что предыдущая команда не завершилась, прежде чем команда форматирования выполняется.
Наконец я также не действительно уверен лучший способ выполнить вход любых ошибок или даже сообщения успеха. Я рассмотрел использование Robocopy вместо Объекта Копии поэтому, но если бы кто-либо знает хороший способ выполнить это с Объектом Копии, я хотел бы здесь он.
#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 … }