scripts de administración power shell
Post on 30-Oct-2014
364 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related