Como administrador de Unix y Windows que realiza muchas secuencias de comandos de Unix y casi ninguna secuencia de comandos de Windows, diría que se debe en parte a la increíble incomodidad de las utilidades y API de secuencias de comandos de Windows, y la dificultad (tal vez no sea obvio) una mejor palabra) de ejecutar cosas de forma remota en una máquina Windows
Quiero decir, ¿qué es esto?
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Parte del problema, creo, es que no es una API. Bajo Unix, los administradores están en gran medida programando la automatización de las utilidades de línea de comandos que ya usan. En Windows, debe usar esta API que no le resulta familiar en todos los niveles. Por ejemplo, ¿qué significa "suplantar"? Este es un concepto trivial para un administrador de Unix, que es probable que use sudo y su y esté familiarizado con los scripts setuid. Pero es poco probable que un administrador de Windows esté familiarizado con nada de eso; Es posible que sepan sobre "runas" (o la opción de GUI equivalente), pero es mucho más probable que inicien sesión como administrador cuando necesiten hacer algo de forma administrativa.
Y la documentación sobre las secuencias de comandos en Windows es miserable. Por un lado, es mucho más "lenguaje interpretado" que script, de nuevo porque están usando una API (desconocida) y no comandos con los que ya están familiarizados. Pero no creo que haya encontrado nada útil en la documentación de Microsoft que no se haya encontrado al encontrar a alguien que ya estaba haciendo algo parecido a lo que quería que me indicara la dirección correcta. En ninguna parte parece haber una lista de cosas que puedes hacer. Es como si ya tuvieras que estar familiarizado con las partes internas de Windows para hacer las cosas más básicas.
No es que los scripts de Unix no se vean a menudo como ruido de línea. Pero un administrador de Unix puede comenzar con un script que no hace más que ejecutar comandos simples que ya conoce. ("Siempre tengo que ejecutar estos tres comandos en sucesión. ¡Si solo los pongo en un archivo, puedo hacerlo en un solo comando!") Y luego puede progresar más tarde a medida que se sienta cómodo con la situación. Por el contrario, no hay forma de que un administrador escriba "inicie sesión en el servidor como administrador; haga clic en Inicio → Configuración → Panel de control; haga doble clic en Sistema; haga clic en la pestaña Nombre del equipo; etc." Sí, lo que sea que intentara llegar probablemente se presente a través de una API en alguna parte, pero no hay forma de que lo encuentre de forma incremental.
Entonces, para responder la pregunta "¿cómo podemos hacer que los administradores de Windows realicen más secuencias de comandos?", La respuesta es hacer que las secuencias de comandos sean menos extrañas. Cómo hacer eso, no lo sé.
Honestamente, la respuesta está en manos de Microsoft. No hay razón para que no puedan tener una utilidad de línea de comandos para hacer todo lo que se hace a través de la GUI. (En realidad, hay muchos de ellos por ahí ahora, pero no se anuncian, están pobremente documentados y son inconsistentes). Tampoco hay razón para que no haya alguna pista en la GUI sobre qué ese botón realmente lo hace. Tenga una información sobre herramientas que muestre el objeto API que se está modificando. O documentarlo en la ventana de Ayuda.
No hay ningún problema en proteger a los usuarios de los elementos internos, pero Windows parece hacer todo lo posible para ocultar activamente esos elementos internos, incluso de aquellos que quieren encontrarlos.
ls -1 *old* | awk '{print "mv "$1" "$1}' | sed s/old/new/2 | sh
ls
. En tercer lugar, consideraríased
yawk
estar relativamente avanzado, y ciertamente en el mismo ámbito que las API de Windows de las que estoy hablando. Tercero y medio, mientras que algunos (muchos) comandos de secuencias de comandos de Unix son complejos, no tiene que comenzar allí & mdash; puede hacer cosas simples como simplemente tener una lista de comandos con los que ya está familiarizado & mdash; mientras que si desea hacer prácticamente cualquier cosa con Windows, primero debe escalar esta enorme curva de aprendizaje. Sin embargo, actualizando la respuesta.Dales una tarea que realmente solo se puede hacer a través de un script; por ejemplo, una vez tuve que crear un script para la creación de cientos de carpetas y permisos personalizados para cada carpeta y tuve que actualizarlo DIARIAMENTE. Si hicieran esto manualmente, sería su único trabajo. El script, que usó CACLS entre otras cosas para restablecer los permisos en función de la salida de un archivo de texto delimitado, tardó aproximadamente un día en perfeccionarse (el script básico se realizó en aproximadamente una hora).
Cuando comienzas a ver lo que puedes hacer con las secuencias de comandos, puede ser una gran victoria.
fuente
Una vez contraté a un administrador de sistemas que se negó rotundamente a hacer 'programación'. Traté de mostrarle el camino en el ejemplo. Lo mejor que pude obtener de él fue usar el código existente y modificar la asignación de variables o los nombres de host, etc. para hacer un trabajo Algunas personas simplemente no se molestan con la programación, por lo que debe reducir la barrera para ellos.
Microsoft está haciendo caminos en esto. En SQL Server, ha sido posible durante un tiempo hacer clic en cosas en la GUI de Management Studio y luego descargar un script t-sql de lo que acaba de hacer. Esto es genial, especialmente para el programa de Windows no tan inclinado de programación.
Me di cuenta de que System Center Virtual Machine Manager tiene la misma función de secuencia de comandos de vista, excepto que descarga una secuencia de comandos de PowerShell. Creo que muchas otras líneas de productos también están introduciendo esto.
¿Cómo motivar a los administradores para que hagan scripts? una decisión difícil, un buen administrador es un administrador perezoso y eso significa un administrador que escribirá el script tanto como sea posible. ¡Un administrador que tiene tiempo para hacer clic en las cosas no es muy productivo! Sobrecargue a sus administradores con tanto trabajo, que no tienen más remedio que hacer un script
fuente
Estoy totalmente de acuerdo con tu publicación. Desafortunadamente, no creo que se pueda hacer mucho sin el apoyo de la administración y los procesos establecidos que imponen el uso de scripts. Dada una opción, las personas siempre irán con lo que es familiar y fácil. A veces, esto puede parecer un punto negativo, pero hay veces en que la simplicidad y la familiaridad son una ventaja.
Por un lado, el sistema de Windows está implícitamente destinado a ser simple / fácil, mientras que los sistemas Unix / Linux son mucho más difíciles y menos indulgentes. Entonces, ¿quién puede culpar a los administradores por tomar el camino de menor resistencia? Si bien usted, yo o muchas otras personas podemos reconocer el poder de las secuencias de comandos, las personas eventualmente aprenderán de una forma u otra. Por lo general, los administradores que se resisten a las secuencias de comandos aprenden de la manera difícil. Me gusta trabajar de manera más inteligente, a otros simplemente les gusta trabajar.
Solía pensar que podrías motivar a las personas, pero la realidad es que, a menos que estés a cargo de ellas, la probabilidad de una "motivación" exitosa es extremadamente baja. Mi actitud en estos días es: aquellos que quieran aprender, los ayudaré. No sea un vendedor de un producto que nadie quiere, independientemente de si lo necesita. Cuando usted ayuda / enseña a una sola persona que está motivada (por cualquier razón), serán el catalizador del cambio. No tú. Solo mis dos centavos.
fuente
Un mantra que sigo es "Trabaja de manera más inteligente, no más duro". Hacer cualquier proceso más de unas pocas veces significa que, por lo general, hay una forma en que puede realizar un script para que se haga automáticamente con un clic del mouse, un script bash u otro método. Desde mi punto de vista, esto personalmente me libera para realizar tareas más importantes que no son tanto el "trabajo manual" de la administración del sistema.
Aquellos que desean evitar las secuencias de comandos pueden tener varias cosas en su cabeza. Quizás disfrutan de la interfaz GUI y no quieren aprender la línea de comandos o la programación. Tal vez piensan que al escribir algo, básicamente están reduciendo su propia importancia. De cualquier manera, este no es el tipo de empleado que me gustaría tener y una reticencia a hacer cualquier tipo de scripting muestra qué tipo de trabajador son. Prefiero tener un solucionador de problemas en lugar de un administrador de sistema "tonto".
En cuanto a alentarlos y motivarlos, diría que simplemente hagan lo que estaban haciendo, muestren las ganancias en productividad y cómo pueden facilitar su trabajo. Para algunos, ser un administrador del sistema de Windows es solo un cheque de pago, y será difícil motivarlos a ir más allá de la mentalidad de apuntar y hacer clic que les ha funcionado en los últimos 10 años.
fuente
Hay un par de problemas que tiene que superar, usted ha mencionado uno, que muchos administradores no quieren involucrarse en la programación, incluso a un nivel tan bajo como la creación de secuencias de comandos. El otro está relacionado con esto, y esto es una cuestión de control. Cuando un administrador realiza una tarea manualmente, sabe exactamente lo que está sucediendo en cada etapa. Muchos administradores pueden sentir que al reemplazar esto con un script están perdiendo el control sobre el proceso, particularmente si no entienden los scripts y no escribieron el script (y no quisieron escribirlo).
Creo que esto es más un problema con los administradores de Windows que con los de Unix, ya que las secuencias de comandos han sido una gran parte de la administración de Unix durante mucho tiempo y, en general, es algo que los administradores de Unix aprenden desde el principio, mientras que la administración de Windows y su GUI inherente La ness conduce a un proceso más manual y las secuencias de comandos pueden parecer poco naturales.
Desafortunadamente, lograr que los desarrolladores superen este obstáculo es una batalla difícil. Para que el administrador todavía sienta que tiene el control, necesita comprender lo que está haciendo el guión, por lo que realmente necesita comprender y aprender a guiar, y la única forma en que lo hará es si realmente entiendo lo que las secuencias de comandos pueden hacerles
Todo está muy bien diciendo que hará las cosas más rápidas, facilitará la vida, etc., pero ¿puedes demostrárselo? Encuentra una tarea que odian, que tienen que hacer regularmente e intenta automatizarla. Si puede tomar esta horrible tarea y convertirla en un script de un solo clic, lo amarán, pero lo más importante es que pueden ver el beneficio de usar scripts.
fuente
[suspiro] Esto es demasiado frecuente en el mundo de Windows, aunque cuestionaría tu afirmación acerca de que la mayoría no quiere hacer pony y aprender a escribir. Lo más grandioso que he hecho en mi carrera de administrador de sistemas fue aprender VB y Perl, lo que condujo a VBS, que condujo MUCHAS otras cosas.
Si solo mostrarlos no funciona para motivar, un truco que me gusta usar es lanzar declaraciones sutiles frente a la gerencia :) Llámalo una mierda si quieres, pero no es así. Muestre a los tomadores de decisiones los beneficios, a menudo comienza a proliferar a través del grupo. Sin embargo, no seas idiota al respecto.
En una nota más sutil, es difícil (si no imposible) cambiar a alguien. ¡Predicar con el ejemplo!
fuente
Esta pregunta es altamente subjetiva. Si bien estoy de acuerdo con la eficiencia y el mayor control que proporcionan las secuencias de comandos, ¿por qué tiene que ser un mandato? ¿Por qué necesita alentar a las personas a usar secuencias de comandos solo porque le gusta usarlas? ¿Por qué no dejar que las personas elijan usar las herramientas que les gustan y prefieren?
Esta pregunta también ilustra un sesgo común que existe en el mundo de TI: que si no escribo un script no debo ser tan inteligente o tan bueno como alguien que hace un script, y eso está mal. He conocido a muchas personas que podrían escribir mejor que yo, pero no podían subred para salvar sus vidas o averiguar cómo ejecutar un rastreo de red, o configurar el servidor SQL para usar AWE, o no sabían cuál era el arranque. el archivo ini era para, etc., etc.
fuente
Honestamente, puedes llevar un caballo al agua, pero no puedes obligarlo a beber.
Llegué como SysAd en el Cuerpo de Marines hace unos 10 años, donde hay una gran brecha entre ser un administrador y ser un codificador. Ser un Codificador generalmente significa que te quedas atascado en el sitio web del proyecto favorito del CO (haciendo poco de tu trabajo real ...).
Debido a esto, me resistí a aprender a codificar, pero una vez que decidí probarlo, me lo pasé genial.
En cuanto a atraer a alguien, intente usar secuencias de comandos AD / LDAP para atraerlos. (Creo que es un poco más accesible que tratar con WMI). Asigne una progresión de tareas, diga "deme los nombres de usuario y las direcciones de correo electrónico de personas en el grupo XYZ ".
Escribí este código para encontrar a todos los usuarios que no eran miembros de ninguno de los grupos especificados: https://github.com/gwaldo/LDAP-Inverse-Group-Membership-Report
En cuanto a los recursos, echa un vistazo a los Microsoft Scripting Guys (que tienen excelentes artículos y tutoriales) y Scriptomatic2, que me encanta por profundizar en WMI.
fuente
La siguiente pregunta: ¿por qué deberían escribir un guión? Eso determinará la respuesta.
Presumiblemente, escribes un script porque es más eficiente. En ese caso, puede mostrar a todos los demás o indicarle a la gerencia que hay formas más eficientes de administrar los sistemas y esperar a que se aprovechen de eso en una medida de reducción de costos.
Alguien con autoridad puede ordenar la creación de secuencias de comandos, al exigir que existan secuencias de comandos para manejar la mayoría de las cosas. Qué tan bien funcionará esto depende de varias cosas; si se dice así, es probable que las secuencias de comandos sigan siendo lamentablemente inadecuadas y obsoletas, mientras que los administradores funcionan normalmente.
También está la cuestión de cómo exactamente esto te está afectando. ¿Te molesta o tu vida sería mejor si tus compañeros administradores escribieran cosas?
fuente
De hecho, tuve otro pensamiento. En relación con el hecho de que los administradores junior de Windows están acostumbrados a las interacciones GUI, tal vez sería de ayuda si comenzaras con la interacción de scripts de GUI, con algo como AutoIt . Esto les permitiría poner el pie en la puerta con respecto a las secuencias de comandos mientras les permite usar las herramientas que ya conocen, en lugar de tirar sus herramientas existentes y hacer que aprendan nuevas herramientas y secuencias de comandos al mismo tiempo.
Luego, una vez que se sientan cómodos con la idea de las secuencias de comandos en general, pueden pasar a las secuencias de comandos sin GUI. Sin embargo, aunque no sea así, la automatización de los clics en los botones puede ser un gran ahorro de tiempo.
fuente
He definido los scripts como "Documentación que hace el trabajo por usted".
Gerente: vaya a pasar innumerables horas creando documentación, que un alumno de primer grado pueda entender, que estará obsoleta para el final de la semana, para que sus compañeros de trabajo hagan clic con el botón derecho en la Tarea-X.
Empleado: Tengo un script que hace la Tarea X, ¿podría darles eso?
Gerente: Claro, después de que haya terminado la documentación que acabo de solicitar, documente también su secuencia de comandos con un diagrama de flujo.
fuente
No olvide que la documentación debe estar en un documento de MS Word para complicar la lectura del servidor.
fuente