El software es la parte que no se puede tocar del ordenador (intangible), es un elemento lógico y se define como un conjunto de órdenes e instrucciones que al ejecutarse sirven para realizar alguna tarea (los programas sin ejecutar son simples archivos en disco). Con el software se saca partido al ordenador, sin software el ordenador sería un conjunto de placas, tarjetas y cables sin ninguna utilidad.
Los sistemas operativos instalados programas pero también se pueden instalar otros.
El software se puede dividir en tipos:
- Software de sistema. Conjunto de programas que administran los recursos del ordenador.
- Software de programación. Es el conjunto de herramientas que sirven para crear nuevos programas, éstos se crean utilizando un lenguaje de programación. Un lenguaje de programación es un conjunto de símbolos, reglas sintácticas y semánticas que indican cómo hacer un programa. Todas las órdenes o instrucciones que forman el programa se escriben en unos archivos llamados códigos fuente.
- Software de aplicación. Se refiere a los programas que permiten realizar tareas a los usuarios con conocimientos básicos de informática. Les permite sacar provecho al ordenador y así realizar tareas relacionadas con su actividad como, por ejemplo, escribir un documento, enviar un mail, etc.
Software
Cuando se habla de software tenemos que tener en cuenta qué se puede hacer con el mismo:
- Instalar.
- Actualizar.
- Downgrade (devolver el software a una antigua versión).
- Desinstalar.
La instalación y desinstalación de programas es una tarea importante y se tiene que hacer con control, no hay que instalar un programa sin estar seguro de lo que hace, y siempre hay que conocer la fuente de donde proviene el programa.
Los sistemas operativos tienen instalado por defecto multitud de programas que nos permiten realizar gran cantidad de tareas como escribir documentos, escuchar música, navegar por Internet, etc. Sin embargo, esto no es suficiente para la mayoría de los usuarios y es probable que necesiten instalarse nuevos programas como, por ejemplo, un navegador de Internet distinto al que tiene el sistema operativo por defecto, un conjunto de herramientas ofimáticas más completo, etc.
Aunque lo normal es instalar una sola vez un programa, a veces hay algún problema en el programa y es necesario reinstalar algún archivo o el programa entero.
Es importante tener el software correctamente instalado, indentificado y controlar el acceso a los programas por parte de los usuarios.
Las operaciones que se pueden realizar sobre el software son:
Listar software
Cmdlet
1 | Get-Package |
Parámetros y alias de los parámetros para el cmdlet Get-Package
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | Name {} RequiredVersion {} MinimumVersion {} MaximumVersion {} AllVersions {} Force {} ForceBootstrap {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} ProviderName {Provider} IncludeWindowsInstaller {} IncludeSystemComponent {} AdditionalArguments {} Destination {} ExcludeVersion {} Scope {} SkipDependencies {} PackageManagementProvider {} Type {} AllowClobber {} SkipPublisherCheck {} InstallUpdate {} NoPathUpdate {} |
WMI
1 2 | Get-WmiObject win32_Product Get-WmiObject -query "select name from win32_product" |
Ejemplos
Listar programas instalados
1 2 3 | Get-Package | Select-Object Name (Get-WmiObject -Class Win32_Product).name Get-WmiObject -query "select name from win32_product" | select Name |
Seleccionar el nombre y versión de los programas instalados
1 2 | Get-Package | Select-Object Name, Version (Get-WmiObject -Class Win32_Product) | Select-Object name,version |
Indicar si hay algún antivirus instalado
1 2 | ((Get-Package).name) | Select-String 'Defender' ((Get-WmiObject -Class Win32_Product).name) | Select-String 'Antivirus' |
Número de programas instalados
1 2 | ((Get-Package).name).count ((Get-WmiObject -Class Win32_Product).name).count |
Agrupar los programas cuyo nombre sea “Microsoft”
1 2 | Get-Package | Select-String "Microsoft" | Group-Object (Get-WmiObject -Class Win32_Product) | Select-String "Microsoft" | Group-Object |
Indicar si está instalado Gimp
1 2 | if(((Get-Package).name) | Select-String "Microsoft"){"Instalado"} if(((Get-WmiObject -Class Win32_Product).name) | Select-String "Gimp"){"Instalado"} |
Agrupa los programas cuyo vendedor sea Microsoft
1 | (Get-WmiObject -Class Win32_Product).vendor | Select-String "Microsoft" | Group-Object |
Indicar el número de programas cuyo nombre sea Microsoft (agrupar)
1 2 | ((Get-Package).Name | Select-String "Microsoft" | Group-Object).Count ((Get-WmiObject -Class Win32_Product).vendor | Select-String "Microsoft" | Group-Object).Count |
Mostrar programas instalados por familia
1 | ((Get-WmiObject -Class Win32_Product).name) | %{$_.split(' ')[0]} |
Agrupar por familia los programas instalados
1 | ((Get-WmiObject -Class Win32_Product).name) | %{$_.split(' ')[0]} | Group-Object |
Indicar cuántos programas hay por familia
1 | ((Get-WmiObject -Class Win32_Product).vendor | Group-Object) |
Ejercicios
Crear una función que indique si se ha instalado un programa
1 2 3 4 5 6 | function ProgramaInstalado($programa) { if(((Get-WmiObject -Class Win32_Product).name) | Select-String $programa){"Instalado"} } ProgramaInstalado VMware Player |
Buscar en el registro información sobre programas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $name='Google' $producto=(Get-WmiObject -Class Win32_Product) foreach($uno in $producto) { if($uno.name -match $name) { $valor=$uno.IdentifyingNumber $valor=$valor.replace('{','') $valor=$valor.replace('}','') } } Get-ChildItem hklm:\ -rec -ea SilentlyContinue | % { if($_ -match $valor){$_} } |
Buscar software
Cmdlet
1 | Find-Package |
Parámetros y alias de los parámetros para el cmdlet Find-Package
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | IncludeDependencies {} AllVersions {} Source {} Credential {} Proxy {} ProxyCredential {} Name {} RequiredVersion {} MinimumVersion {} MaximumVersion {} Force {} ForceBootstrap {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} ProviderName {Provider} ConfigFile {} SkipValidate {} Headers {} FilterOnTag {} Contains {} AllowPrereleaseVersions {} PackageManagementProvider {} PublishLocation {} ScriptSourceLocation {} ScriptPublishLocation {} Type {} Filter {} Tag {} Includes {} DscResource {} RoleCapability {} Command {} |
Ejemplos
Buscar la herramienta ZoomIt
1 | Find-Package zoomit |
Instalar software
Para instalar programas es necesario controlar el hardware del equipo, el software instalado en el equipo por el tema de incompatibilidades, las versiones y las licencias.
Cmdlet
1 | Install-Package |
Parámetros y alias de los parámetros para el cmdlet Install-Package
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | InputObject {} Name {} RequiredVersion {} MinimumVersion {} MaximumVersion {} Source {} Credential {} Proxy {} ProxyCredential {} AllVersions {} Force {} ForceBootstrap {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} WhatIf {wi} Confirm {cf} ProviderName {Provider} IncludeWindowsInstaller {} IncludeSystemComponent {} AdditionalArguments {} ConfigFile {} SkipValidate {} Headers {} FilterOnTag {} Contains {} AllowPrereleaseVersions {} Destination {} ExcludeVersion {} Scope {} SkipDependencies {} PackageManagementProvider {} PublishLocation {} ScriptSourceLocation {} ScriptPublishLocation {} Type {} Filter {} Tag {} Includes {} DscResource {} RoleCapability {} Command {} AllowClobber {} SkipPublisherCheck {} InstallUpdate {} NoPathUpdate {} |
Ejemplo
Instalar sofware buscándolo previamente
1 | Find-Package zoomit | Install-Package |
Desinstalar software
Cmdlet
1 | Uninstall-Package |
Parámetros y alias de los parámetros para el cmdlet Uninstall-Package
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | InputObject {} Name {} RequiredVersion {} MinimumVersion {} MaximumVersion {} AllVersions {} Force {} ForceBootstrap {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} WhatIf {wi} Confirm {cf} ProviderName {Provider} IncludeWindowsInstaller {} IncludeSystemComponent {} AdditionalArguments {} Destination {} ExcludeVersion {} Scope {} SkipDependencies {} PackageManagementProvider {} Type {} AllowClobber {} SkipPublisherCheck {} InstallUpdate {} NoPathUpdate {} |
Ejemplos
Desinstalar sofware
1 | Uninstall-Package zoomit |
Actualizaciones
Cada día aparecen nuevas vulnerabilidades en los sistemas operativos y en los programas, es importante mantener el sistema operativo actualizado con los últimos parches de seguridad.
Las actualizaciones sirven para evitar problemas o corregirlos, de esta forma el sistema operativo se mantiene seguro. Las actualizaciones son necesarias para los sistemas operativos.
Los sistemas de gestión de actualizaciones permiten que éstas se descarguen y se instalen con orden, de no ser así podrían aparecer problemas si el sistema operativo comenzara a descargar todas las actualizaciones a la vez, en algunos casos pueden llegar a saturar ciertos recursos como, por ejemplo, la conexión de red. Para resolver este problema algunos sistemas operativos tienen programas que descargan las actualizaciones y las envían a otros ordenadores a la red de una manera ordenada.
Gracias a los sistemas de actualizaciones, el tiempo que va desde que se registra un fallo hasta que se corrige es muy pequeño.
Las actualizaciones pueden ser del sistema operativo, de programas, de controladores, etc.
Listar actualizaciones
Cmdlet
1 | Get-HotFix |
Parámetros y alias de los parámetros para el cmdlet Get-HotFix
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Id {HFID} Description {} ComputerName {CN, __Server, IPAddress} Credential {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |
El cmdlet visto en el apartado anterior también sirve para ver actualizaciones
1 | Get-Package |
Ejemplos
Ver el nombre de las actualizaciones
1 2 | Get-HotFix Get-Package | Select-Object Name | Select-String "Actualización" |
Ver el ID de las actualizaciones
1 | Get-HotFix | Select-Object HotFixID |
Ver si hay una actualización instalada
1 2 | $kb=Read-Host ‘NúmeroActualización’ ((Get-HotFix).hotfixid | Select-String $kb) |
Listar por descripción las actualizaciones instaladas en el equipo
1 2 | Get-HotFix | Select-Object Description (Get-HotFix).Description |
Agrupar actualizaciones por descripción
1 2 | Get-HotFix | Group-Object Description (Get-HotFix).Description | Group-Object |
Agrupar actualizaciones por descripción y mostrar el nombre de la agrupación
1 | (Get-HotFix | Group-Object Description).Name |
Listar por fecha las actualizaciones instaladas en el equipo
1 | Get-HotFix | Sort-Object InstalledOn |
Antivirus
Uno de los programas principales es el antivirus.
El antivirus que se utiliza en Windows es Windows Defender.
Examinar el equipo en busca de virus se utiliza el cmdlet
1 | Start-MpScan |
Parámetros y alias de los parámetros para el cmdlet Start-MpScan
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ScanPath {} ScanType {} CimSession {Session} ThrottleLimit {} AsJob {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |
Para ver las últimas definiciones del antivirus se utiliza el cmdlet
1 | (Get-MpThreatCatalog).ThreatName |
Parámetros y alias de los parámetros para el cmdlet Get-MpThreatCatalog
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ThreatID {ID} CimSession {Session} ThrottleLimit {} AsJob {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |
Ejemplos
Ver últimos escaneos
1 2 3 4 | (Get-MpComputerStatus).FullScanEndTime (Get-MpComputerStatus).FullScanStartTime (Get-MpComputerStatus).QuickScanEndTime (Get-MpComputerStatus).QuickScanStartTime |
Última actualización de firmas
1 2 | (Get-MpComputerStatus).NISSignatureLastUpdated (Get-MpComputerStatus).AntivirusSignatureLastUpdated |
Última actualización del Antispayware
1 | (Get-MpComputerStatus).AntispywareSignatureLastUpdated |
Para actualizar las definiciones en el antivirus se utiliza el cmdlet
1 | Update-MpSignature |
Parámetros y alias de los parámetros para el cmdlet Update-MpSignature
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | UpdateSource {} CimSession {Session} ThrottleLimit {} AsJob {} Verbose {vb} Debug {db} ErrorAction {ea} WarningAction {wa} InformationAction {infa} ErrorVariable {ev} WarningVariable {wv} InformationVariable {iv} OutVariable {ov} OutBuffer {ob} PipelineVariable {pv} |