如何从Powershell脚本启动Robocopy
问题描述:
我正尝试将C:\驱动器中的用户数据从联网的计算机传输到本地计算机上的C:\驱动器。所以我需要排除所有的系统文件夹和隐藏文件夹。如何从Powershell脚本启动Robocopy
这是我的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.
答
添加Select-Object -ExpandProperty FullName
会给你完整的网络路径的文件夹中的字符串数组。您的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}
尾随斜线我找到了不受欢迎的来源或路径。 – ssaviers
这甚至不是问题。列出的源代码路径完全是错误的,应该或者我预期会在那里。 – rangerr
你期望在那里?您是否确认'$ asset'不是空或空? –