elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [APORTE] [PowerShell] 3rd Party Driver Backup Tool
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [APORTE] [PowerShell] 3rd Party Driver Backup Tool  (Leído 2,021 veces)
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
[APORTE] [PowerShell] 3rd Party Driver Backup Tool
« en: 3 Marzo 2024, 21:41 pm »

El siguiente script desarrollado en el lenguaje Powershell sirve para generar una copia de seguridad de todos los paquetes de drivers de terceros que tengamos instalados en el sistema operativo. Para ello simplemente se utiliza el programa DISM en segundo plano.











Código
  1. Import-Module Microsoft.PowerShell.Management
  2.  
  3. [System.Console]::Title = "3rd Party Driver Backup Tool - by Elektro"
  4. [CultureInfo]::CurrentUICulture = "en-US"
  5.  
  6. try { Set-ExecutionPolicy -ExecutionPolicy "Unrestricted" -Scope "Process" } catch { }
  7.  
  8. $Timestamp = Get-Date -Format "yyyy∕MMMM∕dd HH꞉mm꞉ss"
  9.  
  10. $OutputDirectory = "$env:USERPROFILE\Desktop\3rd Party Drivers Backup $Timestamp"
  11.  
  12. Do {
  13.    Clear-Host
  14.    Write-Host ""
  15.    Write-Host " $($host.ui.RawUI.WindowTitle)"
  16.    Write-Host " +===========================================================+"
  17.    Write-Host " |                                                           |"
  18.    Write-Host " | This script will make a full backup of the 3rd party      |"
  19.    Write-Host " | device drivers that are installed in the current machine, |"
  20.    Write-Host " | and will save them into the user's desktop directory.     |"
  21.    Write-Host " |                                                           |"
  22.    Write-Host " +===========================================================+"
  23.    Write-Host ""
  24.    Write-Host " CURRENT SCRIPT CONFIG:"
  25.    Write-Host " ----------------------"
  26.    Write-Host ""
  27.    Write-Host " Output Directory:"
  28.    Write-Host " $OutputDirectory"
  29.    Write-Host " ___________________________________________________________"
  30.    Write-Host ""
  31.    Write-Host " -Continue? (Y/N)"
  32.    $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
  33.    $char = $key.Character.ToString().ToUpper()
  34.    if ($char -ne "Y" -and $char -ne "N") {
  35.        [console]::beep(1500, 500)
  36.    }    
  37. } while ($char -ne "Y" -and $char -ne "N")
  38. if ($char -eq "N") {Exit(1)} else {Clear-Host}
  39.  
  40. if (-not (Test-Path $OutputDirectory)) {
  41.    New-Item -Path "$OutputDirectory" -ItemType "Directory" -Force | Out-Null
  42. } & {
  43.    $psi = New-Object System.Diagnostics.ProcessStartInfo
  44.    $psi.FileName = "DISM.exe"
  45.    $psi.Arguments = "/Online /Export-Driver /Destination:""$OutputDirectory"""
  46.    $psi.UseShellExecute = $false
  47.  
  48.    $p = [System.Diagnostics.Process]::Start($psi)
  49.    $p.WaitForExit()
  50.    $dismExitCode = $p.ExitCode
  51.  
  52.    if ($dismExitCode -eq 0) {
  53.        Write-Host ""
  54.        Write-Host "Operation Completed!" -BackgroundColor Black -ForegroundColor Green
  55.        Write-Host ""
  56.    } else {
  57.        Write-Host ""
  58.        Write-Host "Operation Failed. Confirm to delete the output directory:" -BackgroundColor Black -ForegroundColor Red
  59.        Write-Host ""
  60.        Remove-Item -Path "$OutputDirectory" -Recurse -Force -ErrorAction SilentlyContinue -Confirm:$true
  61.    }
  62. }
  63.  
  64. Write-Host ""
  65. Write-Host "Press any key to exit..."
  66. $key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown")
  67. Exit($dismExitCode)


« Última modificación: 3 Marzo 2024, 21:43 pm por Eleкtro » En línea



Danielㅤ


Desconectado Desconectado

Mensajes: 1.825


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: [APORTE] [PowerShell] 3rd Party Driver Backup Tool
« Respuesta #1 en: 3 Marzo 2024, 22:10 pm »

Hola compañero Elektro, interesante el script que has creado, mas que nada es una herramienta para nuestro sistema operativo que nos puede ayudar y facilitar la creación de copias de seguridad de los drives no nativos de nuestro S.O..

Gracias por el aporte, muy bien indentado y ordenado el código, bien legible.

Algo importante y a destacar de tus códigos, como en este caso, es que los creas con el idioma inglés y es así como debería ser con un idioma universal y porque tenés la idea y propósito de que tus programas y códigos sean usados en todo el mundo por personas de todos los idiomas.


Saludos


« Última modificación: 3 Marzo 2024, 22:19 pm por Danielㅤ » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: [APORTE] [PowerShell] 3rd Party Driver Backup Tool
« Respuesta #2 en: 3 Marzo 2024, 23:01 pm »

muy bien indentado y ordenado el código, bien legible.

¡Que va!, te agradezco los elogios pero con la honestidad y la humildad por delante me veo obligado a hacer un pequeño inciso para abordar tu comentario, ya que precisamente este es el código peor estructurado en comparación con los demás scripts de PowerShell que he compartido estos días.

No he aplicado ninguna mecánica de encapsulación o modularidad para dividir el código fuente en partes más pequeñas y autónomas como funciones que realicen tareas específicas, tampoco he añadido lineas separatorias ni documentación o comentarios explicativos al código ...más allá de lo que se imprime en la "pantalla de bienvenida".

Es un código que hice rápido (pero sin cometer errores de lógica) y harto de tener que escribir el comando de DISM en la CMD. Al final tantas líneas de código se basan en una simple ejecución "controlada" del proceso DISM (y en la creación automatizada del directorio donde guardar los drivers), por lo que es algo muy simple y no me voy a esmerar más en adornar y estructurar este código.

Pero te lo agradezco, de nuevo.



los creas con el idioma inglés y es así como debería ser con un idioma universal y porque tenés la idea y propósito de que tus programas y códigos sean usados en todo el mundo por personas de todos los idiomas.

Totalmente de acuerdo. Programar con la intención de compartir tu creación para que (quizás, con suerte) le pueda servir a otras personas, y hacerlo en Español u otros idiomas que no sean el Inglés (y ya ni hablemos de hacerlo en Catalán, Euskera o Gallego), solo sirve para imponerse límites absurdos de comunicación a uno mismo y cerrarse las puertas de la visibilidad a nivel mundial.

Y si uno no domina suficientemente el Inglés, al menos debería intentarlo con un traductor online.

Aunque el Español es el segundo idioma más hablado del mundo, después del chino. Creo que todavía sigue siendo así. Pero en la práctica todo se transmite en Inglés...

Yo a veces me encuentro códigos de programadores asiáticos que claramente han recurrido a usar un traductor como Google Translate para escribir todos los comentarios del código fuente y las cadenas de texto de variables y etc, y la traducción suele ser una porquería, pero sin duda alguna se agradece que estén en Inglés por que medio se entiende todo bien, y si esos códigos estuvieran escritos en chino mandarín probablemente no lograrían captar la atención (o al menos la mía no, desde luego) y por lo tanto no podrían llegar a alcanzar una visibilidad y utilidad a nivel global, por que la mayoría al ver algo escrito en chino simplemente lo acabaríamos ignorando al primer vistazo.

Me pasa mucho con los códigos en ruso también. Yo no voy a hacer la labor de traducir algo que el autor no ha traducido al Inglés. Me indigna un poco, lo reconozco xD por que considero que decidir programar en Inglés o hacerlo en Español no se puede reducir a un debate de preferencias personales. Ni siquiera en el ámbito privado. ¡Ni mucho menos que los profesores enseñen a programar en Español!.

Pero bueno, esto es solamente mi opinión personal. Entiendo que habrán defensores de la idea de programar en el idioma que a uno le de la gana, de programar con el idioma con el que uno se sienta más a gusto o incluso con el que mejor se identifique, y lo respeto, pero no comparto ese pensamiento. Yo sostengo la idea de que programar basándose en preferencias lingüisticas que sean excluyentes del Inglés, o basándose en identitarismos nacionalistas absurdos (Catalán, Euskera, Gallego, etc) no aporta ni un solo beneficio en la vida real (más allá de que te puedan pedir programar en cierto idioma o dialecto como requisito para trabajar como funcionario en algo relacionado con la programación o la informática en general).

¡Un saludo!.
« Última modificación: 3 Marzo 2024, 23:19 pm por Eleкtro » En línea



Danielㅤ


Desconectado Desconectado

Mensajes: 1.825


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: [APORTE] [PowerShell] 3rd Party Driver Backup Tool
« Respuesta #3 en: 4 Marzo 2024, 01:07 am »

¡Que va!, te agradezco los elogios pero con la honestidad y la humildad por delante me veo obligado a hacer un pequeño inciso para abordar tu comentario, ya que precisamente este es el código peor estructurado en comparación con los demás scripts de PowerShell que he compartido estos días.

No he aplicado ninguna mecánica de encapsulación o modularidad para dividir el código fuente en partes más pequeñas y autónomas como funciones que realicen tareas específicas, tampoco he añadido lineas separatorias ni documentación o comentarios explicativos al código ...más allá de lo que se imprime en la "pantalla de bienvenida".

Es un código que hice rápido (pero sin cometer errores de lógica) y harto de tener que escribir el comando de DISM en la CMD. Al final tantas líneas de código se basan en una simple ejecución "controlada" del proceso DISM (y en la creación automatizada del directorio donde guardar los drivers), por lo que es algo muy simple y no me voy a esmerar más en adornar y estructurar este código.

Pero te lo agradezco, de nuevo.

Bien, yo de PowerShell no tengo conocimientos y lo veo bien ordenado aunque siendo sincero no he visto detenidamente tus otros códigos, solamente lo he visto a éste con más detalles.

Si, eso he notado que no están los comentarios pero al ser un códigos simple y de rápida creación además de ser un código muy pequeño, he pensado que no lo has querido escribir porque no valía mucho la pena.
Lo de las líneas separadoras es opcional por ser un código tan corto.

Yo he visto códigos en otros lenguajes mal escritos que si los hubieras visto, quizás te sorprenderias por la mala práctica de programación.


Totalmente de acuerdo. Programar con la intención de compartir tu creación para que (quizás, con suerte) le pueda servir a otras personas, y hacerlo en Español u otros idiomas que no sean el Inglés (y ya ni hablemos de hacerlo en Catalán, Euskera o Gallego), solo sirve para imponerse límites absurdos de comunicación a uno mismo y cerrarse las puertas de la visibilidad a nivel mundial.

Y si uno no domina suficientemente el Inglés, al menos debería intentarlo con un traductor online.

Aunque el Español es el segundo idioma más hablado del mundo, después del chino. Creo que todavía sigue siendo así. Pero en la práctica todo se transmite en Inglés...

Yo a veces me encuentro códigos de programadores asiáticos que claramente han recurrido a usar un traductor como Google Translate para escribir todos los comentarios del código fuente y las cadenas de texto de variables y etc, y la traducción suele ser una porquería, pero sin duda alguna se agradece que estén en Inglés por que medio se entiende todo bien, y si esos códigos estuvieran escritos en chino mandarín probablemente no lograrían captar la atención (o al menos la mía no, desde luego) y por lo tanto no podrían llegar a alcanzar una visibilidad y utilidad a nivel global, por que la mayoría al ver algo escrito en chino simplemente lo acabaríamos ignorando al primer vistazo.

Me pasa mucho con los códigos en ruso también. Yo no voy a hacer la labor de traducir algo que el autor no ha traducido al Inglés. Me indigna un poco, lo reconozco xD por que considero que decidir programar en Inglés o hacerlo en Español no se puede reducir a un debate de preferencias personales. Ni siquiera en el ámbito privado. ¡Ni mucho menos que los profesores enseñen a programar en Español!.

Pero bueno, esto es solamente mi opinión personal. Entiendo que habrán defensores de la idea de programar en el idioma que a uno le de la gana, de programar con el idioma con el que uno se sienta más a gusto o incluso con el que mejor se identifique, y lo respeto, pero no comparto ese pensamiento. Yo sostengo la idea de que programar basándose en preferencias lingüisticas que sean excluyentes del Inglés, o basándose en identitarismos nacionalistas absurdos (Catalán, Euskera, Gallego, etc) no aporta ni un solo beneficio en la vida real (más allá de que te puedan pedir programar en cierto idioma o dialecto como requisito para trabajar como funcionario en algo relacionado con la programación o la informática en general).

¡Un saludo!.

Si, más que nada el inglés es un idioma estándar en el mundo de la programación y es muy recomendable escribir los códigos, los comentarios e incluso hasta las FAQs y hasta el nombre del programa, en inglés, porque así será mejor poder traducirlo al idioma de cada usuario o programador y también para que lo puedan entender, además algo muy importante es que el inglés a comparación por ejemplo del español es que es mas corto y además el inglés no utiliza (o casi) acentos en las palabras, por otro lado los idiomas como ruso o chino son caracteres especiales, por lo que tampoco sería recomendable escribir en esos idiomas y también porque pueden dar problemas de codificación.


Un abrazo amigo!
« Última modificación: 4 Marzo 2024, 01:18 am por Danielㅤ » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines