Category: Powershell


COn este script se puede mover computadoras de Unidad organizativa (OU) dependiendo del nombre, string, o pueden generar otra consulta , como por ejemplo sistema operativo, locacion…Es muy util cuando se tiene varias sucursales o se debe reorganizar el Active directory principalmente para delegar permisos segun sector, o para la aplicacion de politicas de grupo.

 

#################################################################
# This script will help to move bulk ad computer accounts into target OU
# Morettimaxi.com.ar
#################################################################

# DOnde buscar computadoras
$SearchOU = “CN=Computers,DC=truelogic,DC=local”

Write-Host ” Importing AD Module….. ”

#Importing AD Module
import-module ActiveDirectory

Write-Host ” Importing Move List….. ”
#FUncion para mover pcs
function MvPcs($list){
if ($list.count -ne 0) {
Write-Host ” Moving Computer Accounts…”
#Ou de destino
$destinationOU = ‘OU=test1,OU=Computers,OU=TrueLogic,DC=truelogic,DC=local’
Write-Host ” Starting import computers …”
foreach($computer in $list) {get-adcomputer $computer| Move-ADObject -TargetPath $destinationOU}

$countPC = ($list).count
Write-Host ” Completed Move List ”
Write-Host ” $countPC computers of have been moved ”
}
}

#funcion Generar listado de pcs con cierto nombre
function Createlist($name,$string){
$list = Get-ADComputer -Searchbase $SearchOU -Filter ‘SamAccountName -like $string’ | Select -Exp Name
Write-Host $list $list.count

MvPcs($list)

}

#Llamar a funcion createlist. Primer parametro enviar Pais y en el segundo el string a buscar.
Createlist tldev TL-DEV-*

En este pequeño script veran como modificar el display name de todos los usuarios o podran filtrarlos por departamento, pais por ejempolo:

$users = Get-User -ResultSize Unlimited -Filter “Recipienttype -eq ‘UserMailbox'”
$users | ForEach-Object{
$displayname='{0} {1}’ -f $_.FirstName, $_.LastName + ” [Morettimaxi Argentina]”
write-Host “Setting: $displayname” -fore green
$_ | Set-user -DisplayName $displayname
}

 

Filtrar por departamento, ejemplo compras:

 

$users = Get-User -ResultSize Unlimited | where { $_.Department -eq “compras”}
$users | ForEach-Object{
$displayname='{0} {1}’ -f $_.FirstName, $_.LastName + ” [Morettimaxi Argentina]”
write-Host “Setting: $displayname” -fore green
$_ | Set-user -DisplayName $displayname
}

 

 

En este post veremos como exportar los usuarios actuales y sus  datos , para luego modificarlos con Excel y por ultimo realizar un update de los campos de todos los usuarios con una sola linea de powershell.

Primero un repaso de como conectarse con Powershell a Office365

Import-Module MSOnline
$O365Cred = Get-Credential
$O365Session = New-PSSession –ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell -Credential $O365Cred -Authentication Basic -AllowRedirection
Import-PSSession $O365Session
Connect-MsolService –Credential $O365Cred

 

Obtener listado de usuarios activos , nosotros en este ejemplo obtendremos: Departamento, primer nombre, apellido, telefoni, titulo, ciudad , adeamas pdoran obtener mas datos como pais, estado. En este link encontran la lista completa: https://msdn.microsoft.com/en-us/library/azure/dn194133.aspx

 

get-MsolUser | select UserPrincipalName,DisplayName,isLicensed,Department,firstname,lastname,mobilephone,title,city | export-CSV  users-export-morettimaxi.csv

 

Deberan abrir el csv en Excel y modificarlo:

modificar-usuarios-powershell-office365

 

Una vez modificada deberan correr este comando en Powershell:

$csv = Import-Csv “.\users-export.csv” | ForEach {Set-user $_.UserPrincipalName -Title $_
title -Department $_.department -FirstName $_.FirstName -LastName $_.LastName -Mobilephone _.Mobilephone -city $_.city}

 

 

 

 

 

 

 

Con este comando de Powershell podran obtener un reporte de todas sus computadores y servidores y su sistema operativo, como asi tambien Services Packs y demas.

Get-ADComputer -Filter * -Properties * | Select-Object name, operating* | fl

Ejemplo de  Output:

name                       : SERVER2 OperatingSystem            : Windows Server 2003 OperatingSystemHotfix      : OperatingSystemServicePack : Service Pack 2 OperatingSystemVersion     : 5.2 (3790)

name                       : server3 OperatingSystem            : Windows Server 2008 R2 Enterprise OperatingSystemHotfix      : OperatingSystemServicePack : Service Pack 1 OperatingSystemVersion     : 6.1 (7601)