ascii no powershell (wscript.shell)

0

Estou criando um script que cria atalhos para nossa unidade de arquivamento.
Eu gostaria que o nome do arquivo começasse com um sinal Omega; Então, o Windows sempre classifica na parte inferior.
A saída do meu script mostra o sinal ômega; mas o link que é criado altera esse ômega para O (maiúscula O). Manualmente eu posso fazer um atalho que começa com o sinal de ômega, então ele deve estar relacionado a wscript.shell

parte relevante do script:

$locatie = $doel+"\Ω_archief "+$file.Name+".lnk"
$Shell = New-Object -ComObject ("WScript.Shell")
$ShortCut = $Shell.CreateShortcut($locatie)
$ShortCut.TargetPath=$file.Fullname
$Shortcut.Save()
    
por Brtrnd 29.09.2016 / 11:36

1 resposta

0

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).

    
por 30.10.2016 / 18:36