Pensa-se que os administradores de Windows apenas utilizam o ambiente gráfico. Em contraponto, um bom administrador de Linux raramente admitirá usar o GUI, não obstante a evolução notável que muitas ferramentas gráficas para Linux sofreram nos últimos anos (Refira-se que linha de comandos num sistema Linux é muito mais versátil, complexa e útil que a existente num sistema Windows). Esquecendo preconceitos, qualquer administrador de sistemas deverá pelo menos conhecer a linha de comandos não obstante a plataforma em que trabalha. Apresenta-se neste artigo uma introdução básica da linha de comandos tendo como pano de fundo o Windows 2008. Refira-se linha de comandos e não a Windows PowerShell que é uma framework da Microsoft para execução de comandos, automatização de tarefas e possibilidade de usar extensivamente uma linguagem própria de scripting.
A linha de comandos encontra-se no Start menu no Windows 2008 por defeito. Caso não esteja poderá aceder-lhe fazendo Start >> digitar Cmd na Search Box >> Enter. Em alternativa Start >> All Programs >> Acessories >> Command Prompt
Se o logon no sistema for feito com a conta de administrador, a linha de comandos será executada em modo de administração. Caso o log on seja feito com outra conta, poderá aceder na mesma à linha de comandos mas com privilégios reduzidos. Para executar uma propmpt numa conta não administrativa com direitos de administração:
Botão direto do rato sobre da Command prompt >> Escolher “Run as administrator” e inserir credenciais.
Existem os seguintes atalhos básicos para o teclado
Cursor cima | Evoca o último comando |
Cursor baixo | Evoca o próximo comando |
Page Up | Evoca o comando mais antigo digitado na sessão |
Page Down | Evoca o último comando digitado na sessão |
Cursor esquerdo | Move o cursor para trás um caracter |
Cursor direito | Move o cursor para a frente um caracter |
CTRL+Cursor esquerdo | Move o cursor para trás uma palavra |
CTRL+Cursor direito | Move o cursor para a frente uma palavra |
Home | Move o cursor para o ínicio da linha |
End | Move o cursor para o fim da linha |
Esc | Limpa a linha de comandos |
O comando doskey guarda num buffer os últimos 50 comandos efetuados. Poderá usar o comando c:\doskey /history para ver os comandos, o comando c:\>doskey /listsize = 100 para alterar para 100 o número de comandos a guardar pelo buffer (Poderá alterar este parâmetro em modo gráfico com Botão direito na barra de título da linha de comandos >> Properties >> Buffer Size. Para ver mais opções para este comando ou qualquer outro, execute c:\doskey /? .
Uma função muito útil do comando doskey é a sua utilização para a criação de macros. Imaginemos que desejamos parar e iniciar um serviço muitas vezes, ou seja, executar os comandos sc stop netlogon e sc start logon. Podemos criar as macros com os comandos c:\>doskey stpnl = sc stop netlogon e c:\>doskey sttnl = sc start netlogon . Assim, cada vez que quisermos parar e iniciar o serviço bastará digitar c:\>stpnl e c:\>sttnl . Note-se que estas macros são armazenadas temporariamente, ou seja, quando fechar a prompt onde foram configuradas, desaparecem.
Pode copiar e colar texto da linha de comandos para o clipboard o comportamento difere se a opção Quik Edit Mode (Botão direito na barra de título da linha de comandos >> Properties >> Quik Edit Mode) está ativa. Caso esteja, basta selecionar o texto com o rato e digitar enter para o copiar. Se não estiver ativo, é necessário clicar com o botão direito do rato na linha de comandos>> Mark >> selecionar o texto com o rato e digitar enter para o copiar.
Os sistemas Windows não são case-sensitive como os sistemas Linux. Assim sendo os comandos RepAdmin /SyncAll | Repadmin /syncall | REPADMIN /SYNCALL são iguais. Para efeitos de legibilidade, na documentação os comandos quando contêm duas ou mais palavras costumam ter a primeira letra dessas palavras em maiúsculas.
Existem contudo algumas exceções. Nomeadamente quando se instalam ou adicionam serviços a um sistema Windows 2008 Server Core Edition é necessário respeitar maiúsculas e minúsculas. Por exemplo o comando c:\>start ocsetup dhcpservercore não funcionaria, sendo necessário executar c:\>start ocsetup DHCPServerCore para iniciar o processo de instalação do serviço de DHCP no servidor. A linha de comandos interpreta um espaço como a separação entre parâmetros.
Quando um parâmetro tem um ou mais espaços é necessário colocar aspas para o delimitar. Por exemplo, veja-se a sintaxe do comando que atribui um endereço IP a uma interface de rede: netsh interface ipv4 set address name = Name of NIC static ip address sub-net mask . Se o nome da interface de rede for Local area connection o comando a executar deverá ser:
C:\>netsh interface ipv4 set address name = "local area connection" static 192.168.1.15 255.255.255.0
Uma variável é um repositório com uma determinada informação. As varáveis permitem aceder a essa informação e agilizar a construção dos comandos.
Se pretendermos ver a pasta de instalação do Windows:
C:\echo %systemroot%
C:\Windows
Variável | Descrição |
%programfiles% | Caminho da pasta onde se encontram instalados os programas |
%systemdrive% | Caminho da diretoria root |
%appdata% | Caminho onde as aplicações instalam informação |
%userdomain% | Nome do domínio |
%logonserver% | Nome do controlador de domínio que validou a conta |
%processor_architecture% | Arquitetura do processador (32 ou 64 bits) |
%allusersprofile% | Localização do perfil da conta |
Uma das grandes vantagens das variáveis é poderem ser utilizadas na construção de comandos. Por exemplo, para editarmos o ficheiro windowsupdate.log podemos executar o comando c:\notepad %systemroot%\windowsupdate.log
Podemos criar variáveis com o comando: [set variable-name = value] . Por exemplo C:\>set var1 = test , atríbui a string test à variável com o nome var1.
Podem-se modificar um comando com a adição de um switch. Um switch é precedido por um espaço e um traço “-“ ou barra “/” . Por exemplo, para limpar a tabela de cache de DNS podemos usar os comandos c:\ipconfig /flushdns ou c:\ipconfig –flushdns . Curiosamente o comondo ipconfig/flushdns , sem espaço, funcionaria. Como tal não sucede em muitos comandos, aconselha-se a utilizar sempre espaços.
O comando dir lista diretorias. Para afinarmos uma pesquisa podemos usar wildcards que representam um ou mais caracteres. Existem dois disponíveis na linha de comandos: o asterisco “*” que se refere a nenhum ou mais caracteres e o ponto de interrogação “? ” que apenas se refere a um único caractere. Vejam-se os exemplos:
Wildcard | Descrição |
C:\dir *.txt | Lista todos os ficheiros com extensão txt |
C:\>dir a* | Lista todos os ficheiros que comecem com um a |
C:\>dir a*.txt | Lista todos os ficheiros que comecem com um a e tenham extensão txt |
C:\>dir week?.txt | Lista todos os ficheiros que comecem com week e tenham apenas mais um carater, com extensão txt |
Para listar, na linha de comandos, quase todos os comandos disponíveis e uma breve descrição de cada um (alguns comandos avançados para funções muito específicas não surgem na listagem), basta executar o comando help.
Para obter informação mais detalhada sobre um comando em particular, usar o switch /? . Por exemplo, o comando ipconfig /? vai mostrar as opções disponíveis e um sucinta explicação de cada uma delas. Existe também a possibilidade de obter informação com a palavra help antecedida do comando Exemplo: c:\help dir . Contudo, para muitos comandos essa opção não devolve nenhum resultado. Assim sendo a opção /? é a mais aconselhável.
Convém perceber a notação utilizada para pode usufruir da informação devolvida pelos comandos help. Veja-se o quadro seguinte:
Notação | Descrição | Exemplo |
Texto sem parêntesis ou chavetas. | Itens que devem ser digitados tal como surgem | ipconfig |
[Texto com parêntesis retos] | Itens opcionais | echo[mensagem]. O comando echo mostra se a função está ou não ativa no sistema. O comando echo %programfiles% devolve o conteúdo da variável |
{Texto com chavetas} | Escolher um dos itens requeridos | gpupdate [/target:{computer | user}] . Se usar o switch /target deve fornecer o nome do computador ou do utilizador |
| Barra vertical | Exclusão mútua | gpresult [/s system [/u username [/p [password]]]] [/scope scope] [/user targetusername] [/r | /v | /z] [(/x | /h) <filename> [/f]] Se usar as opções /r ou /v não pode usar a opção /z |
… | Itens que podem ser repetidos | [winrm operation resource_uri [-switch:value[-switch:value] ...] [@{key=value[;key=value]...}] Os pontos indicam que podem ser inseridos múltiplos parêmtros na mesma linha. |
A linha de comandos mostra a atual localização. No caso de ter sido executada por um administrador, o caminho apresentado será c:\Windows\system32> . Para editar um ficheiro noutra localização poderá simplesmente executar o comando c:\windows\system32>notepad c:\temp\meuficheiro.txt . Obviamente se o ficheiro se encontrar no mesmo sítio (caminho atual referenciado pela linha de comandos) não é necessário fornecer a localização .
Depreende-se que não foi necessário fornecer a localização do programa notepad para editar o ficheiro. Tal sucede porque o Windows sabe o caminho para o programa. O Windows server 2008 R2 tem na sua variável path os caminhos para c:\windows , c:\windows\system32 , c:\windows\system32\wbem e da powershell c:\windows\system32\windowspowershell\v1.0 se esta for instalada.
Pode ver a path com os comandos c:\echo %path% e c:\>path .
Pode manipular a path com o comando c:\>path = c:\mypath que atribui para a atual sessão da linha de comandos a pasta c:\mypath , sendo que quando a sessão for encerrada cessa a atribuição. O comando c:\>path = %path%;c:\mypath adiciona o novo caminho aos constantes na variável path. Quando encerrada a sessão, cessa a atribuição.
Vejamos uma lista simples de comandos:
- dir texto*.* /s : Procura ficheiros que comecem com "texto". O switch /s faz com que a pesquisa seja feitas em todas as subdiretorias.
- cd temp/fotos: Muda para a pasta especificada
- cd .. : Move uma pasta para cima. Notar que tem um espaço entre cd e ..
- cd \ : Move para a raiz da drive onde se encontra
- md pasta1: Cria uma pasta com o nome pasta1
- rd pasta1: Elimina a pasta mas sse estiver vazia
- rd pasta /s /q: Elimina a pasta e todos os ficheiros e sub-diretorias (switch /s) sem pedido de confirmação (switch /q).
Refira-se pela sua importância os comandos de direcionamento de output > e >> com dois exemplos:
- > : gpresult /z > grouppolicies.txt cria o ficheiro grouppolicies.txt adicionando-lhe o output do comando gpresult /z. Se o ficheiro já existir escreve por cima do mesmo.
- >> : gpresult /z >> grouppolicies.txt adiciona o output do comando gpresult /z ao ficheiro não escrevendo por cima.