A megosztások elérése nagyon egyszerű a PowerShellből: egyszerűen a UNC névvel kell hivatkozni a megosztott könyvtárakra és az ott található fájlokra:
[2] PS C:\> Get-ChildItem \\asus\powershell
Directory: Microsoft.PowerShell.Core\FileSystem::\\asus\powershell
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2008.05.04. 12:55 <DIR> cd
d---- 2008.07.15. 20:01 <DIR> Copy of scripts
d---- 2008.02.28. 21:14 <DIR> demo
Sőt! A TAB-kiegészítés is működik! Valamint az ebben a fejezetben leírt összes cmdlet is működik az UNC nevekkel is, például:
[4] PS C:\> get-acl \\asus\powershell\munka\tömbök.txt
Directory: Microsoft.PowerShell.Core\FileSystem::\\asus\powershell\munk
a
Path Owner Access
---- ----- ------
tömbök.txt ASUS\Administrator BUILTIN\Administrator...
Megosztások létrehozása már nem ilyen egyszerű, de ehhez is van megoldás, melyet a 2.15.4 WMI objektumok metódusainak meghívása fejezetben mutatok egy WMI kifejezés segítségével.
Mindezen kívül a weben megosztott mappák is elérhetők ezekkel a cmdletekkel:
[5] PS C:\> get-childitem \\live.sysinternals.com\Tools
Directory: Microsoft.PowerShell.Core\FileSystem::\\live.sysinternals.co
m\Tools
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2008. 06. 02. 1:16 <DIR> WindowsInternals
-a--- 2008. 05. 30. 17:55 668 About_This_Site.txt
-a--- 2008. 07. 15. 17:39 229928 accesschk.exe
-a--- 2006. 11. 01. 14:06 174968 AccessEnum.exe
-a--- 2006. 11. 01. 22:05 121712 accvio.EXE
-a--- 2007. 07. 12. 7:26 50379 AdExplorer.chm
-a--- 2007. 11. 26. 13:21 422952 ADExplorer.exe
-a--- 2007. 11. 07. 10:13 401616 ADInsight.chm
-a--- 2007. 11. 20. 13:25 1049640 ADInsight.exe
-a--- 2006. 11. 01. 14:05 150328 adrestore.exe
-a--- 2006. 11. 01. 14:06 154424 Autologon.exe
-a--- 2008. 08. 20. 15:18 48986 autoruns.chm
...
A megosztások hozzáférés szabályozása nem is olyan egyszerű dolog, legalábbis ez még nincs „felemelve” PowerShell szintre. Most én sem kezdenék bele ennek nulláról való leprogramozásába, hiszen egy PowerShell MVP kolléga, Vadims Podāns a honlapján ( http://www.sysadmins.lv/ ) közzétette az általa írt ShareUtils szkriptmodult:
[1] PS C:\> Import-Module C:\_munka\powershell\ModulesFree\ShareUtils
[2] PS C:\> Get-Command -Module shareutils
CommandType Name Definition
----------- ---- ----------
Filter Add-SharePermission ...
Function Get-Share ...
Function New-Share ...
Filter Remove-Share ...
Filter Remove-SharePermission ...
Filter Set-Share ...
Filter Set-SharePermission ...
Function Test-ElevatedShell ...
Látható, hogy néhány függvény áll rendelkezésünkre ebben a modulban, amelyek alapvetően WMI objektumokon alapszanak, és amelyekkel egyszerűen kezelhetjük a megosztásokat:
[3] PS C:\> Get-Share
Name ComputerName Description
---- ------------ -----------
ee TIBI-PC
Users TIBI-PC
_munka TIBI-PC
_upload TIBI-PC
[4] PS C:\> Get-Share ee
Name ComputerName Description
---- ------------ -----------
ee TIBI-PC
[5] PS C:\> Get-Share ee | fl *
ComputerName : TIBI-PC
Name : ee
Path : C:\ee
Description :
AllowMaximum : True
MaximumAllowed : 0
SecurityDescriptor : {ShareUtils.SecurityDescriptor.SD}
[6] PS C:\> Get-Share ee | Select-Object -ExpandProperty securitydescriptor
User : Everyone
SIDString : S-1-1-0
Domain :
AccessType : Allow
Permission : Read
AccessMask : 1179817
AceType : 0
AceFlags : 0
Mondjuk, nekem kicsit hiányzik a Get-SharePermission függvény, de ezt a [6]-os sorban leírtak logika alapján végül is akár függvénnyé tudnánk mi magunk is alakítani.
Másik megszokást igénylő sajátossága az, hogy bizonyos dolgokat „commitálni” kell a következő módon:
[7] PS C:\> New-Share -Name UjShare -Path C:\_download | Set-Share
Azaz az új megosztás létrehozása csak a Set-Share kiadása után érvényesül. Ugyanígy, csak a Set‑Share kiadása után érvényesül újabb jog hozzáadása:
[13] PS C:\> Get-Share UjShare | Add-SharePermission -User everyone -AccessType
allow -Permission FullControl | Set-Share
[14] PS C:\> Get-Share ujshare | Select-Object -ExpandProperty securitydescript
or
User : Everyone
SIDString : S-1-1-0
Domain :
AccessType : Allow
Permission : FullControl
AccessMask : 2032127
AceType : 0
AceFlags : 0
User : Everyone
SIDString : S-1-1-0
Domain :
AccessType : Allow
Permission : Read
AccessMask : 1179817
AceType : 0
AceFlags : 0
De ha ezeket a kis furcsaságokat megszokjuk, akkor nagyon jól használható ez az ingyenes modul.