$file = [System.io.File]::Open('c:\files\somefile.txt', 'Open', 'Write', 'None')
Вот этот 'None' в четвертом параметре и создает эксклюзивную блокировку (как flock в *nix).
Если файл кем-то уже открыт на чтение, то [System.io.File]::Open вылетит с ошибкой.
Если блокировка будет получена, то с ошибкой будут вылетать вызовы на открытие из других программ.
Но надежнее сделать через переименование как тут уже советовали.