Dateien anzeigen, die über die Freigabe remote geöffnet sind
-
Dienstag, 17. April 2012 06:13
Hallo,
ich sollte abfragen welche Dateien über die Freigabe geöffnet sind. Also wie das Ergebnis "Computerverwaltung - System - Freigegebene Ordner - Geöffnete Dateien" bzw. "Freigabe- und Speicherverwaltung - Geöffnete Dateien verwalten..." unter Win2008R2 auf dem Mausweg.
Gruß
Armin
Alle Antworten
-
Dienstag, 17. April 2012 09:14
Das Geht mit dem Adsi Provider, WinNT und dem LanmanServer
Code nachträglich Korrigiert ! 17.April.2012 Siehe Unten!
$server = "." $adsi = [adsi]"WinNT://$server/LanmanServer" # User and Computer Sessions $adsi.psbase.invoke("sessions") | foreach { $user = $_.gettype().invokeMember("user","GetProperty",$null,$_,$null) $computer = $_.gettype().invokeMember("computer","GetProperty",$null,$_,$null) "" | select @{n="Name";e={$Name}},@{n="User";e={$user}},@{n="Computer";e={$computer}} } | format-table -auto # OpenFile Resources $adsi.Invoke("Resources") | foreach { $Name = $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) $Path = $_.GetType().InvokeMember("Path", 'GetProperty', $null, $_, $null) $User = $_.GetType().InvokeMember("User", 'GetProperty', $null, $_, $null) $LockCount = $_.GetType().InvokeMember("LockCount", 'GetProperty', $null, $_, $null) "" | select @{n="Name";e={$Name}},@{n="User";e={$user}},@{n="Path";e={$Path}},@{n="LockCount";e={$LockCount}} } | format-table -autoMit ADSI Kannst du aber keine geöffneten Files schliessen!
Desshalb sind eventuell die folgenden Links besser
http://waynes-world-it.blogspot.de/2008/07/enumerating-file-server-resources.html
http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/32bbfb59-f1c1-49ae-b195-db276abddb25/Der zweite Link enthält eine erweiterte Version des Codes aus dem ersten Link. Dort betsteht die Lösung aber (unnötigerweise) aus zwei Dateien (.ps1 und .vb)
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort markiert AucheinName Dienstag, 17. April 2012 12:01
- Bearbeitet Peter KriegelMicrosoft Community Contributor Mittwoch, 18. April 2012 05:18
-
Dienstag, 17. April 2012 12:08
Ich muss den ADSI Code von oben Korrigieren!
Dort werden "nur" die Sessions ausgelesen! Ein User = eine Session!
Ein User kann aber mehrere Files Offen haben! Deshalb müssen die Ressourcen ausgelesen werden!
$server = "." $adsi = [adsi]"WinNT://$server/LanmanServer" # User and Computer Sessions $adsi.psbase.invoke("sessions") | foreach { $user = $_.gettype().invokeMember("user","GetProperty",$null,$_,$null) $computer = $_.gettype().invokeMember("computer","GetProperty",$null,$_,$null) "" | select @{n="Name";e={$Name}},@{n="User";e={$user}},@{n="Computer";e={$computer}} } | format-table -auto # OpenFile Resources $adsi.Invoke("Resources") | foreach { $Name = $_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null) $Path = $_.GetType().InvokeMember("Path", 'GetProperty', $null, $_, $null) $User = $_.GetType().InvokeMember("User", 'GetProperty', $null, $_, $null) $LockCount = $_.GetType().InvokeMember("LockCount", 'GetProperty', $null, $_, $null) "" | select @{n="Name";e={$Name}},@{n="User";e={$user}},@{n="Path";e={$Path}},@{n="LockCount";e={$LockCount}} } | format-table -auto
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Bearbeitet Peter KriegelMicrosoft Community Contributor Mittwoch, 18. April 2012 05:17
-
Mittwoch, 18. April 2012 08:15
Hallo Peter,
erstmal vielen Dank für Deine Hilfe.
Gibt es auch noch einen Parameter, der mir die PID (Prozess-ID) auch noch anzeigen könnte?
Gruß
Armin
-
Mittwoch, 18. April 2012 10:27
Ich glaube weder (User)Sessions noch OpenFiles (Resources) sind Prozesse ! Deshalb haben Sie auch keine Process ID!
Was willst du denn mit der PID machen ?Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' ' -
Donnerstag, 19. April 2012 07:11ich möchte bei _Bedarf eine Datei schließen können. Vielleicht gibt es auch eine andere Möglichkeit.
-
Donnerstag, 19. April 2012 07:35
Na das hört sich schon anders an!
Dafür brachst die Openfile ID!
Wie ich oben schon geschrieben habe kann ADSI keine Dateien schliessen.Die ID die du brauchst ist in dem Obigen Code bei Resources das Attribut Name!
Dann kannst du mit dem DOS Befehl NET FILE <ID> /Close die Datei schliessen.Oder du benutzt den Code aus den Links die ich geposted habe, damit kannst du auch File schliessen.
Please click “Mark as Answer” if my post answers your question and click Vote as Help if my Post helps you.
Bitte markiere hilfreiche Beiträge von mir als Hilfreich und Beiträge die deine Frage ganz oder teilweise beantwortet haben als Antwort.
My PowerShell Blog http://www.admin-source.info
[string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '- Als Antwort markiert AucheinName Montag, 23. April 2012 06:40
- Tag als Antwort aufgehoben AucheinName Montag, 23. April 2012 06:40
-
Montag, 23. April 2012 06:49
Hallo Peter,
genau das was ich wollte, ein offenes File mit "net file" schließen. Leider ist das Attribut "Name" der adsi nicht mit der "net file" ID identisch.
Gruß
Armin
-
Montag, 23. April 2012 14:06
Hallo Peter,
sorry, vergiss meinen vorherigen Beitrag, ich hatte übersehen, dass es nur auf die Ordner zutrifft, die geöffneten Dateien haben die richtigen
ID's.
Vielen Dank nochmals
Armin

