gpt4 book ai didi

powershell - 如何从 Powershell 脚本启动 Robocopy

转载 作者:行者123 更新时间:2023-12-02 23:13:13 34 4
gpt4 key购买 nike

我正在尝试将 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.

最佳答案

添加 Select-Object -ExpandProperty FullName 将为您提供字符串数组中文件夹的完整网络路径。您通过 $myFolders 进行的 foreach 循环当前正在通过 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}

关于powershell - 如何从 Powershell 脚本启动 Robocopy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30716121/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com