Supondo que todas as imagens estão em uma única pasta, isso funcionaria no powershell:
Get-ChildItem *.jpg | ForEach-Object{Rename-Item $_ -NewName "$(Get-Random)-$($_.Name).jpg"}
É possível que você obtenha colisões de nome em potencial, mas Get-Random por padrão retorna um int não assinado de 32 bits de 0 para Int32.MaxValue (0 a 2147483647). Você certamente poderia adicionar outro Get-Random para reduzir a probabilidade de uma colisão, assim como na resposta Bash.