带有 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")
所以我对 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")