【发布时间】:2016-03-22 02:47:26
【问题描述】:
我对用于管理用户帐户的 PowerShell 脚本的问题进行了深入研究。当用户在不同位置之间移动时,我们会将他们的 ADUser 移动到新的 OU,并在服务器之间移动他们的数据。
在研究如何复制他们的主文件夹时,确定没有简单的方法可以使用 PowerShell 复制文件并排除某些目录。因此,我们正在调用 robocopy.exe 并使用 /XD。这也让我们可以开始复制,但让脚本继续传递给下一个用户。
我们正在尝试通过根据用户类型移动或删除旧文件夹来增强我们的脚本。我创建了一个我想调用的 PS1 文件,以便脚本可以立即继续下一个用户,而不是等待复制完成。 PS1 文件如下所示:
Param(
[string]$source,
[string]$destination,
[string]$oldStaff
)
robocopy $source $destination
move $source $oldStaff
当我尝试通过以下方式从我们的脚本中调用它时:
start powershell.exe .\Move-WCFolders.ps1 $source $destination $oldStaff
我收到以下错误消息:
Start-Process : 找不到接受的位置参数 争论 ''。在 行:1 字符:1 + 启动 powershell.exe .\Move-WCFolders.ps1 $source $Description + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument: (:) [Start-Process], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.StartProcessCommand
我确信可能有更好的方法来实现我想要实现的目标。需要启动 robocopy 或必须在外部脚本中调用东西并不让人感觉“干净”。最终目标是在排除目录的同时复制文件夹,复制完成后移动文件夹,但不必等待复制完成才能继续执行脚本。
【问题讨论】: