Por que o PowerShell se comporta de maneira diferente de cmd.exe dado o mesmo comando?

0

A pergunta provavelmente é melhor explicada com o cenário, onde percebi que os dois programas estão operando de maneira diferente.

Eu tive um backup antigo dos meus dias de Linux no meu disco rígido contendo um arquivo chamado con . Como o MSDN declara , con é um nome do dispositivo reservado e não pode ser usado para arquivos:

Do not use the following reserved device names for the name of a file:

CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9

Então eu tive problemas para deletar o arquivo, mas com o nome próprio escapando como eu encontrei em este comando de uma resposta de superusuário , eu pude deletar:

del "\.\F:\Movies\Con Man\Con.Man.2018.720p.WEBRip.x264-[YTS.AM].mp4"

Primeiro, tentei excluir o arquivo com o comando fornecido pelo PowerShell. Ele emitiu um erro dizendo que o diretório ou a unidade não existe. Somente C: \ WINDOWS \ System32 \ cmd.exe foi capaz de excluir o arquivo. Eu corri os dois shells com permissões de administrador.

Então, a partir deste ponto, eu simplesmente queria saber: por que eles se comportam de maneira diferente? Existe algum tipo de nível de permissão sepearate para o PowerShell ou ele está sendo executado em algum tipo de sandbox especial?

    
por narranoid 21.09.2018 / 11:04

1 resposta

0

Nem

O Prompt de Comando é uma continuação do antigo MS-DOS, em que a única maneira de se comunicar com dispositivos especiais era usar os nomes dos dispositivos: PRN, CON, Etc ...

Isso basicamente significa que um arquivo chamado por um dispositivo, seguido por um ponto, é ilegal no Windows. O MS-DOS tem uma solução alternativa para isso, mas o Powershell não tem. Isso basicamente significa que você não pode trabalhar com um arquivo que violou esse nome de arquivo ilegal no Windows.

Então, sim, eles são muito diferentes por esse motivo. Não apenas no que eles podem fazer, mas toda a sintaxe é diferente. O Powershell pode ser usado para fazer coisas que o Prompt de Comando pode, mas não o contrário.

    
por 21.09.2018 / 11:11