You can use the Outlook Interop (ComObject)
to interact with outlook programmatically and add a new PST file Store
After that Copy all the folders from your old PST into it.
I added a comments to each step so you can understand what it doing...
Of course it's your job to check the reliabilty of this process for missing items and so, here it is:
$NewPSTFilePath = "C:\PST\Backup.pst" ## add Your new PST file name path
$outlook = New-Object -ComObject outlook.application
$namespace = $Outlook.GetNameSpace("MAPI")
$OLDStore = $namespace.Stores | Select -First 1 ## get your old PST Store (select the first 1 only)
$NameSpace.AddStore($NewPSTFilePath) ## Add the new PST to the Current profile
$NEWStore = $namespace.Stores | ? {$_.filepath -eq $NewPSTFilePath} ## Get the New Store
$OLDPSTFolders = $OLDStore.GetRootFolder().Folders ## Get the list of folders from the PST
foreach ($folder in $OLDPSTFolders)
{
"Copy $($folder.name)"
[void]$folder.CopyTo($NEWStore)
}
Note:
The script use your default outlook profile, to connect to a differnet profile, add the line $namespace.Logon("OtherProfileName")
after the $namespace = $Outlook.GetNameSpace("MAPI")