Проблема заключается в Save()
методе в WScript.Shell
ярлыке объекта. Похоже, что этот вызов API требует ANSI
имен для создания файла, таким образом подавляя символы из [System.Text.Encoding]::Default
.
Однако вот обходной путь: создайте ярлык, используя хорошо различимое ANSI
имя, а затем переименуйте его следующим образом:
$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) ###
Обратите внимание, что первые две строки добавлены для соответствия правилам Minimal, Complete и Verifiable example (mcve).