When running multiple scripts in a session, which use and add the same snap-in using Add-PSSnapin, only the first one succeeds. Subsequent attempts to add the same snap-in will result in an error:
You can resolve this issue by enclosing it in the following if-statement:
if ( (Get-PSSnapin -Name My.SnapIn -ErrorAction SilentlyContinue) -eq $null ) { Add-PsSnapin My.SnapIn }
It (silently) checks the presence of the requested snap-in. If it does not exist (i.e. the check returns $null, then it loads the snap-in.
Note: replace My.SnapIn with whatever snap-in you wish to load.