He estado usando ambos idiomas en mi trabajo actual. La mayoría de los sistemas que administro son Windows, algunos son Linux. Pero, soy un amante de Linux y FOSS de corazón.
Así que créanme cuando digo que quería odiar a PowerShell, realmente lo hice. Y lo hice al principio, especialmente 1.0.
Durante el último año, había estado tocando algunos de los scripts heredados de PowerShell (PS) que un empleado anterior había dejado y que todavía estaban en uso. Necesitaba expandirlos y decidí actualizarlos más. (Creo que se construyeron en PS 2.0 y tenían muchos ismos de PS 1.0 y 2.0). Entonces, lentamente comencé a abrirme camino a través de ellos.
- Soy un expatriado en Londres y estoy haciendo una maestría en informática en Birkbeck College (conversión). ¿Cuáles son mis posibilidades de conseguir un trabajo en los Estados Unidos si regreso?
- ¿Cuál es una mejor universidad para la rama CSE: la Universidad JECRC, el Instituto Swami Keshvanand de Tecnología, Gestión y Gramothan (SKIT) o la Facultad de Ingeniería de Poornima Jaipur?
- ¿Puede una persona ser física e ingeniera?
- ¿Deberías entregar más?
- ¿Existen iniciativas de ingeniería de software para ex convictos?
Algo mágico sucedió.
Viniendo de un fondo BASH para gran parte de mi automatización de administración de Linux, con algo de Python en la parte superior, estaba bastante acostumbrado a canalizar cosas de un proceso / programa / shell incorporado a otro.
Pero no estaba acostumbrado a las cosas que estaba haciendo como objetos. “Espera un minuto …” me dije a mí mismo. “¿Puedo canalizar la salida de Get-Process
través de Export-CSV
y obtener un archivo CSV? … con encabezados adecuados para las propiedades de cada proceso O … a través de Out-Gridview
y obtener una representación gráfica? Bueno, está bien, pero …”
Y luego las cosas se pusieron más locas. Para ampliar ese ejemplo, podría obtener una lista de procesos, canalizarla a través de Out-GridView -PassThru
, lo que permitiría al usuario seleccionar una línea de pedido, que luego pasaría. Entonces … OK, $SomeProcess = Get-Process | Out-GridView -PassThru
$SomeProcess = Get-Process | Out-GridView -PassThru
: eso está bien, pero ¿qué es eso ahora? En BASH, $ SomeProcess sería, por ejemplo, el PID de un proceso. ¿Pero aquí? Es un objeto que realmente representa el proceso. Entonces, $SomeProcess.id
. El PID (equivalente) es una propiedad del objeto. Pero que mas? Métodos? $SomeProcess.Kill()
o .WaitForClose()
o .GetHashCode()
o …
¿Pero qué puedes hacer con él? Bueno, es posible que recuerde todo eso de .NET Framework, básicamente la API moderna de Windows de Microsoft. Resulta que puedes hacer * literalmente * cualquier cosa que pueda hacer el framework, con un poco de esfuerzo. Eso está bien, pero ¿qué puedes hacer fácil y bien?
Casi todo. Vea, entre .NET y WMI y algunas otras cosas, Microsoft ha abstraído todo el sistema operativo en objetos con los que podemos trabajar, y ha escrito cosas de PS que lo manejan.
Así que casi todos los productos de Microsoft pueden ser consultados / gestionados / manipulados a través de Powershell. Y también la mayoría de las cosas por encima de los principales proveedores. VMWare (que también tiene opciones de Python, por supuesto), por ejemplo.
Quería odiar a PowerShell. Lo hice al principio, y luego no. Pero, ahora lo hago de nuevo. ¿Quieres saber por qué?
Odio PowerShell, porque no está disponible para Linux, y me di cuenta en parte de por qué no puede estar disponible para Linux. PowerShell me expuso a qué tan “unificado” es Windows (o se puede hacer que parezca) y cuán heterogéneo es Linux.
No puedo imaginar la posibilidad de administrar sistemas Linux, incluso de un solo proveedor, de la forma en que administro sistemas Windows con PowerShell; Hay demasiadas piezas móviles creadas por demasiados proveedores sin API unificada.
PowerShell me obligó a reconocer las deficiencias en mi plataforma preferida (Linux).
Además, es una alegría trabajar con él.
Si estás escribiendo software? Pitón. Si estás haciendo administración de sistemas? Potencia Shell.
¿Si quieres ser esa persona que está en TI pero que realmente entiende el lado de los desarrolladores? PowerShell y Python. Pero ahora te lo diré: si quieres ser un administrador de sistemas y vas a tocar las máquinas Windows, PowerShell es invaluable. Cambió completamente mi opinión sobre Windows e incluso Microsoft. Sí, todavía desearía que no fueran propiedad de código cerrado en todo el lugar, pero ¿sabes qué? Las herramientas son geniales.
Todo esto dicho? Tendrás que sacar mi Python de mis manos frías y muertas.