In my Powershell provider, which is a business-logic layer over an SQL database, the Powershell drives equate to database connection settings. This collection of connection settings is persisted to an encrypted XML file on the local computer. An administrator may add these PS drives on a computer, supplying SQL Server credentials, that another Powershell user may use when writing scripts. When the administrator runs New-PSDrive, I add a drive to the collection and persist it to the XML. When they Remove-PSDrive, I remove the drive from the persistent XML. This works fine. However, when the Powershell host is exiting, it calls RemoveDrive() for each existing drive. At this point I do not want to remove the drives since I need them to persist on the computer.
How do I determine if RemoveDrive() is being called from a user manually executing Remove-PSDrive, or the host exiting?
Also, I have created custom drive info parameters which work well, but I also wrote a custom cmdlet which is used to add and remove drives. How can I create (and remove) psdrives from my cmdlet?