Tag Archive: script


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
}

 

 

Con el siguien logon script se puede cambiar si las pcs tienen ip fija a dinamica (DHCP) de forma automatica:

 

netsh interface ip set address “Local Area Connection” dhcp

 

SI ademas queres cambair los dns”

netsh interface ip delete dns “Local Area Connection” all

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)

En este Post veremos Un VB Script, el cual deben guardarlo como *.vbs, deben colocarlo por gpo como logon Script. El mismo permite,
• Mapear la home folder de cada usuario,
•Mapear una carpeta publica
•Dependiendo a que grupo pertenezca le creara una unidad de red. Por ejemplo si un usuario pertenece al grupo ventas, le mapeara una unidad de red definida en el Script
•Segun el grupo de Pertenencia le mapeara una Impresora.

—————————————————————————————————————————————————–

' Se debe cambiar cn=ventas por el grupo de AD al que pertenece el usuario.

' Obtener informacion del usario:

Set ADSysInfo = CreateObject("ADSystemInfo")

Set CurrentUser = GetObject("LDAP://" & ADSysInfo.UserName)

strGroups = LCase(Join(CurrentUser.MemberOf))

' Mapear la Home folder de cada usuario.

Set wshNetwork = CreateObject("WScript.Network")

wshNetwork.MapNetworkDrive "H:", "\\servidor\homefolders\" & wshNetwork.UserName

'Mapeo de Share publico:

wshNetwork.RemoveNetworkDrive "P:"

wshNetwork.MapNetworkDrive "P:", \\servidor\Public

'Mapeo segun Grupo de pertenencia

If InStr(strGroups, "cn=Ventas,") Then

wshNetwork.MapNetworkDrive "V:", \\servdidor\ventas

End if

If InStr(strGroups, "cn=rrhh,") Then

wshNetwork.MapNetworkDrive "R:", \\servidor\RRHH

End if

'Mapeo de Impresora segun grupo de pertenencia mapea y pone 'como impresora por default la printer1

If InStr(strGroups, ventas) Then

wshNetwork.AddWindowsPrinterConnection "\\printserver\printer1"

wshNetWork.SetDefaultPrinter "\\printserver\printer1"

End if

 

Si les da el siguiente error, cuando intentan mapear una unidad de red que ya esta en uso:

The local device name is already in use.

Se debe utilizar la siguiente condicion:

Dim objFSO, strDrive, strShare
Set objFSO = CreateObject(“Scripting.FileSystemObject”)
strDrive = “H:”
strShare = “\\fileserver\novellmain”
If objFSO.DriveExists(strDrive) = True Then
objNetwork.RemoveNetworkDrive strDrive
End If
objNetwork.MapNetworkDrive strDrive, strShare

 

En este muy pequeño post, veremos un comando para eliminar archivos con una extension determinada (por ejemplo .bak) o todos los archivos de una carpeta , discriminandolos por su antiguedad. En el ejemplo veremos, eliminar todos los archivos .Bak con mas de 30 dias.

FORFILES /P C:\backups-sql\ /S /M *.bak /D -30 /C "cmd /c del @file"

/S – Busca en Subdirectorios

*.bak  – Busca todos los archivos con la extension .bAK, si queremos eliminar todos, sin importa la extensión,  usaremos *.*

/D -30 = Colocamos la cantidad de días que queremos que tengan como minimo un archivo de antigüedad.

/C – El comando el cual queremos correr respecto a los archivos seleccionados

Espero que les sea de utilidad