100% encontró este documento útil (1 voto)
148 vistas134 páginas

PowerShell para Administradores

El documento proporciona una guía sobre la gestión de usuarios, grupos, discos y redes utilizando PowerShell. Incluye instrucciones sobre cómo mostrar, crear, modificar y eliminar cuentas de usuario y grupos, así como la gestión de discos y configuraciones de red. También se presentan cmdlets específicos para realizar estas tareas y se enfatiza la importancia de una correcta administración para evitar problemas en el sistema.

Cargado por

Penenson 2
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
148 vistas134 páginas

PowerShell para Administradores

El documento proporciona una guía sobre la gestión de usuarios, grupos, discos y redes utilizando PowerShell. Incluye instrucciones sobre cómo mostrar, crear, modificar y eliminar cuentas de usuario y grupos, así como la gestión de discos y configuraciones de red. También se presentan cmdlets específicos para realizar estas tareas y se enfatiza la importancia de una correcta administración para evitar problemas en el sistema.

Cargado por

Penenson 2
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 134

PowerShell para

administradores
Gestión de usuarios y grupos
ÍNDICE

1.- Introducción.
2.- cmdlets.
3.- Mostrar información de las cuentas de usuario.
4.- Crear cuentas de usuarios.
5.-Modificar una cuenta de usuario.
6.-Renombrar una cuenta de usuario.
7.- Activar/Desactivar una cuenta de usuario.
8.- Eliminar una cuenta de usuario.
9.- Resumen de comandos
1.- Introducción
• Para que un usuario pueda iniciar sesión en Windows,
necesita una cuenta de usuario.

• Las cuentas de usuario pueden:

• Ser Locales, es decir, sólo son conocidas en el equipo


en el que se crea.

• Pertenecer al Active Directory. En tal caso, podríamos


conectarnos desde cualquier equipo del dominio.
1.- Introducción

• Vamos a ver:
• Mostrar información de las cuentas de usuarios.

• Crear cuentas de usuarios.

• Modificar una cuenta de usuario.

• Renombrar una cuenta de usuario.

• Activar/desactivar una cuenta de usuario.

• Eliminar una cuenta de usuario.


2.- cmdlets
• Conocer los cmdlets para trabajar con usuarios

Get-Command *localuser*

• Estos comdlets los podemos encontrar en el módulo:

Get-Command –Module Microsoft.PowerShell.LocalAccounts

• Obtener ayuda de un comando:

Get-Help Get-LocalUser -Examples


3.- Mostrar información de las
cuentas de usuario
• Mostrar las cuentas de usuarios.

Get-LocalUser

Get-LocalUser|format-table

-Autosize -> ajusta las columnas, pero trunca las últimas columnas.

-Wrap -> Ajusta las columnas, pero no trunca las columnas.

• Mostrar información de una cuenta.

Get-LocalUser –Name alumno|Format-List *

AccountExpires -> Fecha expiración de la cuenta.

PasswordExpires -> Fecha expiración de la contraseña.

LastLogon -> Fecha de última conexión.


4.-Crear cuentas de usuarios
• Crear una cuenta de usuario sin contraseña.

New-LocalUser Delfin –NoPassword

->Get-LocalUser Delfin|Format-List *

• Crear una cuenta de usuario con contraseña -> oceano

• 1º Encriptamos la contraseña:

$contra=ConvertTo-SecureString “oceano" -AsPlainText –Force

• 2º Creamos el usuario

New-LocalUser Ballena -Password $contra

-> Get-LocalUser Ballena |Format-List *


5.- Modificar una cuenta de usuario
• Establecer o modificar una propiedad: Añadir el
FullName.

Set-LocalUser Ballena -FullName “Ballena gris“

-> Get-LocalUser Ballena |Format-List *

• Establecer o modificar una propiedad: La contraseña


nunca expira.

Set-LocalUser Ballena -PasswordNeverExpires $true

-> Get-LocalUser Ballena | Format-List *


5.- Modificar una cuenta de usuario

• Establecer o modificar una propiedad: Añadirle


una contraseña al usuario Delfin.

• Fijémonos en el campo: PasswordLatSet

Set-LocalUser -Name Delfin -Password (ConvertTo

-SecureString “oceano" -AsPlainText -Force)

-> Get-LocalUser Delfin |Format-List *


6.- Renombrar una cuenta
• Renombrar una cuenta de usuario: Delfin --> eldelfin

-> Get-LocalUser

Rename-LocalUser Delfin -NewName eldelfin

-> Get-LocalUser

• Renombrar una cuenta de usuario: eldelfin --> delfin

-> Get-LocalUser

Rename-LocalUser eldelfin -NewName delfin


7.- Activar/Desactivar cuentas de usuario

• Desactivar una cuenta de usuario: Delfin

-> Get-LocalUser Delfin |FL *

Disable-LocalUser Delfin

• Activar una cuenta de usuario: Delfin

Enable-LocalUser Delfin

-> Get-LocalUser Delfin |FL *


8.- Eliminar una cuenta de usuario
• Eliminar una cuenta de usuarios: Delfin y Ballena:

-> Get-LocalUser

Remove-LocalUser –Confirm Delfin

Remove-LocalUser -Confirm Ballena

-> Get-LocalUser

• Con -Confirm, nos pide confirmación.


9.-Resumen de comandos
• Gestión de usuarios:

• Get-LocalUser: muestra las cuentas de usuarios locales.

• New-LocalUser: Crea una nueva cuenta de usuario local.

• Set-LocalUser: Establece o modifica una propiedad de una cuenta de


usuario local.

• Rename-LocalUser: Renombra una cuenta de usuario local.

• Disable-LocalUser: Desactiva una cuenta de usuario local.

• Enable-LocalUser: Activa una cuenta de usuario local.

• Remove-LocalUser: Elimina una cuenta de usuario local.


Gestión de grupos
ÍNDICE

1.- Introducción.

2.- cmdlets.

3.- Mostrar información de los grupos.

4.- Crear grupos.

5.-Modificar un grupo.

6.-Renombrar un grupo.

7.- Eliminar un grupo.

8.- Miembros de un grupo.

9.- Agregar miembros a un grupo.

10.- Eliminar miembros de un grupo.

11.- Resumen

12.- Limpieza de usuarios y grupos creados.


1.- Introducción
• Las cuentas de usuarios podemos agruparlas en
grupos, que nos facilitará la administración de permisos
a un recurso.

• Los usuarios pueden pertenecer o no pertenecer a uno


o varios grupos distintos.

• Algunos grupos predefinidos:


• Administradores: Tienen control total del equipo.
• Usuarios: Pueden realizar tareas habituales, pero no
pueden, por ejemplo: compartir directorios.
1.- Introducción
Vamos a ver:

• Mostrar información de los grupos locales.

• Crear un grupo local.

• Establecer o modificar una propiedad del grupo.

• Renombrar un grupo.

• Eliminar un grupo.

• Obtener miembros de un grupo.

• Agregar miembros a un grupo.

• Eliminar miembros de un grupo.


2- cmdlets
• Conocer los cmdlets para trabajar con usuarios y
grupos:
Get-Command *localgroup*
• Estos comdlets los podemos encontrar en el módulo:
Get-Command –Module
Microsoft.PowerShell.LocalAccounts
• Obtener ayuda de un comando:
Get-Help Get-LocalGroup -Examples
3.- Mostrar información de los grupos

• Mostrar información de los grupos.

Get-LocalGroup

• Mostrar información de un grupo.

Get-LocalGroup administradores|Format-List *
4.- Crear grupos
• Crear un grupo local.

• New-LocalGroup acuaticos

-> Get-LocalGroup

->Get-LocalGroup -Name acuaticos|Format-List *


5.- Modificar un grupo
• Establecer o modificar una propiedad: Añadir una
Descripción.
Set-LocalGroup -Description

“Animales que viven en el mar” Acuaticos

->Get-LocalGroup Acuaticos |FL *

-> Get-LocalGroup -Name Acuaticos |fl *


6.- Renombrar un grupo

• Renombrar un grupo.

Rename-LocalGroup Acuaticos -NewName marinos

Get-LocalGroup -Name marinos|fl *

• Renombrar un grupo (Lo dejamos como estaba)

Rename-LocalGroup marinos -NewName Acuaticos


7.- Eliminar un grupo

• Eliminar un grupo.

Remove-LocalGroup –Confirm Acuaticos

-Confirm, para que nos pida confirmación.

Get-LocalGroup
8.- Miembros de un grupo
• Obtener miembros de un grupo.

• Preparamos el entorno:

-> New-LocalGroup Acuaticos

-> New-LocalUser Delfin –NoPassword

-> New-LocalUser Ballena –NoPassword

• Get-LocalGroupMember Acuaticos
9.- Agregar miembros de un grupo
• Agregar miembros a un grupo: Acuaticos

Add-LocalGroupMember Acuaticos -Member Delfin

Add-LocalGroupMember Acuaticos -Member Ballena

-> Get-LocalGroupMember Acuaticos

• Agregar miembros a un grupo: usuarios

Add-LocalGroupMember usuarios -Member Delfin, Ballena

-> Get-LocalGroupMember usuarios

• Ahora aparece cuando le demos al botón inicio.


10.- Eliminar miembros de un grupo
• Eliminar miembros a un grupo.

Remove-LocalGroupMember Acuaticos -Member


Ballena

Remove-LocalGroupMember Acuaticos -Member


Delfin

-> Get-LocalGroupMember Acuaticos


11.- Resumen
• Gestión de grupos:

• Get-LocalGroup: muestra los grupos locales.

• New-LocalGroup: Crea un nuevo grupo local.

• Set-LocalGroup: Establece o modifica una propiedad de un grupo local.

• Rename-LocalGroup: Renombra un grupo local.

• Remove-LocalGroup: Elimina un grupo local.

• Get-LocalGroupMember: Muestra los miembros de un grupo.

• Add-LocalGroupMember: Agrega un miembro a un grupo.

• Remove-LocalGroupMember: Elimina un miembro de un grupo local.


12.- Limpieza de usuarios y grupos
• Vamos a proceder a borrar los usuarios y grupos
que hemos creado para no dejar basurilla en el
sistema.

• Borramos el grupo:

Remove-LocalGroup Acuaticos

• Borramos los usuarios: Delfin y Ballena.

Remove-LocalUser Delfin, Ballena


Gestión de discos

• Una de las funciones fundamentales del


administrador de sistemas, es la gestión de discos.
1.- Introducción

• Los discos son los elementos que utilizaremos


principalmente para almacenar datos.

• Una mala gestión de discos puede provocar


inestabilidad, pérdida de datos y lentitud, entre
otros errores.

• Vamos a ver cómo gestionar correctamente.


2.-Cmdlets
• Conocer los cmdlets para trabajar con discos:
Get-Command *disk* -> discos
Get-Command *vhd* -> discos virtuales
Get-Command *partition*|ft –AutoSize -> Particiones
• Los comandos más utilizados son muchos menos.
• Estos cmdlets los podemos encontrar en el módulo:
Get-Command -Module Storage
• Obtener ayuda de un comando:
Get-Help Get-Disk -Examples
3.- Información de los discos conectados
• Mostrar los discos conectados.

Get-Disk |ft –autosize

Get-Disk|FL * -> Nos muestra mucha más información.

• Extraemos información fundamental:

• Get-Disk |fl Number, SerialNumber, HealthStatus,


OperationalStatus, size, PartitionStyle

• Es importante el número del disco (Number), porque es el


identificador que utilizaremos para sucesivas operaciones.
3.- Información de los discos conectados

• Mostrar las particiones de un disco.

• El disco duro puede tener una o varias particiones.

Get-Disk|FT –AutoSize -> Vemos los discos


conectados.

Get-Partition -> Vemos las particiones de los discos.

Get-Partition -DiskNumber 0 -> Las particiones del


disco 0.
6.- Inicializar, crear partición y formatear

• Los cmdlets para administrar un disco virtual son


los mismos que un disco físico.
6.1.- Inicializar un disco.
• Cuando añadimos un nuevo disco duro físico, o un
disco duro virtual es necesario inicializar el disco.

• Cuando lo inicialicemos realmente estamos creando la


tabla de partición de tipo MBR o GPT. RAW -> Que no
está inicializado. No tiene tabla de partición.

get-disk |fl Number,Size,PartitionStyle

Initialize-Disk -Number 2 -> Por defecto, se crea GPT.

get-disk |fl Number,Size,PartitionStyle


6.1.- Inicializar un disco.

• Cambiar la tabla de partición de GPT a MBR:

Set-Disk -Number 2 -PartitionStyle MBR

-> Get-Disk |fl Number,Size,PartitionStyle


6.2.- Crear una partición

• Crear una partición con el máximo tamaño y


asignándole la unidad v:

New-Partition -DiskNumber 2 -UseMaximumSize -


DriveLetter V

• Comprobar las particiones del disco:

Get-Partition -DiskNumber 2
6.3.- Formatear una partición
Format-Volume -DriveLetter V -FileSystem NTFS

-> Get-Partition -DiskNumber 2

• Ya podemos escribir algo en ella.

ni v:\hola.txt

Ls v:
7.- Limpiar el disco
• Nos permite eliminar toda la información de las
particiones y reinicializa el disco.
• Debemos tener cuidado con este comando.
Clear-Disk -Number 1 –RemoveData
Get-Disk -> Se detecta, pero no está inicializado, ni
montado.
Get-partition -> muestra las particiones de los discos
Actividad: disco
• Añade un disco a la máquina virtual: 10 GiB

• Crea desde la PowerShell, 4 particiones:


• Primera: de 2 GiB
• Segunda: 1 GiB
• Tercera: 4GiB
• Cuarta: del resto del disco.

• Realiza todo lo necesario para que se pueda trabajar con


esas particiones.
Actividad: disco

• ¿Qué tipo de disco se ha creado?

• Elimina todas las particiones que has creado antes.

• Convierte el disco a MBR.

• Crea en el disco una partición primaria de 2GiB.

• Crea dos unidades lógicas: cada una de 2GiB.

• Otra partición del resto del disco.


Actividad: disco
Actividad: disco
Actividad: disco

• Introducción al comando Where-Object


Actividad: disco
Gestión de la red
• Vamos a ver cómo configurar la red de forma
estática y dinámica.

Get-Command *NetIP*

Get-Command –module NetSecurity


Gestión de la red
• Para saber todos los cmdlets relacionados
con la tarjeta de red :

Get-command –module NetAdapter

• Para saber todos los cmdlets relacionados


con la red:

Get-command –module NetTCPIP


Gestión de la red
• Para ver todas las tarjetas de red que tenemos:

Get-NetAdapter

• Para ver las características de un adaptador de red:

Get-NetAdapter –Name “Ethernet”|FlL

• Para desactivar una tarjeta de red

Disable-NetAdapter –Name “Ethernet”

• Para activar una tarjeta de red

Enable-NetAdapter –name “Ethernet”


Gestión de la red
• Para saber como se ha signado la IP:

Get-NetIPAddress –InterfaceAlias “Ethernet”

EJEMPLO:

Get-NetIPAddrress –InterfaceAlias “Ethernet” -


addressfamily Ipv4

• Para ver todas el DNS:

Get-DNSClientServerAddress –InterfaceAlias “Ethernet”


2.- Configuración estática
1.- Obtenemos información:

Get-NetIPConfigutarion-> Detectamos la Interfaz y la

información.

Gip Ethernet -> Para ver las características del

adaptador ethernet
2.- Configuración estática
2.- Borramos IP y la puerta de enlace:

Remove-NetIPAddress –InterfaceAlias Ethernet -


Confirm:$false

Remove-NetRoute -InterfaceAlias Ethernet -


Confirm:$false

3.- Establecemos la nueva IP:

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress


192.168.27.200 –PrefixLength 24 -DefaultGateway
192.168.27.1
2.- Configuración estática
4.- Establecemos DNS:

Set-DnsClientServerAddress -InterfaceAlias
"Ethernet" -ServerAddresses 8.8.8.8, 8.8.4.4

5.-Comprobamos:

Gip -InterfaceAlias "Ethernet“

6.- Si es necesario , reiniciamos el adaptador:

Restart-NetAdapter -Name "Ethernet"


3.- Configuración dinámica
1.- Obtenemos información:

Gip -> Detectamos la Interfaz y la información.

Gip -InterfaceAlias "Ethernet“

2.- Borramos IP y la puerta de enlace:

Remove-NetIPAddress –InterfaceAlias Ethernet -Confirm:$false

Remove-NetRoute -InterfaceAlias Ethernet -Confirm:$false

3.- Habilitamos DHCP:

Set-NetIPInterface -InterfaceAlias "Ethernet" -Dhcp Enabled


3.- Configuración dinámica
4.- Habilitamos DNS automático:

Set-DnsClientServerAddress -InterfaceAlias
"Ethernet" -ResetServerAddresses

5.-Comprobamos:

Gip -InterfaceAlias "Ethernet“

6.- Si es necesario , reiniciamos el adaptador:

Restart-NetAdapter -Name "Ethernet"


4.-Resumen de comandos
• Configuración estática:
• Remove-NetIPAddress: Borramos la IP.

• Remove-NetRoute: Borramos la puerta de enlace.

• New-NetIPAddress: Establecemos una nueva IP y la puerta de enlace.

• Set-DnsClientServerAddress: Establecemos los DNS.

• Configuración dinámica:
• Remove-NetIPAddress: Borramos la IP.

• Remove-NetRoute: Borramos la puerta de enlace.

• Set-NetIPInterface: Habilitamos DHCP para asignar la IP y la puerta de enlace.

• Set-DnsClientServerAddress: Establecemos los DNS.


Actividad: redes
• Añade un nuevo adaptador a la máquina virtual.

• Muestra todos los adaptadores de red de la máquina.

• Añade de forma estática una IP a ese nuevo adaptador.

• Modifica todo lo que necesites para que puedas


acceder a internet desde ese adaptador, para ello
realiza todo lo necesario para que la salida a internet
sea desde ese adaptador y no desde el que está
configurado por defecto en Virtual Box.
5.-Tabla de enrutamiento
• Para poder obtener la tabla de enrutamiento:

Get-NetRoute –InterfaceAlias “Ethernet” |FT –

Autosize

• Para sabe la tarjeta de red por la que se sale en un

ordenador:

Get-NetRoute |FT DestinationPrefix, NextHop,

InterfaceAlias
6.-DNS y Caché
• Para poder comprobar si el DNS está en

funcionamiento:

Resolve-DNSName www.google.es

• Para ver el contenido de la caché:

Get-DNSClientCache

Para limpiar la caché:

Clear-DNSClientCache
7.-Puertos
• Para poder comprobar el estado de los puertos:

Get-NetTCPConnection

• Para saber porque puertos se ha establecido la

conexión:

Get-NetTCPConnection –stable established |FT

LocalAdd
8.-Conectividad
• Para poder comprobar si hay conectividad por un

adaptador de red y su puerta de enlace:

Test-Connection 192.168.27.1

• Podemos configurar el Test para que en lugar de

enviar 4 paquetes como el ping mande solo uno :

Test-Connection 192.168.27.1 –count 1

Test-Connection www.google.es –count 1 –quiet


Permisos de seguridad
• Para poder ver la lista de los permisos que tiene asignado un
recurso:

Get-Acl –Path “c:\Datos” | fl

• Si queremos un recurso tenga los mismos permisos que otro,


podemos copiar los permisos de uno a otro.

Get-Acl –path “c:\Datos”| set-acl –path “c:\datos2”

• Para poder modificar los permisos NTFS, podemos usar el icacls


como en el cmd.

Icacls c:\Datos /grant pepe:m administradores:f


Uso de la variables
• Las variables las podemos usar para contener un valor determinado, y
posteriormente usar ese valor para alguna actividad.

• Para asignar un valor a una variable, usamos el símbolo $ y detrás el nombre de


la variable:

$variable=valor

• Para mostrar el contenido de la variable:

$variable

• Para eliminar el valor de una variable:

Clear-variable variable

• Para eliminar la variable:

Remove-variable variable
Gestión de carpetas compartidas
• En cualquier organización compartimos cada vez más
datos.

• Esa compartición se hace gracias al protocolo SMB


(Server Message Block).

• Recordemos que el último ataque de malware a nivel


mundial (Wannacry) explotó una inseguridad del
protocolo SMB1.

• En consecuencia debemos utilizar SMB2 o SMB3, que


viene por defecto activado.
Gestión de carpetas compartidas
• Detectar SMB:

Get-SmbServerConfiguration

• Podemos filtrar para saber si está activado el protocolo


SMB:

Get-SmbServerConfiguration |fl EnableSMB*

• En el caso de que no esté activado lo activaremos:

Set-SmbServerConfiguration –EnableSMB2Protocol $True

• En el caso de que queramos desactivarlo: $False


Gestión de carpetas compartidas
• Para conocer los cmdlets para trabajar con recursos
compartidos:

Get-Command *smbshare*

Get-command *smbshare* |Ft -autosize –Wrap

• Estos comandos los podemos encontrar en el


siguiente módulo:

Get-Command -Module smbshare


Información de los recursos compartidos
• Mostrar los recursos compartidos: Get-SmbShare
Aparece todos los recursos compartidos incluidos los del sistema.

• Mostrar los recursos compartidos excluidos los especiales.

Get-SmbShare -Special:$false|fl

• Mostrar información de un recurso

Get-SmbShare -Name c$|fl

• Mostrar los permisos de un recurso

Get-SmbShareAccess -Name c$|fl


Crear un recurso compartido
• Creamos la carpeta: C:\compartida

New-Item c:\datos –ItemType Directory

• Creamos el recurso compartido.

New-SmbShare -Path c:\compartida -Name


micompartida

Get-smbshare -Special:$false

• ¿Qué permisos se le ha asignado?

Get-SmbShareAccess -Name datos|fl


EJERCICIO :
• Creamos dos usuarios: ASIR, SMR, creamos la carpeta:
C:\APUNTESASIR.

• Creamos el recurso compartido, de forma que al usuario


ASIR le damos todos los permisos y al usuario SMR, solo
lectura.

New-SmbShare -Path C:\ APUNTESASIR \ -Name


APUNTESASIR -FullAccess ASIR -ReadAccess SMR

Get-SmbShareAccess -Name APUNTESASIR

Get-SmbShareAccess -Name APUNTESASIR |fl


EJERCICIO:
• Vamos a añadir el permiso de control total
al usuario ASIR sobre el recurso
APUNTESASIR.
Get-SmbShareAccess -Name APUNTESASIR
Grant-SmbShareAccess -Name APUNTESASIR -
AccountName ASIR -AccessRight Full -Force
Get-SmbShareAccess -Name APUNTESASIR |fl
EJERCICIO:
• Vamos a quitar los permisos que tiene el
usuario ASIR sobre el recurso APUNTESASIR.

Get-SmbShareAccess -Name APUNTESASIR

Revoke-SmbShareAccess -Name APUNTESASIR


-AccountName ASIR -Force

Get-SmbShareAccess -Name APUNTESASIR


EJERCICIO:
• Vamos a denegar el acceso al usuario ASIR
al recurso APUNTESASIR.

Get-SmbShareAccess -Name APUNTESASIR

Block-SmbShareAccess -Name APUNTESASIR

-AccountName ASIR -Force

Get-SmbShareAccess -Name APUNTESASIR |fl


EJERCICIO:
• Vamos a desbloquear el acceso al usuario
ASIR al recurso APUNTESASIR.

Get-SmbShareAccess -Name APUNTESASIR

Unblock-SmbShareAccess -Name
APUNTESASIR -AccountName ASIR -force

Get-SmbShareAccess -Name APUNTESASIR |fl


Eliminar el recurso compartido
• Para Eliminar un recurso compartido:

Remove-SmbShare -Name
APUNTESASIR –Force

Get-SmbShare -Special:$FALSE
Gestión de carpetas compartidas
• Get-SmbShare: muestra las carpetas
compartidas.
• New-SmbShare: Crea una carpeta compartida.
La carpeta debe existir.
• Set-SmbShare: Establece o modifica una
propiedad de la carpeta comartida.
• Remove-SmbShare: Elimina una carpeta
compartida
Gestión de permisos de acceso:
• Get-SmbShareAccess: muestra los permisos asignados a
una carpeta compartida.

• Grant-SmbShareAccess: añade permisos del tipo Permitir.

• Revoke-SmbShareAccess: elimina permisos del tipo


Permitir.

• Block-SmbShareAccess: añade permisos del tipo Denegar.

• Unblock-SmbShareAccess: elimina permisos del tipo


Denegar
Gestión de carpetas compartidas
• Antes de continuar, vamos a eliminar el recurso
compartido datos, los usuarios y las carpetas que
hemos creado.

• Remove-SmbShare -Name datos –Force

• Remove-LocalUser ASIR, SMR

• Remove-Item c:\APUNTESASIR –Recurse

• Remove-Item c:/ APUNTESASIR -Recurse


Chocolatey
• Chocolatery nos ayuda a instalar software.

• Cuando instalamos software desde el administrador de Windows

tenemos que seguir la instalaciones de un asistente que nos va

guiando en la instalación.

• Igual que desde hace ya bastante tiempo, existe el instalador

múltiple de Ninite y los Sistemas Operativos de Linux poseen

instaladores sencillos del software; aparece Chocolatey, que nos

simplifica la instalación de los programas dentro del Sistema

Operativo de Windows.
Ninite
Ninite
¿Qué es Chocolatey?
• Chocolatey, es un gestor de paquetes e instalador a
nivel de máquina para paquetes de software, creado
para la plataforma Windows.

• El motor de ejecución utiliza la infraestructura de


empaquetado de NuGet y Windows PowerShell para
proporcionar una herramienta de automatización e
instalar software en máquinas Windows y fue diseñado
para simplificar el proceso desde la perspectiva del
usuario.
Requisitos Chocolatey
• Para los clientes de Chocolatey, se necesita lo
siguiente:

• Windows 7 + / Windows 2003+ (Server Core


también, pero no Windows Nano Server)

• Windows PowerShell v2 + (aún no PowerShell


Core, también conocido como PowerShell 6)

• .NET Framework 4.x


Chocolatey
• Con Chocolatey solo debes escribir una línea de código
agregando los comandos adecuados posteriormente a la propia
instalación de Chocolatey en sí e instantáneamente tendremos el
programa instalado.

• Chocolatey, trae a Windows; una metodología de instalación y


actualización similar a la usada sobre los Sistemas Operativos de
Linux desde hace ya, mucho tiempo atrás.

• Facilitar al máximo las instalaciones a los usuarios de Windows.

• Además, Chocolatey nos ofrece 7.850 posibilidades, entre


programas y otros posibles paquetes de instalación.
Chocolatey
• Para conocer todos los comandos de Chocolatey:

Choco comando –help después de la instalación del programa.

Lista de Comandos:

• list: lista de paquetes remotos o locales.

• search: busca paquetes remotos o locales (alias para la lista).

• info: recupera información del paquete “choco search pkgname –exact –

verbose”.

• install: instala paquetes de varias fuentes.

• pin: suprimir las actualizaciones de un paquete.


Chocolatey
• outdated: recupera los paquetes desactualizados. Similar a actualizar todo «`upgrade all –
noop«`

• upgrade: actualiza paquetes de varias fuentes

• uninstall: desinstala un paquete.

• pack: empaqueta un «nuspec» a un «nupkg» compilado

• push: empuja un «nupkg» compilado

• new: genera archivos necesarios para un paquete de Chocolatey a partir de una plantilla

• sources: vea y configure las fuentes predeterminadas (alias para la fuente)

• source: vea y configure las fuentes predeterminadas

• config: recuperar y configurar los ajustes del archivo de configuración

• feature: ver y configurar las características de choco

• setapikey: vea y configure las características de choco (alias para la característica)


Chocolatey
• apikey: recupera o guarda una apikey para una fuente particular (alias para apikey)

• unpackself: hacer que el chocolate se instale

• version: [DEPRECATED] se elimino en la versión 1 – usa «choco outdated«

• update: [DEPRECATED] RESERVADO para uso futuro

• support: proporciona información de soporte

• download: descargar paquetes – opcionalmente internalizar todos los recursos


remotos

• synchronize: sincroniza con el software instalado en el sistema – genera paquetes


faltantes

• sync: sincroniza con el software instalado en el sistema – genera paquetes faltantes

• optimize: optimiza la instalación, reduciendo el uso de espacio


Instalación de Chocolatey
• Antes de nada debemos comprobar la política de

ejecución de programas que tenemos:

Get-ExecutionPolicy

• En caso de no estar bypass o Unrestricted:

Set-ExecutionPolicy Bypass -Scope Process -Force


Instalación de Chocolatey
• Para la instalación desde PowerShell.exe de Windows.

[System.Net.ServicePointManager]::SecurityProtocol =

[System.Net.ServicePointManager]::SecurityProtocol -bor

3072; iex ((New-Object

System.Net.WebClient).DownloadString('https://chocolatey.or

g/install.ps1'))

Se debe ejecutar como administrador.

• Luego entraremos: https://chocolatey.org/packages


Community Packages
Chocolatey
Chocolatey
• Desde está página debemos ir buscando el
Software o ‘Package’ que deseamos utilizar
para poder copiar la línea de código
adecuada, o bien podríamos probar suerte,
puesto que la línea de código es siempre la
misma.

choco install nombre-del-programa


Chocolatey: comandos
• Si queremos ver todos los programas instalados desde el

chocolatey:

Choco list –local-only

• Cuando queramos ver todos los programas, incluidos aquellos

que se han instalado desde fuera del chocolatey:

Choco list –li

Podemos investigar la ayuda:

Choco list -help


Chocolatey: Ejemplo
• Vamos a instalar el programa Notepad++.

Choco search Notepad++

• Así vemos el programa” su nombre”: notepadplusplus 7.8.4

• Si queremos ver la información sobe ese paquete:

Choco info notepadplusplus

Para instalarlo:

Choco install notepadplusplus


Chocolatey
• Ahora podemos ver que programas se han instalado en
Windows desde el chocolatey con
Choco list –li
• Vemos que nos aparece el Notepad++
• Si queremos desinstalar este programa deberemos hacerlo
desde el programa que lo instaló:
Choco uninstall notepadplusplus
• Si desinstalamos desde el panel de control nos dará un error
si queremos volver a instalar desde el chocolatey.
Chocolatey

• Esto puede no parecer muy poderoso al principio,

pero muy útil en el caso de querer actualizar

todo el software del sistema a las versiones más

recientes y seguras.
Chocolatey

Para realizar ese tipo de actualizaciones


desde Chocolatey :
• Abrir línea de comando
• choco upgrade all –y
Chocolatey
Ahora contrasta eso con cómo haces lo mismo
con Manualmente :
• Buscar la versión más reciente.

• Elije (con suerte) la descarga correcta.

• Espera a que se descargue.

• Desbloquéalo

• Instálelo manualmente (¿siguiente, siguiente, próximo a alguien?)

• Espero que no haya instalado ningún malware

• Ahora repite nuevamente para CADA software en su sistema.


Chocolatey

Ejercicio:
• Buscar e instalar vlc. Actualizar y desinstalar. Para ello se usará el
gestor de paquetes chocolatey.
Chocolatey

Ejercicio:
• Instalar chocolateygui
PowerShell
PowerShell: políticas de ejecución
PowerShell

• Al igual que usamos choco install <paquete> se puede usar la


versión abreviada cinst <paquete>.

• Para actualizar un paquete usaremos choco update <paquete>


o cup <paquete> en su versión abreviada. Con cup all
podemos actualizar todos los paquetes.

• La desinstalación es igual de sencilla. Choco unistall <paquete>


VISOR DE EVENTOS
• Usar visor de sucesos y eventos a través de Windows
PowerShell en Windows 10.

• Para acceder al visor de eventos también es posible


hacerlo a través de Windows PowerShell.

• Para ello abrimos una consola de PowerShell e


ingresaremos el siguiente cmdlet:

Get-EventLog –list
VISOR DE EVENTOS
VISOR DE EVENTOS
• Podemos ver un resumen de cuantos eventos hay en cada
categoría, así como el tamaño de cada una de las mismas.

• Podemos ver los últimos eventos en un grupo determinado


usando la siguiente sintaxis:

Get-EventLog Nombre_grupo -newest nº de eventos

• Por ejemplo, usaremos la siguiente línea. En este caso


vemos los últimos 5 eventos del grupo System.

Get-EventLog system -newest 5


VISOR DE EVENTOS
VISOR DE EVENTOS
• Para ver todos los eventos de un grupo en especial, usaremos la siguiente sintaxis:

Get-EventLog Nombre_Grupo

• Ejemplo, ver todos los eventos del grupo Application usaremos og siguiente línea:

Get-EventLog Application

• Para ver información detallada sobre un número determinado de eventos podemos


usar la siguiente sintaxis:

Get-EventLog Nombre_Grupo -newest <Nº de eventos> | Format-List

• Por ejemplo, ver en forma detallada los últimos 3 eventos del grupo Application
usaremos la siguiente sintaxis. Podemos ver información completa de cada evento.

Get-EventLog Application -newest 3 | Format-List


VISOR DE EVENTOS
VISOR DE EVENTOS

• Si deseamos obtener una vista más gráfica para


gestionar los eventos desde Windows PowerShell
podemos agregar el parámetro: Out-GridView
usando el siguiente cmdlet:

Get-EventLog system | Out-GridView


VISOR DE EVENTOS
Estructuras de control

• Estructuras de Selección: switch, if.

• Estructuras de Iteración: for, for each, while, do


while, do until.

• Cmd-let: foreach-object
Arrays o Matriz
• Un array es un medio de guardar un conjunto de objetos de la misma clase. Se
accede a cada elemento individual del array mediante un número entero
denominado índice.

0 es el índice del primer elemento y n-1 es el índice del último elemento, siendo
n, la dimensión del array.

• En este ejemplo almacenaremos valores como strings y luego los


recuperaremos:
$frutas =@(“manzana”,”pera”,”fresa”)

$frutas[0]

$frutas[1]

$frutas[2]
Tablas Hash
• Las tablas hash, son estructuras de datos que nos
permiten almacenar datos en pares. “Clave -> Valor”.
Esto nos permite realizar funciones como búsqueda,
inserción y borrado de datos con mayor eficiencia que
utilizando otras estructuras.
#tabla hash
$frutas = @{Manzanas=”1,20” ; Peras=”0,90” ; Uvas
=”2,60”}
$frutas
Tablas Hash
Tablas Hash
#Agregar un elemento
$frutas[“Banana”] = ”1,00”
#Remover un elemento
$frutas.Remove(“Manzanas”)
#Obtener el valor de un Elemento
$frutas.Peras
#Contar cuantos elementos tiene la hashtable
$frutas.Count
#Mostrar Claves almacenadas
$frutas.keys
#Mostrar valores almacenados
$frutas.values
#Eliminar todos los valores
$frutas.clear()
Switch
• La instrucción Switch permite reemplazar toda una
serie de If, ElseIf y Else. A diferencia de las
instrucciones If que, para una instrucción dada, orienta
la ejecución siguiente hacia uno de los dos bloques de
instrucciones, la instrucción Switch orienta la ejecución
hacia varios bloques de instrucciones distintos. Y eso
con una sola expresión.

• Esto le confiere un uso más flexible.


Switch
La sintaxis de Switch es la siguiente:

• El valor Default es opcional. Su bloque de instrucciones


solo se ejecuta cuando la expresión no corresponde
con ningún valor.
Switch
• Ejemplo: Un usuario introduce un número
entre 1 y 5 y PowerShell determina qué número se
ha introducido.
Ejercicio:

• Crea un menú en el cual el usuario pueda elegir


entre las diferentes tareas:
• Mostrar la configuración de red del equipo.

• Mostrar el nombre del equipo.

• Mostrar el usuario actualmente conectado.

• Mostrar los usuarios creados en el sistema.


Operadores de comparación
simples:

• 2 -eq 2 # Equal to (==)


• 2 -ne 4 # Not equal to (!=)
• 5 -gt 2 # Greater-than (>)
• 5 -ge 5 # Greater-than or equal to (>=)
• 5 -lt 10 # Less-than (<)
• 5 -le 5 # Less-than or equal to (<=)
Operadores de comparación de
cadenas:
• “micadena" -like "*cadena" # coincide usando un
caracter comodín (*)

• “micadena" -notlike “otra*" # no coincide usando


caracteres (*)

• “micadena" -match "$micadena^" # coincide una


micadena, usando una expression regular

• “micadena" -notmatch “otra" # No coincide una


cadena con otra, usando una expression regular
IF…ELSE
• Cuando creamos scripts muchas veces necesitamos
condicionar la ejecución de ciertos bloques. La
forma más fácil es usando IF.
IF(Condición) {comando}
$var = Read-Host "Introduzca un carácter"
If ($var -eq ’A’)
{
"El carácter introducido por el usuario es una ’A’"
}
IF…ELSE
Comprueba si en el directorio de trabajo existe un
fichero dado por el usuario.
$fichero=read-host(“Dime el nombre del fichero a
buscar”)
If (Get-ChildItem –File $fichero) {echo OK}
En este caso si la condición es verdadera devolverá el
valor OK, de lo contrario mostrara un mensaje de
error.
IF…ELSE

• Podemos incluir entonces ELSE


Else
{
# Bloque de instrucciones 2
Echo "No has introducido una A"
Echo "has introducido una:" $var”
}
IF…ELSE

• IF(Condición) {comando1} ELSE {comando2}

If (Get-ChildItem –File c:\resultado.txt) {echo

CORRECTO}

Else {echo NO correcto}


IF…ELSEIF… ELSE

• Crea un fichero en el directorio de trabajo y


pregunta al usuario si se creo el fichero
correctamente, en caso de que se haya creado
correctamente deberemos de preguntar al usuario
si desea borrar el fichero que acabamos de crear.
FOR…FOREACH…WHILE
• Dentro de nuestros Scripts también tendremos necesidad de
realizar LOOPS o BUCLES para determinados comandos.

• Dentro de PowerShell puedes crear bucles de diversas maneras es


muy similar a otros lenguajes de programación/scripting.

For

ForEach

While

Do While

Do Until
WHILE
• While, es sumamente simple su estructura:

While (Condición)
$a = 0
While ($a –lt 5)
{
$a++
$a
}
• En este caso la salida serán los números del 1 al 5
Ejercicio

• Modifica el ejercicio del menú para que se repita el


menú hasta que el usuario pulse el valor 5, en ese
caso se abandona la ejecución del script.
Do while

• Repite un comando o un conjunto de comandos


mientras no se cumpla la condición del while.

Do

{
comandos

} While (Condición)
FOR

• El más simple es FOR:

For ($a=1; $a –le 100; $a++)

write-host $a

• Esto nos mostrará una lista de números del 1 al 100


FOREACH

• Normalmente utilizamos foreach para ejecutar cada


ítem de un grupo de datos, sean datos recolectados en
un comando o un filtro de datos en un array.

ForEach ($variable e ítems) {código a ejecutar}

Foreach ($numeros in 1,2,3,4,5) {$numeros+100}

• Obtendremos como resultado los números del 101 al


105
Ejercicio

• Realiza un programa que muestre todos los


procesos del sistema que se encuentran en estado
de espera “IDLE”

También podría gustarte