Hello readers
I i’m working on a new function that will create a new folder and make it a share @ the same time.
Now i’m having a small problem when i try to create a share by WMI i get a return message what says "
21 Error 21: Invalid Parameter
i hope that some of you cant see what my problem is.
i think its about converting the 2 varible’s into 1 what gives me the problem.
BTW its my first code so if you have some tips as well feel free
Function new-sharedfolder{ [CmdletBinding()] param( [Parameter( Mandatory=$True, valuefrompipeline=$True, valuefrompipelinebypropertyname=$True)] [string[]]$folders, [parameter( Mandatory=$true)] [validatelength(1,1)] [string[]]$drive, [Parameter( Mandatory=$True)] [string[]]$users, [parameter (mandatory=$true)] [validateset("ReadAndExecute","Modify")] [string[]]$permission, [parameter()] [string[]]$computername = "localhost" ) BEGIN{} PROCESS{ foreach($folder in $folders){ $folderstatus = $True Write-Verbose "Creating folder $folder " Try { new-item $drive":\"$folder -ItemType directory -ErrorAction stop | Out-Null } catch { Write-Warning "Folder $sharepath1 already excist" $folderstatus = $False } if ($folderstatus) { foreach($user in $Users){ Write-Verbose "updating ACL for $user" $acl = Get-Acl $drive":\"$folder $acl.SetAccessRuleProtection($True, $False) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) $rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$User","$permission", "ContainerInherit, ObjectInherit", "None", "Allow") $acl.AddAccessRule($rule) Set-Acl $drive":\"$folder $acl } Write-Verbose "Creating Share $folder " $Share = [WMICLASS] "\\$computername\Root\Cimv2:Win32_Share" $result = $Share.Create("$sharepath, $folder, 0") switch ($result.ReturnValue) { 0 {$text += "has been success fully created" } 2 {$text += "Error 2: Access Denied" } 8 {$text += "Error 8: Unknown Failure" } 9 {$text += "Error 9: Invalid Name"} 10 {$text += "Error 10: Invalid Level" } 21 {$text += "Error 21: Invalid Parameter" } 22 {$text += "Error 22 : Duplicate Share"} 23 {$text += "Error 23: Redirected Path" } 24 {$text += "Error 24: Unknown Device or Directory" } 25 {$text += "Error 25: Net Name Not Found" } } #Create Custom return object and Add results $return = New-Object System.Object $return | Add-Member -type NoteProperty -name ReturnCode -value $result.ReturnValue $return | Add-Member -type NoteProperty -name Message -value $text #Return result object $return Write-Verbose "reading folder information" Get-Acl $drive":\"$folder | Format-List } } } } new-sharedfolder -folder "labs2" -drive e -users "First1.Last1","first1.last2" -permission ReadAndExecute -Verbose