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