SPE - Find items that have invalid names

 Get-ChildItem "/sitecore/content" -Recurse | Where-Object -Property Name -notmatch "^[\w\*\$][\w\s\-\$]*(\(\d{1,}\)){0,1}$"