Como incentivar os administradores do Windows a escolher scripts? [fechadas]

26

Quando trabalhei como administrador no meu primeiro emprego, fiquei frustrado porque nossos processos de administração com servidores Windows eram uma série de apontamentos e cliques; nunca poderíamos igualar o nível de eficiência com os servidores Unix, que tinham um grupo de scripts de shell para automatizar grande parte do trabalho. Logo li sobre o WSH e o ADSI e não perdi tempo aprendendo o quanto de automação eu era capaz de obter com scripts.

Houve um problema enorme - quase nenhum dos meus colegas do Windows estava realmente interessado em aprender scripts. Eles pareciam felizes com as tarefas de clicar com o mouse manualmente e nunca estavam animados com a perspectiva de usar scripts para fazer o trabalho em seu nome. Lutei para convencê-los a adquirir habilidades de script, apesar dos evidentes aumentos de eficiência. Deixei esse emprego em busca de uma carreira de desenvolvimento de software em período integral a partir de então.

Quase uma década trabalhando em vários ambientes e clientes diferentes, ainda encontro administradores do Windows possuindo principalmente esse "clima" geral em que evitavam scripts o máximo possível. Apesar do crescente nível de acessibilidade, as tecnologias do servidor Windows estão se abrindo para scripts e automação. Estou quase certo de que a maioria dos administradores são administradores exatamente porque eles absolutamente odeiam executar qualquer tipo de tarefas de programação. Quais são alguns meios para incentivar e motivar os administradores que os scripts podem realmente ajudá-los a longo prazo?

icelava
fonte

Respostas:

21

Como administrador do Unix e do Windows que executa muitos scripts do Unix e quase nenhum script do Windows, eu diria que isso se deve em parte ao incrível constrangimento dos utilitários e APIs de script do Windows e à dificuldade (talvez não-óbvio seria uma palavra melhor) de executar as coisas remotamente em uma máquina Windows.

Quero dizer, WTF é isso?

Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Parte do problema, penso eu, é que não é uma API. No Unix, os administradores estão criando scripts para a automação dos utilitários de linha de comando que eles já usam. No Windows, você precisa usar essa API que não é familiar em todos os níveis. Por exemplo, o que significa "personificar"? Este é um conceito trivial para um administrador do Unix, que provavelmente usa sudo e su e já conhece os scripts setuid. Mas é improvável que um administrador do Windows esteja familiarizado com isso; eles podem saber sobre "runas" (ou a opção equivalente da GUI), mas são muito mais propensos a efetuar login como administrador quando precisarem fazer algo administrativo.

E a documentação sobre scripts no Windows é péssima. Por um lado, é muito mais "linguagem interpretada" do que script, novamente porque eles estão usando uma API (desconhecida) e não comandos com os quais eles já estão familiarizados. Mas acho que nunca encontrei algo útil na documentação da Microsoft que não foi levado ao encontrar alguém que já estava fazendo algo próximo ao que eu queria que me apontava na direção certa. Em nenhum lugar parece haver uma lista de coisas que você pode fazer. É como se você já estivesse familiarizado com os componentes internos do Windows para fazer as coisas mais básicas.

Não que os scripts Unix nem sempre pareçam ruído de linha. Mas um administrador do Unix pode começar com um script que não faz nada além de executar comandos simples que ele já conhece. ("Eu sempre tenho que executar esses três comandos em sucessão. Se eu os juntar em um arquivo, posso fazê-lo em um comando!") E, em seguida, ele poderá progredir mais tarde à medida que se sentir confortável com a situação. Por outro lado, não há como um administrador criar um script "faça login no servidor como administrador; clique em Iniciar → Configurações → Painel de Controle; clique duas vezes em Sistema; clique na guia Nome do Computador, etc." Sim, o que quer que ele estivesse tentando acessar provavelmente é apresentado por meio de uma API em algum lugar, mas não há como ele encontrá-lo gradualmente.

Portanto, para responder à pergunta "como podemos fazer com que os administradores do Windows executem mais scripts?", A resposta é tornar os scripts menos estranhos. Como fazer isso, eu não sei.

Honestamente, a resposta está nas mãos da Microsoft. Não há razão para que eles não possam ter um utilitário de linha de comando para fazer tudo o que é feito via GUI. (Na verdade, existem muitos deles por aí agora, mas não são anunciados, estão mal documentados e são inconsistentes.) Também não há razão para que não haja alguma dica na GUI sobre o que esse botão realmente faz. Tenha uma dica de ferramenta que mostra o objeto da API que está sendo modificado. Ou documente-o na janela Ajuda.

Não há problema em proteger os usuários dos internos, mas o Windows parece se esforçar para ocultar ativamente esses internos, mesmo daqueles que querem encontrá-los.

wfaulk
fonte
16
Por outro lado, WTF é isso? ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh
squillman
4
Bom ponto sobre o fato de que o script do Windows - particularmente o VB é muito estranho até você começar a descobrir. O quão bem o PowerShell foi um longo caminho para torná-lo mais amigável ao administrador. É mais próximo do script Bash do que do VBS.
Zypher 02/10/2009
2
BTW apenas jogar o advogado do diabo :) WMI é feio ...
squillman
1
RI MUITO. Primeiro, quem diabos faria isso? Segundo, o administrador pelo menos já está familiarizado ls. Terceiro, eu consideraria sede awkseria relativamente avançado, e certamente na mesma arena das APIs do Windows de que estou falando. Terceiro e meio, enquanto alguns (muitos) comandos de script do Unix são complexos, você não precisa começar por aí & mdash; você pode fazer coisas simples, como simplesmente ter uma lista de comandos que você já está familiarizado com o & mdash; enquanto que, se você quiser fazer praticamente qualquer coisa com o Windows, terá essa enorme curva de aprendizado em primeiro lugar. Atualizando a resposta, no entanto.
Wfaulk #
3
Gosto da maneira como, quando você faz algo em uma GUI no Exchange 2007, ele apenas gera um script do PowerShell e o executa.
Richard Gadsden
8

Dê a eles uma tarefa que realmente só pode ser realizada por meio de um script - por exemplo, uma vez tive que criar um script para criar centenas de pastas e permissões personalizadas para cada pasta e precisávamos atualizá-las DIARIAMENTE. Se eles fizessem isso manualmente, esse seria o único trabalho deles. O script, que usava o CACLS entre outras coisas para redefinir as permissões com base na saída de um arquivo de texto delimitado, demorou cerca de um dia para ser aperfeiçoado (o script básico foi feito em cerca de uma hora).

Quando você começa a ver o que pode fazer com scripts, pode ser uma grande vitória.

Multiverse IT
fonte
+1 Ótimo ponto, há coisas que simplesmente não podem ser feitas apontando e clicando.
squillman
sim, os scripts que escrevi naquela época automatizaram a criação de diretórios, permissões de DACLs, configurações de sites do IIS etc. Mas meus colegas não estavam motivados por isso. Levou um deles dois meses inteiros para aprender a escrever uma função de script para retornar uma data no formato de sequência.
icelava 5/10/09
O PS, como você provavelmente sabe, não usa CACLS, XCACLS ou suas heranças de ACL são interrompidas.
9139 Richard Gadsden
5

Certa vez, contratei um administrador de sistemas que se recusou a fazer qualquer 'programação' que tentei mostrar a ele como liderar pelo exemplo. O melhor que pude tirar dele foi usar o código existente e modificar a atribuição de variáveis ​​ou os nomes de host, etc. para fazer um trabalho. Algumas pessoas simplesmente não se incomodam com a programação, então você precisa diminuir a barreira para elas.

A Microsoft está entrando nisso. No SQL Server, já faz um tempo que você clica em itens na GUI do Management Studio e despeja um script t-sql do que você acabou de fazer. Isso é ótimo, especialmente para o administrador de sistemas do Windows, que não é tão inclinado à programação.

Percebi que o System Center Virtual Machine Manager possui o mesmo recurso de script de exibição, exceto que despeja um script do PowerShell. Eu acho que muitas outras linhas de produtos também estão introduzindo isso.

Como motivar os administradores para scripts? uma decisão difícil, um bom administrador é um administrador preguiçoso e isso significa um administrador que fará o script o máximo possível. Um administrador que tem tempo para clicar nas coisas não é muito produtivo! Sobrecarregar seus administradores com tanto trabalho, que eles não têm escolha a não ser criar scripts.

Nick Kavadias
fonte
Como se atreve a me chamar de preguiçosa ?! Oh, espere ... #
214 squillman
6
a preguiça é uma virtude para o administrador de sistemas!
26440 Nick Kavadias
Helllllll sim!
squillman
2
Na minha experiência, a maioria dos administradores continua sobrecarregada com cliques manuais e leva mais tempo do que nunca para concluir seu trabalho. :-) Eu acho que existem diferentes categorias de preguiça, algumas são preguiçosas para pensar e só querem clicar sem pensar; alguns têm preguiça de clicar e pensam em reduzir isso.
Icelava 5/10/09
quando você mostra a eles como pode substituir o trabalho por algum código, eles choram de vergonha e mudam de maneira ... ou não, nesse caso, você os despede.
Nick Kavadias 7/10/09
4

Concordo plenamente com o seu post. Infelizmente, acho que não há muito que possa ser feito sem o suporte do gerenciamento e dos processos que impõem o uso de scripts. Com uma escolha, as pessoas sempre seguem o que é familiar e o que é fácil. Às vezes, isso pode parecer um ponto negativo, mas há momentos em que simplicidade e familiaridade são uma vantagem.

Por um lado, o sistema Windows é implicitamente destinado a ser simples / fácil, enquanto os sistemas Unix / Linux são muito mais difíceis e menos tolerantes. Então, quem pode culpar os administradores por seguirem o caminho de menor resistência? Enquanto você, eu ou várias outras pessoas reconhecemos o poder dos scripts, as pessoas acabarão aprendendo de uma maneira ou de outra. Normalmente, os administradores que aprendem sobre scripts aprendem da maneira mais difícil. Eu gosto de trabalhar de forma mais inteligente, outros podem gostar de trabalhar.

Quais são alguns meios para incentivar e motivar os administradores que os scripts podem realmente ajudá-los a longo prazo?

Eu costumava pensar que você poderia motivar as pessoas, mas a realidade é que, a menos que você esteja encarregado delas, a probabilidade de uma "motivação" bem-sucedida é extremamente baixa. Minha atitude hoje em dia é: quem quiser aprender, eu ajudarei. Não seja um vendedor de um produto que ninguém deseja, independentemente de precisar. Quando você ajuda / ensina apenas uma pessoa motivada (por qualquer motivo), elas serão o catalisador da mudança. Você não. Apenas meus dois centavos.

osij2is
fonte
1
+1 Você pode levar um cavalo à água ...
squillman
2
... mas você não pode fazê-lo esquiar na água.
osij2is
@ Squillman: Você disse exatamente o que eu estava pensando. Minha opinião sobre isso é: Se você tem uma habilidade que os outros não têm, use-a para se vender e avançar (o que isso significa para você). Ajudar os outros a avançar é certamente admirável, mas você não pode arrastá-los chutando e gritando.
Evan Anderson
@Evan: Você acha que ensinar um aluno disposto é contraditório para "se vender e seguir em frente"? Se um dos administradores do Windows solicitasse minha assistência (em termos de script), hesitaria em fazê-lo, mas, em última análise, o trabalho em equipe não significa ir além e ajudá-los? Apenas curioso para ler seus pensamentos.
osij2is
1
@ osij2is: Eu sou culpado por ajudar tanto os "alunos dispostos" que definitivamente desperdicei algumas "oportunidades" para faturar mais horas, ganhar mais dinheiro etc. Uma das minhas "missões" na vida é avançar na uso de computadores que, em última análise, possam melhorar a vida de alguém. Se alguém me procura com um desejo sincero de aprender, fico mais do que feliz em transmitir o que posso. Dito isto, se um "conserto" sem transferência de conhecimento é o que se deseja, também posso fazer isso. Às vezes isso me deixa triste não ser capaz de "ensinar um homem a pescar", mas se é isso que as chamadas situação para ...
Evan Anderson
2

Um mantra que uso é "trabalhe de maneira mais inteligente, não mais difícil". Realizar qualquer processo mais do que algumas vezes significa que geralmente existe uma maneira de executá-lo automaticamente, com um clique do mouse, um script do bash ou outro método. Do meu ponto de vista, isso pessoalmente me libera para executar tarefas mais importantes que não são tanto o "trabalho manual" da administração do sistema.

Aqueles que desejam evitar scripts podem ter várias coisas passando pela cabeça. Talvez eles gostem da interface GUI e não queiram aprender linha de comando ou programação. Talvez eles pensem que, ao escrever algo, eles estão basicamente reduzindo sua própria importância. De qualquer forma, esse não é o tipo de funcionário que eu gostaria de ter e a relutância em fazer qualquer tipo de script mostra que tipo de funcionário eles são. Prefiro ter um solucionador de problemas do que um administrador de sistema "burro".

Quanto a encorajá-los e motivá-los, eu diria apenas para fazer o que você estava fazendo, mostrar os ganhos de produtividade e como isso pode facilitar o trabalho deles. Para alguns, ser um administrador do sistema Windows é apenas um salário e será difícil motivá-los a ir além da mentalidade de apontar e clicar que funcionou para eles nos últimos 10 anos.

Dave Drager
fonte
Boa lembrança sobre o "solucionador de problemas"; muitas pessoas que conheço querem apenas um folheto de instruções que lhes diga o que fazer para cada problema possivelmente concebível. Eles não querem pensar no que está acontecendo; basta dar as etapas de 1 a 23 para resolver esse problema.
icelava 5/10/09
Costumo chamar essas pessoas de "botões", como o notável futuro trabalhador de colarinho azul George Jetson.
Wfaulk # 8/09
2

Você mencionou alguns problemas a serem superados, que você mencionou, que muitos administradores não desejam envolver-se em programação, mesmo em nível tão baixo quanto os scripts. O outro está relacionado a isso, e isso é uma questão de controle. Quando um administrador está executando uma tarefa manualmente, ele sabe exatamente o que está acontecendo em cada estágio. Muitos administradores podem achar que, ao substituí-lo por um script, estão perdendo o controle sobre o processo, principalmente se não entenderem scripts e não escreverem o script (e não quiserem escrevê-lo).

Eu acho que isso é mais um problema para os administradores do Windows do que para o Unix, pois os scripts são uma grande parte da administração do Unix há muito tempo e geralmente é algo que os administradores do Unix aprendem desde o início, onde a administração do Windows e sua GUI inerente O processo leva a um processo mais manual e os scripts podem parecer não naturais.

Infelizmente, levar os desenvolvedores a esse nível é uma batalha difícil. Para que o administrador ainda sinta que está no controle, ele precisa entender o que o script está fazendo, e realmente precisa entender e aprender a script, e a única maneira de convencê-lo a fazer isso é se ele realmente entender o que o script pode fazer com eles

Está tudo muito bem dizendo que isso tornará as coisas mais rápidas, facilitará a vida etc., mas você pode provar isso a elas? Encontre uma tarefa que eles odeiam, que eles devem executar regularmente e tente automatizá-la. Se você puder executar essa tarefa horrível e transformá-la em um script de clique único, eles o amarão, mas o mais importante é que poderão ver o benefício do uso de scripts.

Sam Cogan
fonte
Escrever os scripts com bom feedback, talvez algumas pequenas controle interativo - coisas user-friendly ^^
Oskar Duveborn
1
Comecei a aprender perl assim que percebi que podia pegar um trabalho de rotina particularmente horrivelmente longo e desagradável e automatizá-lo. Não olhou para trás desde então.
Twirrim
Meu ponto é todas essas "tarefas horríveis" que eles ainda preferem executá-las manualmente. :-)
icelava 5/10/09
despeda-os e substitua-os por um único administrador, que é um uber-scripter. Estarei mais barato
Nick Kavadias 15/10/2009
2

[suspiro] Isso é muito prevalente no mundo do Windows, embora eu questionasse sua afirmação sobre a maioria não querer pagar e aprender a escrever. A melhor coisa que já fiz na minha carreira de administrador de sistemas foi aprender VB e Perl, o que levou ao VBS, o que levou muitas outras coisas.

Se apenas mostrá-los não funciona para motivar, um truque que eu gosto de usar é lançar declarações sutis na frente da gerência :) Chame de sucção, se quiser, mas não é. Mostre aos tomadores de decisão os benefícios, geralmente ele começa a proliferar através do grupo. Não seja um idiota sobre isso, no entanto.

Em uma nota mais sutil, é difícil (se não impossível) mudar alguém. Lidere pelo exemplo!

squillman
fonte
5
"Sabe de uma coisa, tenho certeza de que posso escrever isso para que não tenhamos que gastar mão-de-obra contínua realizando isso". Palavras poderosas na frente da gerência :)
Twirrim
1
Eu sempre acreditei que apenas no mundo Windows alguém pode se chamar um administrador com absolutamente nenhum conhecimento de programação. Outro comentário que você pode comentar é "Por que você está fazendo isso manualmente? É para isso que temos computadores".
317 John Gardeniers
Infelizmente, desde que há muito tempo desenvolvo uma carreira de consultoria e desenvolvimento, os administradores que encontro agora são principalmente os dos meus clientes. Eu nem sempre têm a oportunidade de fazê-los ficar mal na frente de sua gestão ou de TI levar :-)
icelava
1

Esta questão é altamente subjetiva. Embora eu concorde com a eficiência e o maior controle que o script oferece, por que ele precisa ser um mandato? Por que você precisa incentivar as pessoas a usar scripts apenas porque você gosta de usá-los? Por que não deixar as pessoas optarem por usar as ferramentas de que gostam e preferem?

Essa pergunta também ilustra um viés comum que existe no mundo da TI: que, se eu não escrevo, não devo ser tão inteligente ou tão bom quanto alguém que escreve, e isso é errado. Conheci muitas pessoas que poderiam fazer scripts melhor do que eu, mas elas não conseguiam criar sub-redes para salvar suas vidas ou descobrir como executar um rastreamento de rede ou configurar o SQL Server para usar o AWE, ou não sabiam qual inicialização. arquivo ini era para etc., etc.

joeqwerty
fonte
2
O script deve ser incentivado porque é uma prática recomendada comprovada (nada foi mencionado sobre ser um mandato, nem acho que estava implícito). Sinceramente, não vi o viés "você não é tão inteligente", mas não duvido que ele exista. Eu facilmente descartar essas pessoas como tolos ...
squillman
2
Como é subjetivo? Como você disse, o script melhora a eficiência. Não há nada de errado com uma empresa que exija ferramentas ou processos que aumentem a eficiência. Certamente não há nada de errado com um colega de trabalho tentando incentivar outras pessoas a desenvolver uma habilidade que os tornará melhores administradores de sistema.
Brian
3
@ Squillman, que diz que é uma prática recomendada e que não é subjetivo por si só. O que é melhor prática para mim pode não ser para você. Existe um estudo que diz que 90% das empresas consideram o script a melhor prática. @Brian: Quem disse que os torna melhores administradores de sistema? Meu colega de trabalho pode criar scripts, mas não pode sub-rede, enquanto eu posso criar sub-redes, mas não posso criar scripts, então quem é o melhor? Nenhuma ofensa pretendida, apenas jogando o advogado do diabo aqui.
31209 joeqwerty
3
@ Joeqwerty: o script é poderoso em comparação com o apontar e clicar, pois o script (corretamente) pode executar mais tarefas em menos tempo e com mais precisão do que nós, seres humanos humildes, jamais poderíamos fazer manualmente. Talvez a frase deva ser: "script é uma prática melhor ". Seu argumento (advogado do diabo) é mais subjetivo do que a própria alegação. "O que é melhor prática para mim pode não ser para você." Isso pode ser verdade, mas isso não significa que não é a melhor prática. Pode significar que você não pode ou não sabe como fazê-lo. Esse é um problema diferente por si só.
osij2is
2
Mas sua opinião está errada. ;) Sério, porém, acho que evitar scripts é como evitar saber como sub-rede. Nenhum deles é bom. Quero dizer, se você concorda que o script aumenta a eficiência e o controle, por que você está argumentando que devemos tratar como iguais os que o evitam? Se você contratasse alguém para arar o seu campo, prefere contratar o cara com um trator ou o cara com um boi?
Wfaulk 5/10/09
1

Honestamente, você pode levar um cavalo à água, mas não pode fazê-lo beber.

Eu vim como um SysAd no Corpo de Fuzileiros Navais cerca de 10 anos atrás, onde há uma grande diferença entre ser um administrador e ser um codificador. Ser um Coder geralmente significa que você fica preso ao lidar com o site de projetos de animais de estimação do CO (fazendo pouco do seu trabalho real ...).

Por isso, resisti a aprender a codificar, mas depois que decidi experimentar, tive uma explosão.

Quanto a atrair alguém, tente usar o script AD / LDAP para atraí-lo. (Eu acho que é um pouco mais acessível do que lidar com o WMI.) Atribua uma progressão de tarefas, diga "me dê os nomes de usuário e endereços de email do pessoas do grupo XYZ ".

Escrevi este código para encontrar todos os usuários que não eram membros de nenhum dos grupos especificados: https://github.com/gwaldo/LDAP-Inverse-Group-Membership-Report

Quanto aos recursos, consulte o Microsoft Scripting Guys (que possui excelentes artigos e tutoriais) e o Scriptomatic2, que eu adoro pesquisar no WMI.

gWaldo
fonte
0

A próxima pergunta: por que eles deveriam roteirizar? Isso determinará a resposta.

Presumivelmente, você escreve porque é mais eficiente. Nesse caso, você pode mostrar a todos os outros ou indicar à gerência que existem maneiras mais eficientes de administrar os sistemas e esperar que eles tirem vantagem disso em uma medida de corte de custos.

Alguém com autoridade pode exigir scripts, exigindo a existência de scripts para lidar com a maioria das coisas. O quão bem isso funcionará depende de várias coisas; se apenas declarado assim, é provável que os scripts permaneçam lamentavelmente inadequados e obsoletos, enquanto os administradores funcionam normalmente.

Há também a questão de exatamente como isso está afetando você. Isso o incomoda ou sua vida seria melhor se seus colegas administradores escrevessem coisas?

David Thornley
fonte
O principal efeito é que os administradores perdem seu tempo executando tarefas manuais repetidas em várias máquinas - retornos mais longos - que podem afetar nosso cronograma de desenvolvimento (sempre nunca o suficiente).
Icelava 5/10/09
1
e não esqueça que as tarefas manuais são propensas a erros.
317 John Gardeniers
0

Na verdade, tive outro pensamento. Em relação ao fato de os administradores juniores do Windows estarem acostumados às interações da GUI, talvez ajude se você os iniciou com a interação da GUI de script, com algo como AutoIt . Isso permitiria que eles entrassem na porta em relação ao script e, ao mesmo tempo, usassem as ferramentas que eles já conhecem, em vez de jogar fora as ferramentas existentes e fazê-las aprender novas ferramentas e scripts ao mesmo tempo.

Em seguida, quando eles se acostumarem com a idéia de criar scripts em geral, poderão passar para scripts que não sejam da GUI. Mesmo se não estiver, a automação de cliques em botões ainda pode economizar muito tempo.

wfaulk
fonte
0

Eu defini scripts como "Documentação que faz o trabalho para você".

Gerente: Vá passar inúmeras horas criando documentação, que um aluno da primeira série pode entender, que ficará obsoleta até o final da semana, para que seus colegas de trabalho cliquem com o botão direito do mouse na Tarefa-X.

Funcionário: Eu tenho um script que executa a Tarefa-X, eu poderia apenas dar isso a eles.

Gerente: Claro, depois de terminar a documentação que acabei de solicitar, documente seu script também, com um fluxograma.

Nathan Hartley
fonte
0

Eu defini scripts como "Documentação que faz o trabalho para você".

Gerente: Vá passar inúmeras horas criando documentação, que um aluno da primeira série pode entender, que ficará obsoleta até o final da semana, para que seus colegas de trabalho cliquem com o botão direito do mouse na Tarefa-X.

Funcionário: Eu tenho um script que executa a Tarefa-X, eu poderia apenas dar isso a eles.

Gerente: Claro, depois de terminar a documentação que acabei de solicitar, documente seu script também, com um fluxograma.

Não esqueça que a documentação deve estar em um documento do MS Word para facilitar a leitura do servidor.

brenbart
fonte
Eu esqueci esse requisito.
Nathan Hartley