param ( [string]$password = "@lumn01234", [string]$nuevo_usuario, [string]$grupo, #cuando creamos un nuevo usuario lo metemos dentro de este grupo si existe si no lo creamos, tambien para añadir y quitar usuarios del grupo [string]$usuario, #lo usasmos para añadir usuarios y quitar usuarios del grupo [string]$listar_miembros_grupo, [string]$nuevo_grupo, [string]$eliminar_grupo, [string]$eliminar_usuario, [switch]$eliminar_usuario_grupo, [switch]$meter_usuario_grupo, [switch]$help, [switch]$listar_usuarios, [switch]$listar_grupos, [switch]$info, [string]$nueva_OU , [string]$eliminar_OU, [switch]$listar_OU ) $dirAD="DC=tunombre,DC=local" $mail="@tunombre.local" function Info { Get-ADComputer -Filter * } function help { Write-Host "" Write-Host "Mostrar ayuda" -ForegroundColor Gray Write-Host "AD.ps1 -help" Write-Host "" Write-Host "Mostrar información del AD" -ForegroundColor Gray Write-Host "AD.ps1 -info" Write-Host "" Write-Host "Listar las unidades organizativas" -ForegroundColor Gray Write-Host "AD.ps1 -listar_OU" Write-Host "" Write-Host "Crear una nueva unidades organizativas" -ForegroundColor Gray Write-Host "AD.ps1 -nuevo_OU [grupo]" Write-Host "" Write-Host "Borrar una unidad organizativas" -ForegroundColor Gray Write-Host "AD.ps1 -eliminar_OU [grupo]" Write-Host "" Write-Host "Listar los grupos" -ForegroundColor Gray Write-Host "AD.ps1 -listar_grupos" Write-Host "" Write-Host "Crear un nuevo grupo" -ForegroundColor Gray Write-Host "AD.ps1 -nuevo_grupo [grupo]" Write-Host "" Write-Host "Eliminar un grupo" -ForegroundColor Gray Write-Host "AD.ps1 -eliminar_grupo [grupo]" Write-Host "" Write-Host "Crear un nuevo usuario" -ForegroundColor Gray Write-Host "AD.ps1 -nuevo_usuario [usuario]" Write-Host "AD.ps1 -nuevo_usuario [usuario] -password [password]" Write-Host "AD.ps1 -nuevo_usuario [usuario] -password [password] -grupo [Grupo]" Write-Host "" Write-Host "Eliminar un usuario" -ForegroundColor Gray Write-Host "AD.ps1 -eliminar_usuario [usuario]" Write-Host "" Write-Host "Listar los miembros de un grupo" -ForegroundColor Gray Write-Host "AD.ps1 -listar_miembros_grupo [grupo]" Write-Host "" Write-Host "Meter un usuario a un grupo" -ForegroundColor Gray Write-Host ".\AD.ps1 -meter_usuario_grupo -usuario [usuario] -grupo [grupo]" Write-Host "" Write-Host "Eliminar usuario de un grupo" -ForegroundColor Gray Write-Host ".\AD.ps1 -eliminar_usuario_grupo -usuario [usuario] -grupo [grupo]" } function Listar_Grupos { Write-Host "Grupos disponibles:" -ForegroundColor Green Get-ADGroup -Filter * | ForEach-Object { Write-Host $_.Name } } function Listar_MiembrosDeGrupo { if (Get-ADGroup -Filter "Name -eq '$listar_miembros_grupo'"){ Write-Host "Miembros del grupo $listar_miembros_grupo :" -ForegroundColor Green Get-ADGroupMember -Identity $listar_miembros_grupo } else { Write-Host "El grupo $listar_miembros_grupo no existe." -ForegroundColor Red } } function Crear_Grupo { if (Get-ADGroup -Filter "Name -eq '$nuevo_grupo'") { Write-Host "El grupo $nuevo_grupo ya existe." -ForegroundColor Red } else { New-ADGroup -DisplayName $nuevo_grupo -Name $nuevo_grupo -GroupScope DomainLocal -GroupCategory Security -Path $dirAD Write-Host "Creamos el grupo: $nuevo_grupo" -ForegroundColor Green } } function Eliminar_Grupo { if (Get-ADGroup -Filter "Name -eq '$eliminar_grupo'") { Remove-ADGroup -Identity $eliminar_grupo -Confirm:$false Write-Host "El grupo $eliminar_grupo ha sido eliminado." -ForegroundColor Green } else { Write-Host "El grupo $eliminar_grupo no existe." -ForegroundColor Red } } function Meter_Usuario_Grupo { if ([String]::IsNullOrEmpty($grupo)){ Write-Host "Necesitamos el parametro -grupo" -ForegroundColor Red }elseif ([String]::IsNullOrEmpty($usuario)){ Write-Host "Necesitamos el parametro -usuario" -ForegroundColor Red }elseif (-not (Get-ADGroup -Filter "Name -eq '$grupo'")) { Write-Host "El grupo $grupo no existe" -ForegroundColor Red }elseif (-not (Get-ADUser -Filter "Name -eq '$usuario'")) { Write-Host "El usuario $usuario no existe" -ForegroundColor Red } else { Add-ADGroupMember -Identity $grupo -Members $usuario Add-LocalGroupMember -Group $grupo -Member $usuario Write-Host "El usuario $usuario ha sido agregado al grupo $grupo" -ForegroundColor Green } } function Eliminar_Usuario_Grupo { if ([String]::IsNullOrEmpty($grupo)){ Write-Host "Necesitamos el parametro -grupo" -ForegroundColor Red }elseif ([String]::IsNullOrEmpty($usuario)){ Write-Host "Necesitamos el parametro -usuario" -ForegroundColor Red }elseif (-not (Get-ADGroup -Filter "Name -eq '$grupo'")) { Write-Host "El grupo $grupo no existe" -ForegroundColor Red }elseif (-not (Get-ADUser -Filter "Name -eq '$nuevo_usuario'")) { Write-Host "El usuario $usuario no existe" -ForegroundColor Red } else { Remove-ADGroupMember -Identity $grupo -Members $usuario Write-Host "El usuario $usuario ha sido eliminado del grupo $grupo." -ForegroundColor Green } } function Listar_Usuarios { Write-Host "Usuarios en el A:" -ForegroundColor Green Get-ADUser -Filter * | Select-Object Name } function Crear_Usuario { $ErrorActionPreference="Stop" if (Get-ADUser -Filter "Name -eq '$nuevo_usuario'") { Write-Host "El usuario $nuevo_usuario ya existe." -ForegroundColor Red } else { $usuario_creado=$True try{ $cadena_secure_string = $password | ConvertTo-SecureString -AsPlainText -Force New-AdUser -Name $nuevo_usuario -SamAccountName $nuevo_usuario -UserPrincipalName $nuevo_usuario$mail -GivenName $nuevo_usuario -AccountPassword $cadena_secure_string -Enabled $True Write-Host "El usuario $nuevo_usuario ha sido creado y añadido al grupo Users." -ForegroundColor Green }catch{ $usuario_creado=$False Write-Host "Error: la contraseña no cumple con los requititos no creamos el usuario $nuevo_usuario " -ForegroundColor Red } if($usuario_creado){ # Para que los usuarios puedan iniciar sesión con entorno gráfico # Add-LocalGroupMember -Group "Users" -Member $nuevo_usuario if (-not [String]::IsNullOrEmpty($grupo)){ if(-not (Get-ADGroup -Filter "Name -eq '$grupo'")) { New-ADGroup -DisplayName $grupo -Name $grupo -GroupScope DomainLocal -GroupCategory Security -Path $dirAD Write-Host "Creamos el grupo: $grupo" -ForegroundColor Green } Add-ADGroupMember -Identity Group $grupo -Member $nuevo_usuario Write-Host "Metemos al usuario $nuevo_usuario en el grupo $grupo" -ForegroundColor Green } } } $ErrorActionPreference="Continue" } function Eliminar_Usuario { if (Get-ADUser -Filter "Name -eq '$eliminar_usuario'") { Remove-ADUser -Identity $eliminar_usuario -Confirm:$false Write-Host "El usuario $eliminar_usuario ha sido eliminado." -ForegroundColor Green } else { Write-Host "El usuario $eliminar_usuario no existe." -ForegroundColor Red } } function Crear_OU { if(Get-ADOrganizationalUnit -Filter "Name -eq '$nueva_OU'"){ Write-Host "$nueva_OU existe no se crea" -ForegroundColor Red }else{ New-ADOrganizationalUnit -DisplayName $nueva_OU -Name $nueva_OU -path "DC=tunombre,DC=local" Write-Host "$nueva_OU se ha creado" -ForegroundColor Green } } function Eliminar_OU { if(-not (Get-ADOrganizationalUnit -Filter "Name -eq '$eliminar_OU'")){ Write-Host "$eliminar_OU no existe no se elimina" -ForegroundColor Red }else{ Set-ADOrganizationalUnit -Identity "OU=$eliminar_OU,DC=tunombre,DC=local" -ProtectedFromAccidentalDeletion $False Remove-ADOrganizationalUnit -Identity "OU=$eliminar_OU,DC=tunombre,DC=local" -Recursive -Confirm:$false Write-Host "$eliminar_OU se ha eliminado de forma recursiva sin confirmación" -ForegroundColor Green } } if ($help){help} if ($listar_grupos){Listar_Grupos} if (-not [String]::IsNullOrEmpty($listar_miembros_grupo)){Listar_MiembrosDeGrupo} if (-not [String]::IsNullOrEmpty($nuevo_grupo)){Crear_Grupo} if (-not [String]::IsNullOrEmpty($eliminar_grupo)){Eliminar_Grupo} if ($meter_usuario_grupo){Meter_Usuario_Grupo} if ($eliminar_usuario_grupo){Eliminar_Usuario_Grupo} if ($listar_usuarios){Listar_Usuarios} if (-not [String]::IsNullOrEmpty($nuevo_usuario)){Crear_Usuario} if (-not [String]::IsNullOrEmpty($eliminar_usuario)){Eliminar_Usuario} #--AD-- if ($info){Info} if (-not [String]::IsNullOrEmpty($nueva_OU)){Crear_OU} if (-not [String]::IsNullOrEmpty($eliminar_OU)){Eliminar_OU} if ($listar_OU){ Get-ADOrganizationalUnit -LDAPFilter "(name=*)" | FT Name,DistinguishedName } #function prompt { "PS C:\> "}