Sua sintaxe está correta. O problema é um personagem indesejado escondido no final da sua declaração. Observe como o ~
no erro está sublinhando o que parece ser o vazio após o seu código. Você tem uma Marca de pedido de bytes (BOM) indesejada depois da chave final. Observar seu código em um editor hexadecimal revela isso:
Resolução
Apartirdofinaldoseucódigo,pressionebackspaceatéachavedefechamentodesaparecer.Issogarantiráquevocêremoveualistademateriais.Depoisqueachavedefechamentoforremovida,adicione-anovamente.Emalternativa,copieestaversãorevistadasuadeclaração:
gci*.png|%{ren$_$_.name.replace(" ","-")}
Informações adicionais
EF BB BF
( 
) é a BOM de UTF-8. Este problema está presente apenas no seu post original. Como sua postagem foi editada, não vejo o caractere da lista de materiais em seu código do Powershell (embora eu não veja que ele tenha sido explicitamente removido por meio de uma edição). Se você fosse revisar o histórico de sua postagem original, poderá capturar a BOM indesejada.