Powershell, Новый-SMBShare не выполнение как ожидалось в сценарии

Я работаю для перемещения некоторых файлов от одного физического диска до другого в большой группе серверов Windows 2012. Буквы дисков и размеры являются всеми одинаковыми на этих серверах. В основном мы принимаем участие на каждом сервере, и я хочу переместить те данные и долю к другому диску, который имеет больше свободного пространства. Я пытаюсь разработать сценарий для выполнения следующего:

  1. Уменьшите существующий раздел
  2. Создайте и формат новый раздел, использующий новое свободное пространство
  3. Файлы копии от существующей доли/диска до недавно созданного раздела
  4. Удалите долю из существующего диска (фактический диск совместно используется),
  5. Воссоздайте долю на новом диске
  6. Присвойте новому диску букву диска, которая была присвоена старому.
  7. Зарегистрируйте любые отказы

Это - код, который я соединил. Как заголовок указывает, я не могу заставить Новое-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

Любая справка ценилась бы

2
задан 9 September 2015 в 23:34
2 ответа
..

Я разобрался с вопросом о моем главном вопросе. Мой скрипт изменяет букву диска ПОСЛЕ того, как я создал ресурс, который удаляет ресурс. Если я изменю букву диска до создания общего доступа, то он будет работать так, как нужно. Однако я все еще не уверен, почему периодически получаю ошибку только для чтения.

0
ответ дан 3 December 2019 в 14:38

Я столкнулся с подобной проблемой с глупостью только для чтения и решил ее чем-то вроде следующего (можно подключить New-Partition непосредственно к Format-Volume и опустить Get-Partition):

New-Partition … | ForEach-Object { Start-Sleep -s 3; $_ | Format-Volume … }
0
ответ дан 3 December 2019 в 14:38

Теги

Похожие вопросы