Por que esse alias do PowerShell não funciona?

0

Estou aprendendo o PowerShell.

Eu gostaria de entender por que alguns aliases no PowerShell 5.0 no Windows 8.1 não funcionam.

Por exemplo, este comando funciona sozinho:

Get-WmiObject -Class Win32_WinSAT

Mas não quando definido no meu $profile da seguinte forma:

Set-Alias -Name wei -Value 'Get-WmiObject -Class Win32_WinSAT'

A mensagem de erro é a seguinte:

PS C:\> wei
wei : The term 'Get-WmiObject -Class Win32_WinSAT' is not recognized as the 
name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was 
included, verify that the path is correct and
try again.
At line:1 char:1
+ wei
+ ~~~
    + CategoryInfo          : ObjectNotFound: (Get-WmiObject -Class Win32_WinSAT:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

EDITAR:

Eu vejo que os aliases funcionam um pouco diferentes do que no Bash padrão no Linux que eu estou acostumado.

A solução foi simplesmente declará-lo como uma função:

Function wei { Get-WmiObject -Class Win32_WinSAT }
    
por Vlastimil 19.07.2017 / 06:48

1 resposta

1

Normalmente, o PowerShell tenta usar o primeiro espaço para separar o comando dos parâmetros. No entanto, você pode usar uma string para especificar que um espaço é apenas parte de um arquivo. Isso essencialmente permite tratar o espaço como um caractere não especial e permite tratar algo como 'C: \ Arquivos de Programas \ Windows NT \ Acessórios \ notepad.exe' como se fosse uma palavra, não duas.

Isso é essencialmente o que você está fazendo. O PowerShell não pode encontrar um comando chamado 'Get-WmiObject -Class Win32_WinSAT', porque não existe tal comando. (O comando em questão é simplesmente 'Get-WmiObject', não 'Get-WmiObject -Class Win32_WinSAT'.

    
por 19.07.2017 / 12:09