带有Robocopy和CSV文件的Powershell

时间:2017-09-18 18:28:15

标签: powershell csv robocopy

所以我在powershell上非常环保,而且我一直在寻找类似的问题,但似乎无法找出我的问题所在。我的CSV中包含来自活动目录的用户名,如果@{user= }不存在,则可以使用。到目前为止,我对自己很满意,但似乎我无法将其推到终点线上。请帮助StackOverFlow用户!

$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\

1 个答案:

答案 0 :(得分:1)

如果您希望在字符串中展开对象的属性,则需要使用subexpression operator $()

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

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