2017-09-18 4 views
1

Donc, je suis assez vert chez powershell, et j'ai cherché des problèmes similaires mais je n'arrive pas à trouver quel est mon problème. Mon CSV a des noms d'utilisateurs du répertoire actif dedans, et fonctionnerait si le @{user= } n'était pas là. J'étais content de m'avancer aussi loin, mais il me semble que je ne peux pas tout faire pour franchir la ligne d'arrivée. S'il vous plaît, aidez les utilisateurs de StackOverFlow!Powershell avec les fichiers Robocopy et CSV

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

Quand je regarde le fichier journal, je vois ce qui suit:

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

Répondre

1

Si vous voulez une propriété d'un objet à être étendu dans une chaîne, vous devez utiliser le subexpression operator$().

Une meilleure façon de construire des chemins est d'utiliser Join-Path:

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

Merci beaucoup! Je me sens comme un idiot, c'est tellement simple à réparer. c'est appreaciated! – jodokast89