Ah, PowerShell. Here is the magic set of syntax to do it with a reasonably simple and comprehensible pipeline:
Starting with
$FileList = @([PSCustomObject]@{ Name = "11" }, [PSCustomObject]@{ Name = "2" }, [PSCustomObject]@{ Name = "1" })
This will convert the objects into a sequence of integers:
$FileList `
| Select-Object -ExpandProperty Name ` #instead of objects with a 'name' property, just use the name property as the object
| ForEach-Object { ([int]$_) } #convert each value into an int
Given that, you can get the next number by sorting, taking one element, and adding 1 to that element, in a similar fashion (new line added only for clarity)
#as above
$FileList `
| Select-Object -ExpandProperty Name `
| ForEach-Object { ([int]$_) } `
| Sort-Object -Descending `
| Select-Object -First 1 ` #grab only the maximum number
| ForEach-Object { $_ + 1 }; #increment that maximum to the next number
You can further take that pipeline and use it to generate the file name from the number, and probably pipe that into a call to create the file/directory