Script Repository


Move home folder with locked files

February 24, 2021
1300

The script moves a user's home folder to another location. Unlike the built-in Move home folder action, it does not stop when unable to move a folder or file, and copies it instead. All locked items are listed in the Execution Log.

To add the script to your business rule, custom command or scheduled task, use the Run a program or PowerShell script action.

Parameter:

  • $destinationPath - Specifies a path where the script should move a user's home fodler. You can use value references (e.g. %username%) in the path. They will be replaced with corresponding property values of the user account.
Edit Remove
PowerShell
$destinationPath = "\\server\share\%username%" # TODO: modify me

function DeleteObject ($objectPath)
{
    try
    {
        Remove-Item $objectPath -Force -ErrorAction Stop
    }
    catch
    {
        $Context.LogMessage("Error deleting the home directory of the user. Could not delete file or folder '$objectPath'. Error message: " + $_.Exception.Message, "Warning")
    }
}

function GetChildItems ($objectPath)
{
    $object = Get-Item $objectPath -Force
    if ($object -isnot [System.IO.DirectoryInfo])
    {
        DeleteObject $object.FullName
        return
    }
    
    $childItems = Get-ChildItem $object.FullName -Force
    if($childItems -eq $NULL)
    {
        DeleteObject $object.FullName
        return
    }
    
    foreach ($item in $childItems)
    {
        GetChildItems $item.FullName
    }
    
    DeleteObject $object.FullName
}

try
{
    Copy-Item -Recurse -Path "%homeDirectory%" -Destination "$destinationPath" -Force -ErrorAction Stop
}
catch
{
    $Context.LogMessage($_.Exception.Message, "Warning")
    return # Exit script
}

# Update user
$Context.TargetObject.Put("homeDirectory", $destinationPath)
$Context.TargetObject.SetInfo()

# Remove old folder
GetChildItems "%homeDirectory%"

Comments ( 0 )
No results found.
Leave a comment