带有 Robocopy 和 CSV 文件的 Powershell

Powershell with Robocopy and CSV files

所以我对 powershell 还很陌生,我四处寻找类似的问题,但似乎无法找出我的问题所在。我的 CSV 中包含来自活动目录的用户名,如果 @{user= } 不存在,它也可以工作。我为自己能走到这一步而感到高兴,但似乎我不能完全把它推过终点线。请帮助 Whosebug 用户!

$csvFile = 'C:\scripts\HomeDirectory\CN\CN-homedirectory.csv'
$SrcHome = '\ch-hz-usrhome1\e$\Home\'
$DstHome = '\us-svr-bk2\d$\files\CN_Files\'

  Import-Csv $csvFile -Delimiter ";" | ForEach-Object {
   $srcDoc = "$("$SrcHome$_.User")"
   $dstDoc = "$("$DstHome$_.User\UsersHomeDrive")"

    RoboCopy $srcDoc $dstDoc /Z /SEC /MIR /COPY:DAT /r:10 /w:40 /log+:C:\scripts\HomeDirectory\CN\CN_UserData.log
  }

当我查看日志文件时,我看到以下内容:

Source : \ch-hz-usrhome1\e$\Home\@{User=xyu}.User\
Dest : \us-svr-bk2\d$\files\CN_Files\@{User=xyu}.User\UsersHomeDrive\

如果你想让一个对象的属性在字符串中展开,你需要使用subexpression operator$().

构建路径的更好方法是使用 Join-Path:

$srcDoc = Join-Path $SrcHome $_.User
$dstDoc = Join-Path $DstHome (Join-Path $_.User "UsersHomeDrive")