powershell (Close-smbOpenFile) Open Mode = read?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Weder Get-SmbOpenFile noch Close-SMBOpenFile haben Zugriff auf das Openmode -Flag

siehe:

Get-SmbOpenFile| Select-Object -Property *

Wenn du den Modus, in welchem die Datei geöffnet ist, zugrunde legen willst bleibt Dir nur das Consolprogramm OpenFiles.exe

Eigentlich sollte einfach:

openfiles /disconnect /o read

...genügen um die zum Lesen geöffneten Dateien zu schließen.

es geht natürlich auch mit einem Schluß durchs Auge in's Knie...😝:

   #Offene Dateien/Ordner mit dem alleinigen Attribut 'lesen' audfiltern | mit  hilfe eines selbstgebastelten Headers  ein  Array  of Object kreieren|wir  brauchen  nur  eine Liste der  Pfadnamen...
$OFList=openfiles /query   /fo CSV /v /nh | find '"Lesen"'| find /v '"+"'|convertfrom-csv -Header "computer","id","user","os","locks","mode","path"|%{$_.path}
  #mal anzeigen was  wir mit find gefiltert  haben
$OFList
  #eigentlich  Doppeltgemoppelt... Liste mit dem nochmal einlesen, damit wir die für Close-Smb...  notigen Daten bekommen| mit unserer "Lesen"-list abgleichen
get-SMBOpenFile| ? { $OFList -contains $_.path}|Close-SMBOpenFile -force -PassThru


...du kannst auch weitere Filter nachschalten... damit erwischt Du dann nur zum Lesen Geöffneten mit den String 'Shared Folders' im Namen...

get-SMBOpenFile| ? { $OFList -contains $_.path}|? { $_.path -like "*Shared Folders*"}|Close-SMBOpenFile

Du wirst unter Openfiles.exe jede Menge rm finden, wo read und write als Open Mode steht... , das funzt jedoch nicht mit deutschen Rechnern openfiles nutzt lokalisierten Output..

soviel erst mal dazu... Keine Ahnung ob es so funktioniert... das habe ich aus der Hüfte geschrieben... und konnte leider nicht testen...

PS: das Script benötigt Adminrechte!

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren