Mostrando entradas con la etiqueta scripting. Mostrar todas las entradas
Mostrando entradas con la etiqueta scripting. Mostrar todas las entradas

lunes, 16 de junio de 2025

Add entries to a hosts file by powershell

 The follow script tests and adds is it's needed a line to a local host files:

If ((Get-Content "$($env:windir)\system32\Drivers\etc\hosts" ) -notcontains "10.0.0.20 entry.domain.local")  

 {ac -Encoding UTF8  "$($env:windir)\system32\Drivers\etc\hosts" "10.0.0.20 entry.domain.local")   }

jueves, 1 de diciembre de 2016

Getting GPOS and GPO Links

Hello.

This script creates a txt file with the next information:

- GPOName
- LinksTo
- Enabled
- NoOverride
- CreatedDate
- ModifiedDate


Script:

$names=get-gpo -all
        $output= foreach ($name in $names) {
            get-gpolink -name $name.DisplayName
            }
         $output | out-file C:\temp\GpoandLinks.txt



miércoles, 1 de julio de 2015

Recoger permisos de una ou con Powershell

 

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.

Borrar usuarios en ad sin advertencia

 

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"
    }
}

jueves, 25 de noviembre de 2010

Scripting - 300 vms

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.