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-Key: 297103

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

Printed on: May 18, 2024 at 07:05 o'clock

Member: SaschaRD
SaschaRD Feb 23, 2016 updated at 13:45:48 (UTC)
Goto Top
Hallo cthluhu,

Administrator.de

Gruß, Sascha
Mitglied: 114757
Solution 114757 Feb 23, 2016 updated at 14:27:21 (UTC)
Goto Top
As easy as this
gwmi win32_share | ?{"c:\Pfad\Ordner\datei.xyz" -like "$($_.Path)*"}  

Gruß jodel32
Member: Cthluhu
Cthluhu Feb 23, 2016 updated at 14:27:18 (UTC)
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
Mitglied: 114757
114757 Feb 23, 2016 updated at 14:33:21 (UTC)
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}