是否可以从C:\?
中仅复制额外用户文件夹实施例
排除所有系统和隐藏文件夹(程序文件,用户,Windows和所有其他隐藏文件夹)然后只从ROOT中排除.txt .log .exe等...但是如果它们在子文件夹中则复制?
这是我到目前为止所拥有的
$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"
我从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.
答案 0 :(得分:1)
Get-Childitem
会自动排除隐藏文件夹。如果需要包含它们,请使用-Force
参数。如果您想要使用'系统'属性,然后您可以将其传递给where { $_.Attributes -contains 'System' }
。但是,我认为这不会起作用,因为您命名的文件夹不具备“系统”功能。属性(至少在我的Windows 8.1系统上)。
如果您有要排除的确切文件夹的列表,则可以使用where
子句将其排除。
$excludedFolders = 'Users','Windows','Program Files','Program Files (x86)'
$myFolders = gci -Path 'C:\' -Directory | where { $_ -notin $excludedFolders }
此时,$ myFolders是C:\下的非隐藏目录列表,不包括您指定的目录。然后,您可以使用foreach
来复制。
$myFolders | foreach { yourCopyFunction -Source $_ }