Powershell新SMBShare不按预期在脚本中运行

我正在努力将大量Windows 2012服务器中的一些文件从一个物理驱动器移动到另一个。 驱动器号和大小在这些服务器上都是一样的。 基本上,我们在每个服务器上都有一个共享,我想要将这些数据移动到另一个具有更多可用空间的驱动器上。 我正在尝试开发一个脚本来完成以下任务:

  1. 收缩现有的分区
  2. 使用新的可用空间创build和格式化新分区
  3. 将文件从现有的共享/驱动器复制到新创build的分区
  4. 从现有的驱动器中删除共享(实际的驱动器正在共享)
  5. 在新驱动器上重新创build共享
  6. 分配新的驱动器分配给旧的驱动器号。
  7. logging任何失败

这是我放在一起的代码。 正如标题所述,我无法使New-SMBShare在此脚本中正确运行。 我没有收到错误,但脚本完成时驱动器不共享。 我试图从Powershell ISE内执行脚本,如果我自己运行相同的命令,共享按预期创build。 在脚本中运行时会导致命令失败。

我也偶尔得到以下内容: Format-Volume : Cannot perform the requested operation when the drive is read only我每隔一段时间,我运行这个,所以我不知道为什么它间歇性地发生。 在格式化命令运行之前,似乎有时上一个命令还没有完成。

最后我也不太确定完成logging任何错误甚至是成功消息的最好方法。 由于这个原因,我考虑使用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 

任何帮助,将不胜感激

我在我的主要问题上发现了这个问题。 我的脚本更改驱动器号后我创build共享,删除共享。 如果我在创build共享之前更改驱动器号,它将按需要工作。 我仍然不确定为什么我定期获取只读错误。

我遇到了一个类似的问题,只读废话,并解决它类似于以下内容(您可以pipe新分区直接格式化卷和省略获取分区):

 New-Partition … | ForEach-Object { Start-Sleep -s 3; $_ | Format-Volume … }