Powershell New-SMBShare não está funcionando como esperado no script

2

Estou trabalhando para mover alguns arquivos de uma unidade física para outra em um grande grupo de servidores Windows 2012. As letras e os tamanhos das unidades são todos iguais nesses servidores. Basicamente, temos um compartilhamento em cada servidor e quero mover esses dados e compartilhá-los em outra unidade que tenha mais espaço livre. Estou tentando desenvolver um script para realizar o seguinte:

  1. Reduzir uma partição existente
  2. Crie e formate a nova partição usando o novo espaço livre
  3. Copiar arquivos de um compartilhamento / unidade existente para uma partição recém-criada
  4. Remova o compartilhamento da unidade existente (a unidade real está sendo compartilhada)
  5. Recrie o compartilhamento na nova unidade
  6. Atribuir nova unidade à letra da unidade atribuída à antiga.
  7. Registrar falhas

Este é o código que eu coloquei juntos. Como o título indica, não consigo fazer com que o New-SMBShare seja executado corretamente neste script. Eu não estou recebendo erros, mas a unidade não é compartilhada quando o script é concluído. Eu estou tentando executar o script de dentro do Powershell ISE e se eu executar o mesmo comando por conta própria, o compartilhamento é criado conforme o esperado. O que faria com que o comando falhasse quando executado dentro do script.

Eu também estou recebendo ocasionalmente o seguinte: Format-Volume : Cannot perform the requested operation when the drive is read only Eu recebo isso de vez em quando quando eu corro isso, então eu não sei por que isso acontece intermitentemente. Parece quase que às vezes o comando anterior não foi concluído antes que o comando de formatação seja executado.

Por fim, também não tenho muita certeza sobre a melhor maneira de registrar qualquer erro ou até mesmo uma mensagem de sucesso. Eu considerei usar o Robocopy em vez do Copy-Item por esse motivo, mas se alguém souber uma boa maneira de fazer isso com o Copy-Item, eu gostaria de fazer aqui.

 #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

Qualquer ajuda seria apreciada

    
por YEMyslf 09.09.2015 / 19:41

2 respostas

0

Eu descobri o problema na minha pergunta principal. Meu script altera a letra da unidade DEPOIS de criar o compartilhamento que remove o compartilhamento. Se eu alterar a letra da unidade antes de criar o compartilhamento, ele funcionará conforme desejado. Ainda não sei por que estou periodicamente recebendo o erro de leitura.

    
por 10.09.2015 / 20:57
0

Eu me deparei com um problema semelhante com o absurdo somente leitura e resolvi-o com algo como o seguinte (você pode canalizar New-Partition diretamente para Format-Volume e omitir Get-Partition):

New-Partition … | ForEach-Object { Start-Sleep -s 3; $_ | Format-Volume … }
    
por 05.06.2016 / 06:36