24
SCRIPTS POWERSHELL 2012 Javier García Cambronel SEGUNDO DE ASIR 28/02/2012

Scripts de Administración Power Shell

Embed Size (px)

DESCRIPTION

2012SCRIPTS POWERSHELLJavier García Cambronel SEGUNDO DE ASIR 28/02/2012[SCRIPTS POWERSHELL] 28 de febrero de 2012INSTALACIÓN Y CONFIGURACIÓN DE POWERSHELL SCRIPTS PARA LA ADMINISTRACION DE ACTIVE DIRECTORYSCRIPTS SOBRE EL SISTEMASEGUNDO DE ASIRPágina 1[SCRIPTS POWERSHELL] 28 de febrero de 2012INSTALACIÓN Y CONFIGURACIÓN DE POWERSHELLBueno, lo normal, es que si tenemos Windows server 2008 actualizado, ya tengamos Windows poweshell, pues lo instala con una de estas actualizac

Citation preview

Page 1: Scripts de Administración Power Shell

SCRIPTS POWERSHELL

2012

Javier García Cambronel SEGUNDO DE ASIR

28/02/2012

Page 2: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 1

INSTALACIÓN Y

CONFIGURACIÓN DE

POWERSHELL

SCRIPTS PARA LA

ADMINISTRACION DE ACTIVE

DIRECTORY

SCRIPTS SOBRE EL SISTEMA

Page 3: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 2

INSTALACIÓN Y CONFIGURACIÓN DE POWERSHELL

Bueno, lo normal, es que si tenemos Windows server 2008 actualizado, ya tengamos

Windows poweshell, pues lo instala con una de estas actualizaciones, es de suponer que en

siguientes Windows server como el 2012 ya vendrá preinstalada, al igual que pasa con

Windows7 que viene por defecto.

Si no tenemos Windows powershell instalado, lo que hacemos será dirigirnos, a

administración del servidor a Características y una vez que hemos pulsado en características

le diremos que agregar características

Marcaríamos Windows powershell, y pulsaríamos en siguiente, para llevar a cabo la

instalación. Des pues de que terminara la instalación, ya podríamos ejecutar Windows

powershell sin problemas.

Page 4: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 3

Lo encontraremos sin problemas, solo escribiendo en el cuadro de búsqueda situado en la

barra de inicio y procederemos a ejecutarlo.

Page 5: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 4

PERMITIR LA EJECUCUON DE SCRIPTS

Y lo abriremos para habilitar la opción de ejecución de scripts ya que por defecto viene

desactivada:

El sistema operativo para protegernos de la ejecución de código malicioso impedirá en

primera instancia la ejecución de cualquier script.

Para verificar como está configurado el sistema operativo en lo que se refiere a la directiva

de ejecución de script, escribir este comando:

Get-ExecutionPolicy

Pero si realmente necesitamos ejecutar el script porque nosotros somos los creadores,

podemos permitir temporalmente permitir la ejecución con el comando (habiendo iniciado

powershell como administrador)

Este comando permitirá los script en la maquina local:

Set-ExecutionPolicy RemoteSigned

[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es "S"): s

Si queremos permitir la ejecución de todos aunque no estén en local:

Set-ExecutionPolicy Unrestricted

[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es "S"): s

Y si finalmente queremos dejar como estaba en un principio (o para no permitir la ejecución

de nada que este firmado)

Set-ExecutionPolicy AllSigned

[S] Sí [N] No [U] Suspender [?] Ayuda (el valor predeterminado es "S"): s

Si estamos interesados en conocer como firmar nuestros scripts consultar:

Get-Help About_Signing

En mi caso como podemos ver he declarado la política menos restrictiva, y aquí hago la

comprobación, de que esta ha tenido efecto.

Page 6: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 5

FORMAS DE EJECUTAR LOS SCRIPTS

Para probar esto, creamos un script lo más sencillo posible, como el que vemos en la

siguiente imagen.

PRIMERA FORMA

Pues ciertamente vamos a decir que hay dos formas, una de ellas la que la mayoría de la

gente utiliza, que es ejecutar powershell, situarnos en la ruta donde tenemos el script, en

nuestro caso el escritorio y ejecutarlo poniendo ./nombredelarchivo

SEGUNDA FORMA

Yo personalmente, prefiero esta segunda forma, perderemos como mucho cinco minutos en

hacerlo pero después con un simple doble clic podremos ejecutarlos

Page 7: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 6

Vemos el tipo de archivo y demás y le daremos donde pone se abre con: a cambiar

Nos vamos a la ruta de powershell la cual indico a continuación y lo seleccionamos

C:\Windows\System32\WindowsPowerShell\v1.0

Dejaremos como programa predeterminado el bloc de notas, pero en programas

recomendados se encontrara powershell, y este era nuestro objetivo.

Page 8: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 7

Porque una vez este en programas recomendados con pulsar el botón derecho en la sección

abrir con, podremos ejecutarlos perfectamente.

Y como vemos así es:

Page 9: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 8

SCRIPTS PARA LA ADMINISTRACION DE ACTIVE

DIRECTORY BUSCAR USUARIOS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

echo "Para ver los usuarios de una unidad organizativa, sigue las instrucciones:"

$dom= read-host "Solo el nombre del dominio"

$term= read-host "terminacion del dominio"

do{

$UO= read-host "En que unidad organizativa deseas buscar"

#$UO=$args[0]

$filtro_busqueda = "(&(objectCategory=User))"

$buscardom ="LDAP://OU=$UO,DC=$dom,DC=$term"

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher

$objSearcher.SearchRoot = $buscardom

$objSearcher.Filter = $filtro

$Resultados = $objSearcher.FindAll()

write-host "Los usuarios de"$UO "son:"

foreach ($objeto_Resultado in $Resultados) {

$objeto = $objeto_Resultado.Properties; $objeto.name

}

$response = read-host "¿deseas buscar en otra unidad?S/N"

}

while ($response -eq "S")

Page 10: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 9

COMPROBACION

Page 11: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 10

CREAR UNIDADES ORGANIZATIVAS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

echo "Para crear unidades organizativas, sigue las instrucciones:"

$objDominio = read-host "Solo el nombre del dominio"

$objDominio2 = read-host "terminacion del dominio"

do{

$nueva_ou = read-host "Nombre de la Unidad organizativa"

#$nueva_ou=$args[0]

#$num=$args[1]

$objDominio3=[ADSI]"LDAP://DC=$objDominio,DC=$objDominio2"

$objOU=$objDominio3.Create("OrganizationalUnit","ou=$nueva_ou")

$objOU.Put("description","Nueva OU creada para $nueva_ou")

$objOU.SetInfo()

echo "unidad organizativa creada"

$response = read-host "¿deseas crear otra unidad organizativa?S/N"

}

while ($response -eq "S")

COMPROBACION

Page 12: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 11

CREAR UNIDADES ORGANIZATIVAS Y USUARIOS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

echo "Para crear unidades organizativas y usuarios dentro de ellas, sigue las instrucciones:"

$objDominio = read-host "Solo el nombre del dominio"

$objDominio2 = read-host "terminacion del dominio"

do{

$nueva_ou = read-host "Nombre de la Unidad organizativa"

$num = read-host "Numero de usuarios"

#$nueva_ou=$args[0]

#$num=$args[1]

$objDominio3=[ADSI]"LDAP://DC=$objDominio,DC=$objDominio2"

$objOU=$objDominio3.Create("OrganizationalUnit","ou=$nueva_ou")

$objOU.Put("description","Nueva OU creada para $nueva_ou")

$objOU.SetInfo()

#Bucle for para la insercion de usuarios

for ($a = 1; $a -le $num; $a++) {

$objOU=[ADSI]"LDAP://OU=$nueva_ou,DC=$objDominio,DC=$objDominio2"

$objUser=$objOU.Create("user","CN=user$nueva_ou$a")

$objUser.SetInfo()

dsmod user "CN=user$nueva_ou$a,

OU=$nueva_ou,DC=$objDominio,DC=$objDominio2" -disabled no

}

$response = read-host "¿deseas crear otra unidad organizativa?S/N"

}

while ($response -eq "S")

Page 13: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 12

COMPROBACION

Page 14: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 13

BORRAR UNIDADES ORGANIZATIVAS Y USUARIOS DE LAS MISMAS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

echo "Para borrar unidades organizativas y usuarios dentro de ellas, sigue las instrucciones:"

$objDominio = read-host "Solo el nombre del dominio"

$objDominio2 = read-host "terminacion del dominio"

$unidad_org = read-host "Unidad organizativa que deseas borrar"

while ($unidad_org -ne "*") {

$Dom = "LDAP://OU=$unidad_org,DC=$objDominio,DC=$objDominio2"

$Root = New-Object DirectoryServices.DirectoryEntry $Dom

# Crea un "selector" que busca los objetos dentro de una OU

$selector = New-Object DirectoryServices.DirectorySearcher

$selector.SearchRoot = $root

$erroractionpreference = "SilentlyContinue"

if ($Selector.FindAll() -ne $null) {

$Selector.Count

#De este modo veriamos los usuarios de nuestra ou

write-host "Hay todos estos usuarios"

$Selector.FindAll()

$adobj= $Selector.findall() |`

where {$_.properties.objectcategory -match "CN=Person"}

#Asi contamos el numero de usuarios que hay en nuestra OU

$n=$adobj.count

write-host "El numero de usuarios a borrar es de:"$n

$puls = read-host "¿Estas seguro de querer borrar todos estos usuarios?s/n"

if ($puls -ne "no") {

$o = $Selector.findall()

foreach ($usu in $o) {

$u=$usu.Properties.cn

$username="LDAP://CN=$u,OU=$unidad_org,DC=$objDominio,DC=$objDominio2"

write-host "Usuario"$u

#Usuarios borrados

$user = [ADSI] "$username"

write-host $username

$user.psbase.DeleteTree()

}

Page 15: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 14

} else {

break

}

#Borramos también la OU que hemos seleccionado

$dominio = [ADSI]"LDAP://DC=$objDominio,DC=$objDominio2"

$delou = $dominio.Delete("OrganizationalUnit","ou=$unidad_org")

}

#Preguntamos de nuevo por la Unidad Organizativa

$unidad_org = read-host "unidad organizativa que deseas borrar"

}

Page 16: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 15

COMPROBACION

Page 17: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 16

EDITAR ATRIBUTOS DE LOS USUARIOS DE UNA UNIDAD ORGANIZATIVA

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

$objDominio = read-host "Solo el nombre del dominio"

$objDominio2 = read-host "terminacion del dominio"

do{

$UO = read-host "los usuarios de que unidad organizativa, deseas modificar el atributo"

$Dom = "LDAP://OU=$UO,DC=$objDominio,DC=$objDominio2"

$Root = New-Object DirectoryServices.DirectoryEntry $Dom

$puntero = New-Object DirectoryServices.DirectorySearcher

$puntero.SearchRoot = $root

$erroractionpreference = "SilentlyContinue"

if ($puntero.FindAll() -ne $null) {

$puntero.Count

#De este modo veriamos los usuarios de nuestra ou

write-host "Hay todos estos usuarios"

$puntero.FindAll()

$adobj= $puntero.findall() |`

where {$_.properties.objectcategory -match "CN=Person"}

$n=$adobj.count

write-host "Hay estos usuarios:""$n"

$at = read-host "Atributo que deseas cambiar"

$info = read-host "Nuevo valor para el atributo especificado"$at

$o = $puntero.findall()

foreach ($usu in $o) {

#Usuarios modificados

write-host ","$usu.Properties.cn

$path=$usu.Properties.adspath

$usuario=[ADSI]"$path"

$usuario.Put("$at", $info)

$usuario.SetInfo()

}

echo "atributo modificado perfectamente"

}

$response = read-host "¿deseas editar otro atibuto?S/N"

}

while ($response -eq "S")

Page 18: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 17

COMPROBACION

Page 19: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 18

SCRIPTS SOBRE EL SISTEMA PARAR SERVICIOS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

do{

$var = read-host "Quieres ver servicios activos o parados "

$run="activos"

$stop="parados"

if ($var -eq $run) {

get-service | where-object {$_.Status -eq "Running"}

$parar = read-host "¿Quieres parar algun servicio (s/n)?"

if ($parar -eq "s") {

$ser = read-host "nombre del servicio que quieres parar"

Stop-service -name $ser

}else {

exit

}

} elseif ($var -eq $stop) {

get-service | where-object {$_.Status -eq "Stopped"}

} else {

write-host "Solo procesos activos o parados"

}

$response = read-host "¿deseas realizar otra operacion?S/N"

}

while ($response -eq "S")

Page 20: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 19

COMPROBACION

Page 21: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 20

INICIAR SERVICIOS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

do{

$var = read-host "Quieres ver servicios activos o parados "

$run="activos"

$stop="parados"

if ($var -eq $stop) {

get-service | where-object {$_.Status -eq "Stopped"}

$iniciar = read-host "¿Quieres iniciar algun servicio (s/n)?"

if ($iniciar -eq "s") {

$ser = read-host "nombre del servicio que quieres iniciar"

Start-service -name $ser

}else {

exit

}

} elseif ($var -eq $run) {

get-service | where-object {$_.Status -eq "Running"}

} else {

write-host "Solo procesos activos o parados"

}

$response = read-host "¿deseas realizar otra operacion?S/N"

}

while ($response -eq "S")

Page 22: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 21

COMPROBACION

Page 23: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 22

MATAR PROCESOS

echo "************************"

echo "##J##A##V##I##--ASIR2012"

echo "************************"

do{

write-host "Los procesos del sistema son:"

write-host

Get-process

$res = read-host "¿Quieres finalizar algun proceso (s/n)"

if ($res -eq "s")

{

$term = read-host "que proceso es:"

Get-Process | Where-Object { $_.name –eq $term } | Foreach-Object { $_.Kill() }

echo "proceso finalizado correctamente"

} else {

exit

}

$response = read-host "¿deseas finalizar otro proceso?S/N"

}

while ($response -eq "S")

Page 24: Scripts de Administración Power Shell

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 23

COMPROBACION