Not sure if that title make sense, and I am not sure I understand this code, but it seems to work:
Function TestArrayOfGUIDsArguemnt { PARAM( [ValidateScript({-not @( $_ | where {$_ -notmatch("^(\{){0,1}[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12}(\}){0,1}$") }).Count})]$ArguemntToTest ) write-host "Valid!" } Tests: TestArrayOfGUIDsArguemnt -ArguemntToTest "Jeff" TestArrayOfGUIDsArguemnt : Cannot validate argument on parameter 'ArguemntToTest'. TestArrayOfGUIDsArguemnt -ArguemntToTest "9e4c1911-f42a-42d9-af05-2a3df2823197" Valid! TestArrayOfGUIDsArguemnt -ArguemntToTest "9e4c1911-f42a-42d9-af05-2a3df2823197","557b8323-f630-40d3-b438-b2229806c47d" Valid! TestArrayOfGUIDsArguemnt -ArguemntToTest "9e4c1911-f42a-42d9-af05-2a3df2823197","557b8323-f630-40d3-b438-b2229806c47d","Jeff" TestArrayOfGUIDsArguemnt : Cannot validate argument on parameter 'ArguemntToTest'. Hope that helps some one?
I got the idea from here
Instead of using the [ValidateScript] attribute, why not specify that the input should be an array of Guids?
Function TestArrayOfGUIDsArgument {
Param([Guid[]] $ArgumentToTest)
Write-Host “Valid!”
}
Looks better, agree? 🙂
Did not know that one! Thanks