Archivo

Archivo para la categoría ‘scripting’

Recoger permisos de una ou con Powershell

miércoles, 1 de julio de 2015 Sin comentarios

 

Hola.

 

Son muchas las webs que lo indican sin embargo he visto que hay muchas instrucciones erroneas.

Para recoger los permisos que tiene una OU, la instrucción que finalmente me ha funcionado es:

 

Import-Module ActiveDirectory

Get-Acl -path "ad:\OU=Ejemplo,DC=domain,DC=local").access | select identityreference, accesscontroltype,activedirectoryrights | export-csv -Path c:\temp\OUPermisos.csv

Saludos.

Categories: powershell, scripting Tags:

Borrar usuarios en ad sin advertencia

miércoles, 1 de julio de 2015 Sin comentarios

 

Hola

Estoy trabajando en un simple script a través del cual he de borrar cuentas expiradas en AD.

Me he encontrado que el comando remove-aduser no tiene la opción –force por lo que cuando va a borrar un usuario, solicita confirmación y por tanto, no puedo automatizar el borrado de estas cuentas mediante una tarea programada.

Solución

Para las cuentas en las que no está prevista la utilización de la variable –force, podéis utilizar la variable –confirm:$false y con ello saltar la confirmación.

Script

El script es el siguiente:

Function ModuloAD{
    Try
    {
      Import-Module ActiveDirectory -ErrorAction Stop
    }
    Catch
    {
      Write-Host "[ERROR]t Las herramientas de administración de Active Directory no han podido ser encontradas"
      Exit 1
    }
}

#-------------------------------------------------------------------------------
#Ejecución script general
#-------------------------------------------------------------------------------

ModuloAD

$path="OU=TempAdmusers,Dc=domain,dc=local"

$users= Search-ADAccount -AccountExpired  -SearchBase $path
$users.samaccountname
 
foreach ($user in $users){
    Try
    {
       Remove-ADUser $user -Confirm:$false
    }
    Catch
    {
        Write-Host "[ERROR]
t No se ha podido borrar el usuario $user"
    }
}

Categories: powershell, scripting Tags:

>Scripting – 300 vms

jueves, 25 de noviembre de 2010 Sin comentarios

>Hola.

Hago público el scripting que desarrolló mi compañero Michele y que utilizamos para crear las 300 máquinas virtuales:

El primer paso fué copiar los 300 discos virtuales:

$VMVHDSource = «C:\ClusterStorage\Volume1\W2K8R2-STD-ES-NODO2.vhd»

$numarray = (1..300)
foreach ($x in $numarray)
{

$VMName = «00000» + $x.tostring()
$VMName = «MS» + $VMName.Substring($VMName.Length-3,3)
$VMPath = «C:\ClusterStorage\Volume1\folder\» + $VMName.tostring()
$VMVHD = $VMPath.tostring() + «\» + $VMName.tostring() + «.vhd»

new-item -path «C:\ClusterStorage\Volume1\folder» -name $VMName -type directory
copy-item $VMVHDSource -destination $VMVHD

}

Y mientras tanto, desplegamos la plantilla:

# Load Snap-Ins
Add-PSSnapin Microsoft.SystemCenter.VirtualMachineManager

# Connect to the VMM server.
$VMMServer = Get-VMMServer «srvmm.dominio.local»

# Define the variables.
$JobGroupID = [Guid]::NewGuid().ToString()
$Template = Get-Template where {$_.Name -eq «W2K8R2STDESP-NODO2»}
$VMHost = Get-VMHost where {$_.ComputerName -eq «nodo2»}
$NetworkName = «vswitch1»

$numarray = (1..300)
foreach ($x in $numarray)
{

$VMName = «00000» + $x.tostring()
$VMName = «MS» + $VMName.Substring($VMName.Length-3,3)
$VMPath = «C:\ClusterStorage\Volume1\folder\» + $VMName.tostring()
$VMVHD = $VMPath.tostring() + «\» + $VMName.tostring() + «.vhd»

# Use the Move-VirtualHardDisk cmdlet to point to the local virtual hard disk on the host.
Move-VirtualHardDisk -IDE -BUS 0 -LUN 0 -Path $VMVHD -JobGroup $JobGroupID

# Use the New-VM cmdlet with the –UseLocalVirtualHardDisks parameter to create the
# virtual machine and to specify that the local virtual hard disk file should be used.

New-VirtualNetworkAdapter -JobGroup $JobGroupID -VirtualNetwork $NetworkName -Synthetic

New-VM -Name $VMName -Path $VMPath -Template $Template -VMHost $VMHost -ComputerName $VMName -JobGroup $JobGroupID -UseLocalVirtualHardDisks -RunAsynchronously -JobVariable «NewVMJob» -SkipInstallVirtualizationGuestServices

}

Nota: Hay ciertas buenas prácticas a tener en cuenta en un servidor con tantas máquinas virtuales, nosotros tenemos uno con 200 y otro con 102, ya que tenemos un dhcp y alguna cosilla más, una de las cosas más importantes es que el de las 200 están en un nodo de un clúster y es importante que ese nodo sea el propietario del CSV ya que como sabéis de no ser así, gran parte del tráfico iría por la tarjeta del latido al dueño del CSV.

Saludos.

Categories: Curiosidades, Hyper-V, scripting, scvmm r2 Tags: