powershell (Close-smbOpenFile) Open Mode = read?
Guten Morgen,
Ich suche nach einer lösung, wie ich mittels der Powershell Konsole alle Open Files mit Close-SmbOpenFile schliessen kann, jedoch soll der Code nur diejenigen schliessen welche auf Open Mode = read sind. Kann mir da Jemand helfen ? die Open Files befinden sich beim Computer Managment unter "Shared Folders/Open Files"
1 Antwort
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!