Quais linguagens de script são úteis no Windows? [fechadas]


48

Quais linguagens de script são úteis para a automação do Windows?


10
Eu dei +1 porque vejo uma pergunta interessante por trás do que você escreveu. No entanto, acho que "main" é uma escolha infeliz de palavras que você deve editar para tornar menos vaga. Talvez "mais usado", "melhor suportado" ou "recomendado", dependendo do que você quer dizer. Bem-vindo ao SuperUser! :)
Brennan Vincent

2
@Brennan Vincent: Essa é uma ótima sugestão, mas alterar a palavra "principal" neste momento pode prejudicar o espírito das respostas. Acho que seu comentário fala muito sobre esse assunto, e é melhor deixar a questão como está. (+1 para você por isso, a propósito).
Randolf Richardson 25/05

1
No momento, acho que essa pergunta se enquadra na categoria subjetiva. No entanto, com uma pequena modificação na redação, como sugere Brennan, acho que poderia ser uma entrada interessante na wiki da comunidade.
21411 Joe

1
Parece subjetivo para mim também. Para linguagens de script, "principal" ou "melhor" ou "preferido" difeririam com base na tarefa específica que está sendo realizada e na habilidade e experiência de um indivíduo.
Iszi 25/05

3
Entendo a pergunta: qual é a linguagem de script nativa do Windows hoje em dia?
Synetech 25/05

Respostas:


36
  1. PowerShell
  2. Host de script do Windows
    a. VBScript
    b. JScript
  3. Arquivos em lote

PowerShell (v2.0)

No Windows 7 e no Server 2008, é razoável considerar o PowerShell como ele é fornecido com o Windows, e também é fundamental administrar software de servidor como o Lync e Exchange, pois há um conjunto inteiro de comandos disponíveis para eles. Há uma lista crescente de recursos disponíveis, consulte o Script Center para obter detalhes.

Host de scripts do Windows

O Windows Script Host (WSH) é tecnicamente um host de script para os mecanismos de script ActiveX. VBScript e JScript (implementação de JavaScript da Microsoft) são os dois mecanismos instalados por padrão. Muitos outros estão disponíveis como código aberto, incluindo Perl, PHP e Ruby.

VBScript

Usando sintaxe semelhante ao VB6 e VB.NET, os VBScripts não têm acesso fácil às classes .NET (o Powershell é escrito em .NET e, portanto, tem acesso a todas as funções .NET). O VBScript aproveita principalmente o serviço WMI e os objetos que ele expõe.

Exemplo: Isso cria um ponto de restauração.

Set wmi, whatName, errResults
wmi = GetObject("winmgmts:\\.\root\default:Systemrestore")
whatName = InputBox("Enter a name for the Restore Point",WScript.ScriptName)
errResults = wmi.CreateRestorePoint (whatName, 12, 100)
If errResults <> 0 then
    Wscript.Echo "Error " & errResults & " : Unable to create Restore Point"
End If

JScript

Você também pode escrever o mesmo script usando o ECMAScript:

var wmi = WScript.GetObject("winmgmts:\\.\root\default:Systemrestore");
var whatName = WSHInputBox("Enter a name for the Restore Point",Script.ScriptName);
var errResults = wmi.CreateRestorePoint(whatName, 12, 100);
if(errResults != 0) {
    WScript.Echo("Error "+ err + " : Unable to create Restore Point");
}

Arquivos de lote de comando

Obviamente, existe o bom e velho arquivo em lotes. Eles não precisam de introdução.


7
Quanto ao Windows 7 e Server 2008, seria o Powershell 2.0
sshow 25/05

@sshow concordar em ser específica cerca de 2,0
Nick Josevski

"Eles não precisam de introdução." Mas o que precisa de um Extro ...
Glenn Jackman

16

Ainda escrevo arquivos em lote do DOS, mesmo no Windows 7. Para a maioria das tarefas, isso ainda funciona muito bem e é muito simples de trabalhar (também, muitos dos comandos do DOS, como "FOR", foram aprimorados ao longo do tempo e fornecem mais opções e funcionalidades que não estavam disponíveis há mais de uma década).

Para mim, um arquivo em lotes do DOS ainda é a principal linguagem de script do Windows (certamente é tradicional), mas todos têm necessidades e preferências diferentes. Há muitas coisas que os arquivos em lotes do DOS não podem fazer (as linguagens de script também podem apresentar limitações) e, nas raras ocasiões em que encontrei isso, examino quais são minhas outras opções (geralmente é Perl, ou às vezes poderia escrever um pequeno programa ou um aplicativo inteiro).

Compreender o que você precisa realizar é uma etapa muito importante para decidir quais ferramentas usar. A familiaridade com as ferramentas é outro aspecto importante que pode limitar suas opções. Se você está tentando decidir qual linguagem de script [ou programação] aprender, espero que isso seja útil para você.


10
Se por linguagem de script "principal" você quer dizer "mais antiga e mais usada", essa é definitivamente a resposta certa. No entanto, cmdé realmente uma monstruosidade, facilmente a pior linguagem de script de shell que eu já tive a infelicidade de usar.
JSB #

3
Eu também uso arquivos em lote quando o script precisa ser usado em outras versões do Windows. Se você está lidando apenas com o Win7 / Server 2008, o PowerShell é o caminho a seguir.
jtreser

5
+1 Eu sei que a Microsoft quer que o PowerShell seja o mesmo , mas, por enquanto, se você quiser enviar a alguém um script que esteja executando o "windows", será necessário enviar a ele um arquivo em lotes do DOS. O PS é ótimo para determinadas versões do Windows para determinadas tarefas e elas expõem muito poder, mas os arquivos em lotes são universais.
Alan Jackson

Em algumas empresas, por exemplo, no banco em que trabalho atualmente, a política de execução impede que scripts PS sejam executados. Assim, estou aprendendo lotes para traduzir meus scripts PS. Portanto, há algumas situações em Batch ainda é necessário ...
T_d

Concordei com sua resposta em 2011, mas com o Windows 10 Creators Update, a Microsoft tornou o PowerShell o padrão para pressionar Win + X, digitar 'cmd' no Menu Iniciar e pressionar Ctrl ao clicar com o botão direito do mouse no Explorer. Portanto, agora considero o Powershell a linguagem de script padrão para o Windows, desde o Windows 10 Creators Update e os scripts herdados BAT / CMD.
Jonas

10

Isto vai depender pra quem você perguntar. Alguns nunca saem de lote, outros adoram vbscript, outros amam PowerShell, outros como AutoIt. Depois, existem os independentes da plataforma, como Python e Perl, que alguns juram por tudo.


2
+1 por mencionar linguagens de script de plataforma cruzada (o Perl é o meu favorito e sei que o Python também vem ganhando popularidade ao longo dos anos).
Randolf Richardson 25/05

2
+1 para Perl. É útil em muitas plataformas e possui alguns módulos específicos do Windows.
RedGrittyBrick

1
Eu acrescentaria que o TinyPerl é uma maneira muito útil de incorporar um script Perl simples com poucas dependências. Ele será compilado em um pequeno arquivo EXE no Windows. tinyperl.sourceforge.net
Benoit

4

Suponho que a "linguagem" de script oficial para Windows seria (e desde o Win95) o Windows Script Host .

Tecnicamente, o WSH não é uma linguagem em si, mas sim um ambiente (não GUI) que expõe interfaces COM para permitir que você use (quase) qualquer linguagem de script que desejar, para executar tarefas do SO, até coisas que não possuem uma maneira nativa incorporada ao idioma (por exemplo, Ruby não tem uma maneira embutida de fazer login no Windows ou TCL / TK não tem uma maneira embutida de mostrar a caixa de diálogo Executar).

Você pode ter visto alguns arquivos WSF que podem incluir vários idiomas em um arquivo, mas geralmente os scripts WSH são escritos em um idioma e distribuídos com uma extensão correspondente à versão de script dessa linguagem (por exemplo, VBS para scripts VisualBasic, PYS para PythonScript, etc. .)


[estremecendo intensifica], eu costumava escrever isso. Você sabe que pode executar scripts WSH arbitrários no IE? Não é tão singular? Bom como eles abrem grande parte de sua API para a web. (Disclaimer, este cinismo é datado por XP-SP3)
ThorSummoner

A história sobre o WSH e o IE não é assim tão simples: msdn.microsoft.com/en-us/library/bb250473(v=vs.85).aspx (apenas um exemplo de restrição, dependendo das zonas de segurança) E o IE 11 não nem suporta mais VBScript, exceto no modo legado. Não confie no IE para executar scripts WSH.
Jonas

4

Eu diria que o AutoIt, ele oferece desenvolvimento muito rápido e fácil no Windows e é muito rígido associado a ele. Isso significa que tarefas que normalmente exigem muito código em outros idiomas podem ser executadas literalmente em uma linha no autoit. Recursos como compilação direta para exe também são muito úteis.


Como monoceres, eu uso o AutoIt . É extremamente versátil para prototipagem rápida e conceitos de teste em poucos minutos. Além disso, ele foi projetado para automação, e é para isso que vejo muitas pessoas usando o Powershell. Faça uma tentativa :) #
James James

1
O AutoIt é bem legal, especialmente para funções de interface do usuário (agindo como um usuário digitando em uma caixa de diálogo, pressionando botões etc.), mas seria muito difícil chamar a linguagem de script Windoze "principal". Hoje em dia, a maioria dos meus colegas (em uma equipe de mais de 20 administradores do Windows) nem sequer ouviu falar disso.
Ewall 25/11

2

Os outros idiomas apontados nesta pergunta (VbScript, PowerShell, Batch) são muito populares e suportados. Se você já conhece uma linguagem de script e se sente à vontade - de qualquer forma, vá com isso.

Se você está prestes a investir na escolha de um novo idioma, sugiro dois idiomas para você, depende do trabalho que você está tentando fazer:

JavaScript (via WSH) - use JavaScript se desejar usar vários Objetos de automação, instanciando-os e chamando seu Modelo de Objetos. Você pode criar um Objeto de automação para praticamente tudo, do servidor Exchange ao WMI e aos documentos do Office. Há um suporte para depuração com o Visual Studio (com o argumento / x). Além disso, um investimento em JavaScript será útil em HTML.

Perl - use Perl se puder iniciar outros programas, manipular sua saída, executar expressões regulares. Embora pareça que esse idioma esteja atualmente em declínio, ainda é muito popular, muito bem suportado por um grande idioma da comunidade. Você também deve considerar esse idioma para se comunicar com outros serviços (não necessariamente Windows), como um JIRA na empresa ou EC2 na Amazon. A depuração é suportada no eclipse com EPIC, que também é um bom ambiente IDE (coloração de sintaxe, etc.). Existem módulos no CPAN para tudo. O conhecimento em Perl será útil quando for necessário automatizar em máquinas que não sejam Windows.


1
Python é uma alternativa muito boa para perl, embora as coisas que você usaria os dois para são praticamente idênticos
Phoshi

1

Nos primeiros dias, havia o VBScript seguido pelo Batch. No ambiente corporativo com Windows 7 e Server 2008 R2 puros, a nova linguagem de script Powershell está chamando muita atenção.


Você parece estar expressando um grande desejo de que o PowerShell assuma o controle. Seria justo supor que você "deseja que seja" o PowerShell? ;-D
Randolf Richardson

Eu prefiro PowerShell sobre VBScript sim.
EKS 25/05

1

Eu recomendo a recomendação para Perl, se você quiser escrever alguns scripts em Perl. As pessoas com quem trabalho utilizaram e recomendaram com êxito o CLR Script (um pouco antigo) e, para a interação de scripts da web, o iMacros


1

Pode ser quase tudo, dependendo do que você tenta automatizar. Ele varia de arquivos em lote e do PowerShell a autohotkey e Selenium (se você precisar automatizar algumas tarefas relacionadas à GUI).

Geralmente, não é um problema aprender uma, se você precisar adicionar algumas modificações ou suportar scripts já escritos. Se você precisar desenvolver algo novo - escolha o idioma / caminho com base nos requisitos e no que você já sabe.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.