如何从Powershell脚本启动Robocopy

时间:2015-06-08 18:07:42

标签: powershell robocopy

我正在尝试将C:\驱动器中的用户数据从联网计算机传输到本地计算机上的C:\驱动器。所以我需要排除所有系统文件夹和隐藏文件夹。

这就是我的powershell脚本。

$asset = Read-Host "What is the Asset Number?"
$useraiu = Read-Host "What is the user's AIU?"

$source = "\\$asset\C$\"
$dest = "C:\Temp\Dest"

$excludedFolders = '_SMSTaskSequence','inetpub','Program Files','Program Files (x86)','Swsetup','Users','Windows','CCM','Notes'

$myFolders = Get-ChildItem  -Path "\\$asset\C$\" -Directory | where { $_ -notin $excludedFolders }

$myFolders | foreach { robocopy $_  $dest /S /Z /MT /XJD /XA:SH /log+:"\\server\path\path\%asset%-to-%computername%-Transfer-Log.log" /NP /FP /V /TEE}

Read-Host "Press ENTER to quit"

当我执行Write-Output $myFolders时,它会显示我想要复制的正确目录。

看起来robocopy功能使用本地C:\路径作为源。来源应为\\$asset\C$\

中列出的文件夹$myFolders

实施例。如果此文件夹位于旧计算机上\\computername\C$\Userfolder-Pictures使用Robocopy将该文件夹复制到本地计算机上的C:\Userfolder-Pictures

运行脚本后,我从Robocopy获得此输出。

 Log File : \\server\path\path\%asset%-to-%computername%-Transfer-Log.log

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows                              
-------------------------------------------------------------------------------

  Started : Mon Jun 08 11:11:28 2015

   Source : C:\WINDOWS\system32\Temp\
     Dest : C:\Temp\Dest\

    Files : *.*

  Options : *.* /V /FP /TEE /S /COPY:DAT /Z /NP /XJD /XA:SH /MT:8 /R:1000000 /W:30 

------------------------------------------------------------------------------

2015/06/08 11:11:28 ERROR 2 (0x00000002) Accessing Source Directory C:\WINDOWS\system32\Temp\
The system cannot find the file specified. 

1 个答案:

答案 0 :(得分:4)

添加foreach将为您提供字符串数组中文件夹的完整网络路径。您的$myFolders循环DirectoryInfo目前正在循环遍历$myFolders = Get-ChildItem -Path "\\$asset\C$\" -Directory | where { $_ -notin $excludedFolders } | Select-Object -ExpandProperty FullName 个对象。

$myFolders

或者,如果您计划使用FullName以外的$_.FullName信息,则可以更改此行以使用$myFolders | foreach { robocopy $_.FullName $dest /S /Z /MT /XJD /XA:SH /log+:"\\server\path\path\%asset%-to-%computername%-Transfer-Log.log" /NP /FP /V /TEE}

{{1}}