O problema é o método Save()
no objeto de atalho do WScript.Shell
. Parece que essa chamada de API requer que ANSI
nomeie o arquivo, sufocando os caracteres em [System.Text.Encoding]::Default
.
No entanto, aqui está uma solução alternativa: crie um atalho usando ANSI
name bem diferenciado e renomeie-o da seguinte forma:
$file = Get-ChildItem $MyInvocation.MyCommand.Path ### mcve
$doel = "$env:USERPROFILE\Desktop\Test" ### mcve
$locatie = $doel+"\Ω_archief "+$file.Name+".lnk"
$locatieTemp = $locatie.Replace('\Ω_archief','\OMEGA_archief')
$Shell = New-Object -ComObject ("WScript.Shell")
$ShortCut = $Shell.CreateShortcut($locatieTemp)
$ShortCut.TargetPath=$file.Fullname
$Shortcut.Save()
if (Test-Path $locatie) { Remove-Item $locatie }
Move-Item -Path $locatieTemp $locatie
### or Rename-Item instead of Move-Item:
# Rename-Item -Path $locatieTemp $(Split-Path $locatie -Leaf)
###
Observe que as duas primeiras linhas foram adicionadas para satisfazer as regras Mínimo, Completo e Verificável (mcve).