Public/Invoke-ProviderLockedOperation.ps1
|
function Invoke-ProviderLockedOperation { [CmdletBinding()] param( [Parameter(Mandatory)] $Provider, [Parameter(Mandatory, Position = 0)] [Alias('ScriptBlock')] [scriptblock]$Operation ) $l = Get-ProviderLock $Provider if ($l.IsWriteLockHeld) { & $Operation return } $l.EnterWriteLock() try { & $Operation } finally { $l.ExitWriteLock() } } |