Scripts de Administración Power Shell
-
Upload
javierasir2012 -
Category
Documents
-
view
364 -
download
7
description
Transcript of Scripts de Administración Power Shell
![Page 1: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/1.jpg)
SCRIPTS POWERSHELL
2012
Javier García Cambronel SEGUNDO DE ASIR
28/02/2012
![Page 2: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/2.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/3.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/4.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/5.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/6.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/7.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/8.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/9.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/10.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 9
COMPROBACION
![Page 11: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/11.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/12.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/13.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 12
COMPROBACION
![Page 14: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/14.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/15.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/16.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 15
COMPROBACION
![Page 17: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/17.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/18.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 17
COMPROBACION
![Page 19: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/19.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/20.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 19
COMPROBACION
![Page 21: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/21.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/22.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 21
COMPROBACION
![Page 23: Scripts de Administración Power Shell](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/23.jpg)
[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](https://reader036.fdocuments.ec/reader036/viewer/2022081715/5452c8d5af795904308b5092/html5/thumbnails/24.jpg)
[SCRIPTS POWERSHELL] 28 de febrero de 2012
SEGUNDO DE ASIR Página 23
COMPROBACION