I needed to export and import Cluster Shares and set Share Permissions so here is how I did it
Note that you can create a Folder Tree for testing from shares.log:

gc .\shares.log | % {$_.split("#")[2]} | sort -property length | % {md $_}

Useful information & Stuff I learned
-----------------------------------
Win32 Classes
http://msdn.microsoft.com/en-us/library/aa394084(v=vs.85).aspx

System.Security.Principal.Namespace
http://msdn.microsoft.com/en-us/library/39sc95wz.aspx

WMI type accelerator.. really handy.
http://tfl09.blogspot.com/2008/12/powershells-wmiclass-type-accelerator.html

What's psbase and why do I have to use it?
http://blogs.msdn.com/b/powershell/archive/2006/11/24/what-s-up-with-psbase-psextended-psadapted-and-psobject.aspx

 

 

PowerShell
Edit|Remove
# THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS"   
# WITHOUT WARRANTY OF ANY KIND.  
 
# Name: export-shares.ps1   
# Author: Frank Czepat  
# Date: 28.01.2012 
# v1.0 
# 
# Export Shares where Type is Disk Drive and Path is like D:  
# 
$type = 0 
$path = "D:*" 
gwmi win32_share -filter "type = $type" | sort name | % {if ($_.path -like $path) {$_.name + "#" + $_.description + "#" + $_.path}} | out-file .\shares.log -append
 
PowerShell
Edit|Remove
# THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS"   
# WITHOUT WARRANTY OF ANY KIND.  
 
# Name: import-shares.ps1   
# Author: Frank Czepat  
# Date: 28.01.2012 
# v1.0 
# 
# Import shares from Input File and set Share Permissions to Authenticated Users/Full Control 
# Format of the Input File 
# Share Name#Share Description (Optional)#Share Path 
 
$sid = $null 
$account = $null 
 
# Create the share DACL 
# NT Authority\Authenticated Users is a well-known SID = S-1-5-11 ;-) 
$account = new-object system.security.principal.ntaccount("nt authority" + "\" + "authenticated users") 
$sid = $account.translate([system.security.principal.securityidentifier]) 
 
# You don't want to end with an empty DACL 
if (!($sid)) {exit} 
 
# Trustee = SID 
$trustee = ([wmiclass]"win32_trustee").createinstance() 
$trustee.sidstring = $sid.value 
 
# ACE, Mask = Full Control, Type = Allow 
$ace = ([wmiclass]"win32_ace").createinstance() 
$ace.accessmask = "2032127" 
$ace.acetype = "0" 
$ace.trustee = $trustee 
 
# Add ACE to DACL 
$sd = ([wmiclass]"win32_securitydescriptor").createinstance() 
$sd.dacl = @($ace.psobject.baseobject) 
 
# Create Shares 
gc .\shares.log | % { 
    $folderpath = $_.split("#")[2] 
    $sharename = $_.split("#")[0] 
    $type = "0" 
    if (!($_.split("#")[1])) {$description = $nullelse {$description = $_.split("#")[1]} 
 
    $share = [wmiclass]"win32_share" 
    $share.create($folderpath,$sharename,$type,$null,$description,"",$sd| % {` 
    if ($_.returnvalue -eq 0) {"SUCCESS $sharename $folderpath"else {"ERROR $sharename $folderpath = " + $_.returnvalue}` 
    } 
}