cthluhu
Goto Top

Powershell: Freigabename finden, wenn lokaler Pfad bekannt ist

Hallo zusammen!

Auf einem Win 2012 R2 Server habe ich ein Powershell Script (nicht von mir erstellt, sondern übernommen) welches eine Liste von Dateinamen generiert.
Ich möchte jetzt per Powershell rausbekommen über welche Freigabe die Dateien in der Liste zugänglich gemacht werden.
Leider bin ich nicht gerade fit in Powershell und würde mich über eure Hilfe freuen.

Ein Beispiel zur Veranschaulichung:
Dateiname lautet D:\folder1\folder2\file1.txt
Ordner D:\folder1 ist freigegeben.

Mein gesuchter Befehl sollte also aus dem String "D:\folder1\folder2\file1.txt" den Freigebenen Ordner "D:\folder1" rausbekommen.

mfg

Cthluhu

Content-ID: 297103

Url: https://administrator.de/contentid/297103

Ausgedruckt am: 24.11.2024 um 01:11 Uhr

SaschaRD
SaschaRD 23.02.2016 aktualisiert um 14:45:48 Uhr
Goto Top
Hallo cthluhu,

Administrator.de

Gruß, Sascha
114757
Lösung 114757 23.02.2016 aktualisiert um 15:27:21 Uhr
Goto Top
As easy as this
gwmi win32_share | ?{"c:\Pfad\Ordner\datei.xyz" -like "$($_.Path)*"}  

Gruß jodel32
Cthluhu
Cthluhu 23.02.2016 aktualisiert um 15:27:18 Uhr
Goto Top
Danke Jodel32!

Dein Tipp hat mich auf die richtige Spur geführt (musste nur noch die Special Shares wegfiltern, weil D$ und IPC$ immer match). Komplettlösung für mich lautet:
Get-SmbShare | where {$_.special -eq $false} | ?{"$fullfilename" -like "$($_.Path)*"}  


Mit freundlichen Grüßen

Cthluhu
114757
114757 23.02.2016 aktualisiert um 15:33:21 Uhr
Goto Top
da reicht dann aber auch ein einziges Where Object face-wink, und die überflüssigen Anführungszeichen um die Variable braucht es auch nicht:
Get-SmbShare | ?{$fullfilename -like "$($_.Path)*" -and !$_.special}