Scripts de Administración Power Shell

Post on 30-Oct-2014

364 views 7 download

Tags:

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

Transcript of Scripts de Administración Power Shell

SCRIPTS POWERSHELL

2012

Javier García Cambronel SEGUNDO DE ASIR

28/02/2012

[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

[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.

[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.

[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.

[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

[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.

[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:

[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")

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 9

COMPROBACION

[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

[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")

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 12

COMPROBACION

[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()

}

[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"

}

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 15

COMPROBACION

[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")

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 17

COMPROBACION

[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")

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 19

COMPROBACION

[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")

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 21

COMPROBACION

[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")

[SCRIPTS POWERSHELL] 28 de febrero de 2012

SEGUNDO DE ASIR Página 23

COMPROBACION