1

I've got a couple things that i'm working on. One of them is sort of an import/export thing i found on here. but i'm getting the following error

PS C:\Users\joeblogs> C:\Users\joeblogs\Scripts\Copy user data.ps1 Invalid assignment expression. The left hand side of an assignment operator needs to be something that can be assigned to like a variable or a property. At C:\Users\delpillay\Documents\Scripts\Copy user data.ps1:16 char:12 + $username = <<<< gc env:userame + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : InvalidLeftHandSide

I don't know where to start and i'm not sure what to try...

Below is the code:

$destination = "E:\Users\%username%\Backup"
$folder = "Desktop",
#"Downloads",
"Favorites",
"My Documents",
#"Music",
#"Pictures",
#"Videos",
#"AppData\Local\Mozilla",
#"AppData\Local\Google",
#"AppData\Roaming\Mozilla"

######################################

$username = gc env:userame
$userprofile = gc env:userprofile
##$appData = gc env:localAPPDATA


###### Restore data section ######
if ([IO.Directory]::Exists($destination + "\" + $username + "\")) 
{ 

$caption = "Choose Action";
$message = "A backup folder for $username already exists, would you like to      restore the data to the local machine?";
$Yes = new-Object System.Management.Automation.Host.ChoiceDescription  "&Yes","Yes";
$No = new-Object System.Management.Automation.Host.ChoiceDescription "&No","No";
$choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No);
$answer = $host.ui.PromptForChoice($caption,$message,$choices,0)

if ($answer -eq 0) 
{

    write-host -ForegroundColor green "Restoring data to local machine for  $username"
    foreach ($f in $folder)
    {   
        $currentLocalFolder = $userprofile + "\" + $f
        $currentRemoteFolder = $destination + "\" + $username + "\" + $f
        write-host -ForegroundColor cyan "  $f..."
        Copy-Item -ErrorAction silentlyContinue -recurse $currentRemoteFolder $userprofile

        if ($f -eq "AppData\Local\Mozilla") { rename-item $currentLocalFolder "$currentLocalFolder.old" }
        if ($f -eq "AppData\Roaming\Mozilla") { rename-item $currentLocalFolder "$currentLocalFolder.old" }
        if ($f -eq "AppData\Local\Google") { rename-item $currentLocalFolder "$currentLocalFolder.old" }

    }
    rename-item "$destination\$username" "$destination\$username.restored"
    write-host -ForegroundColor green "Restore Complete!"
}

else
{
    write-host -ForegroundColor yellow "Aborting process"
    exit
}


}

###### Backup Data section ########
#else 
{ 

Write-Host -ForegroundColor green "Outlook is about to close, save any unsaved emails then press any key to continue ..."

$x = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")

Get-Process | Where { $_.Name -Eq "OUTLOOK" } | Kill

write-host -ForegroundColor green "Backing up data from local machine for $username"

foreach ($f in $folder)
{   
    $currentLocalFolder = $userprofile + "\" + $f
    $currentRemoteFolder = $destination + "\" + $username + "\" + $f
    $currentFolderSize = (Get-ChildItem -ErrorAction silentlyContinue $currentLocalFolder -Recurse -Force | Measure-Object -ErrorAction silentlyContinue -Property Length -Sum ).Sum / 1MB
    $currentFolderSizeRounded = [System.Math]::Round($currentFolderSize)
    write-host -ForegroundColor cyan "  $f... ($currentFolderSizeRounded MB)"
    Copy-Item -ErrorAction silentlyContinue -recurse $currentLocalFolder $currentRemoteFolder
}



$oldStylePST = [IO.Directory]::GetFiles($appData + "\Microsoft\Outlook", "*.pst") 
foreach($pst in $oldStylePST)   
{ 
    if ((test-path -path ($destination + "\" + $username + "\Documents\Outlook Files\oldstyle")) -eq 0){new-item -type directory -path ($destination + "\" + $username + "\Documents\Outlook Files\oldstyle") | out-null}
    write-host -ForegroundColor yellow "  $pst..."
    Copy-Item $pst ($destination + "\" + $username + "\Documents\Outlook Files\oldstyle")
}    

write-host -ForegroundColor green "Backup complete!"

} 

1 Answer 1

1

Few observations:

You are not commenting the Favourites and My Documents. If you want to use them then use comma separated directly.

Use this:

$destination = "E:\Users\%username%\Backup"
$folder = "Desktop","Favorites","My Documents"
#"Downloads",
#"Favorites",
#"My Documents",
#"Music",
#"Pictures",
#"Videos",
#"AppData\Local\Mozilla",
#"AppData\Local\Google",
#"AppData\Roaming\Mozilla" 

You have missed the n in username:

$username = gc env:username

Donot use gc env:username. Instead directly access them like this below: Completely reframed:

$destination = "E:\Users\%username%\Backup"
$folder = "Desktop","Favorites","My Documents"
#"Downloads",
#"Favorites",
#"My Documents",
#"Music",
#"Pictures",
#"Videos",
#"AppData\Local\Mozilla",
#"AppData\Local\Google",
#"AppData\Roaming\Mozilla"

######################################

$username = $env:username
$userprofile = $env:userprofile
##$appData = gc env:localAPPDATA

These are the major things that have been fixed. Hope it helps you.

Sign up to request clarification or add additional context in comments.

1 Comment

@dnoob: Accept the answer if it helps you then.That would be appreciable

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.