Archivo de la etiqueta: Script

Configurar tu adaptador de red con un archivo .bat

Windows8  A partir de la versión de Windows 7, Microsoft cambió los parámetros del comando Netsh, con la inclusión del protocolo IPv6 en sus sistemas operativos.

Si normalmente trabajas en múltiples clientes, con diferentes configuraciones de Red, te pasarás todo el día cambiando los parámetros de configuración de tu adaptador de red. Para poder automatizar esto, os propongo el uso de este conjunto de comandos, que puede incluirse en un archivo .bat (archivo de procesamiento por lotes) para automatizar la labor de cambiar la configuración del adaptador.

Para ello solo tienes que crear un archivo de texto plano, con extensión .bat y añadir lo siguiente (dependiendo la opción que desees):

  • Para especificar una Dirección IP, Mascara de subred, Puerta de enlace predeterminada y DNSs deberás escribir lo siguiente:
netsh interface ipv4 set address name=“Ethernet” source=static address=192.168.1.10 mask=255.255.255.0 gateway=192.168.1.1
netsh interface ipv4 add dnsserver name=”Ethernet” address=8.8.8.8 index=1
netsh interface ipv4 add dnsserver name=”Ethernet” address=8.8.4.4 index=2

En este caso deberás modificar los siguientes parámetros:

  1. Parámetro name: “Ethernet” -> Nombre de tu adaptador de red
  2. Parámetro address: 192.168.1.10 -> Dirección IP
  3. Parámetro mask: 255.255.255.0 -> Mascara de subred
  4. Parámetro gateway: 192.168.1.10 -> Puerta de enlace predeterminada
  5. Parámetro address: 8.8.8.8 -> Dirección IP del DNS primario
  6. Parámetro address: 8.8.4.4 ->Dirección IP del DNS secundario

Este es el resultado de la ejecución del comando anterior:

ConfigIPv4

 

  • En el caso que, en vez de configurar manualmente el adaptador, prefieras que el DHCP te asigne una dirección de forma dinámica, deberás escribir esto:
netsh interface ipv4 set ADDRESS “Ethernet” source=DHCP
netsh interface ipv4 set DNS “Ethernet” source=DHCP

En este caso solo deberás modificar el siguiente parámetro:

  1. Parámetro name: “Ethernet” -> Nombre de tu adaptador de red

Este es el resultado de la ejecución de estos dos comandos:

ConfigIPv4_2

 

IMPORTANTE: La ejecución de estos comandos, bien desde una consola del sistema, o bien desde un archivo .bat ha de ejecutarse como Administrador.

Referencia: Netsh commands for Interface Internet Protocol version 4 (IPv4)

 

Script para vaciar la papelera de reciclaje secundaria

Un script que nos puede ser de utilidad es el siguiente, ya que muchas veces tenemos mucha informacion que no esta ocupando mucho espacio en base de datos, y que se encuentra en la papelera de reciclaje.

Cuando tu eliminas un contenido en SharePoint, va a la pepelera de reciclaje y si posteriormente lo eliminas de esta pepalera, el contenido, va a una secundaria…

Para ejecutar el script, lo unico que has de modificar el la url del sitio en el que quieres vaciar la papelera de reciclaje secundaria… en este ejemplo he usado “http://url_intranet”, pero deberas sustituirlo por la url de tu sitio…

$mySite = New-Object Microsoft.SharePoint.SPSite("http://url_intranet");
$papeleraQuery = New-Object Microsoft.SharePoint.SPRecycleBinQuery;
$papeleraQuery.ItemState = [Microsoft.SharePoint.SPRecycleBinItemState]::SecondStageRecycleBin;
$papeleraQuery.OrderBy = [Microsoft.SharePoint.SPRecycleBinOrderBy]::Default;
$papeleraElementos = $mySite.GetRecycleBinItems($papeleraQuery);
$Contador = $papeleraElementos.Count;
for($Elemento = 0; $Elemento -lt $Contador; $Elemento++)
{
    $unElemento = New-Object System.Guid($papeleraElementos[$Elemento].ID);
    $papeleraElementos.Delete($unElemento);
}
$mySite.Dispose()

Por ultimo y si te interesa el tema, la clase que posibilita esta funcionalidad es: Microsoft.SharePoint.SPRecycleBinQuery.

 

Script para borrar Colecciones de Sitio sin confirmación

Anteriormente os había habrado de como hacer un backup/restore de una Colección de Sitios en SharePoint 2010 con PowerShell, pues ahora os voy a comentar como borrar cualquier Colección de Sitio.

Este proceso es también muy rápido y sencillo y con una linea puedes llegar a borrar si Sitio que no desees:

#Elimina la Coleccion de Sitio
Remove-SPSite -Identity "http://micoleccionsitio" -GradualDelete -Confirm:$false

Hay que tener en cuenta que no existe una marcha atrás para este proceso a no ser que dispongas de una copia de seguridad.

En cuanto a la ejecución del este script sin confirmación, únicamente se debe al parámetro: -Confirm:$false. Este puede ser usando con mas objetos que implementen el uso de la propiedad -Confirm, para evitar que tengamos que interacturar con los scripts.

Script para la copia de seguridad de Colecciones de Sitio

Hola, hoy quiero mostraros como se puede hacer con PowerShell de una forma rápida y sencilla una copia de seguridad de una Colección de Sitio de SharePoint 2010, con una simple línea de código.

Esta copia lo que hace es generar un archivo fisico en el que se guarda toda la estructura e información del sitio en concreto:

#Backup de la Coleccion de Sitio
Backup-SPSite -Identity http://micoleccionsitio -Path C:\backup_micoleccionsitio.bak

Tan sencillo como la copia es la restauración:

#Restauracion de la Coleccion de Sitio
Restore-SPSite -Identity http://micoleccionsitio_nueva -Path C:\backup_micoleccionsitio.bak

Es importante tener en cuenta que cuando realizamos un backup o copia de seguridad, SharePoint deja en modo lectura la colección de sitios, por lo que no se puede hacer mientras los usuarios estén trabajando, por lo que habrá que programarlo.

Script para controlar el tamaño de los Sitios en SharePoint

Si tienes multiples subsitios dentro de una coleccion de sitios en SharePoint 2010 y quieres saber por cada uno de ellos, cuanto espacio ocupa, en diferentes medidas, aqui os dejo un script de PowerShell muy útil. Además este script, da el tamaño total de la suma de todos.

#====================================================================================
function GetWebSizes ($StartWeb)
{
    $web = Get-SPWeb $StartWeb
    [long]$total = 0
    $total += GetWebSize -Web $web
    $total += GetSubWebSizes -Web $web
    $totalInMb = ($total/1024)/1024
    $totalInMb = "{0:N2}" -f $totalInMb
    $totalInGb = (($total/1024)/1024)/1024
    $totalInGb = "{0:N2}" -f $totalInGb
    write-host "El tamaño de los subsitios bajo:" $StartWeb " es de " $total "Bytes, el cual es " $totalInMb " MB o" $totalInGb "GB"
    $web.Dispose()
}
#====================================================================================
function GetWebSize ($Web)
{
    [long]$subtotal = 0
    foreach ($folder in $Web.Folders)
    {
        $subtotal += GetFolderSize -Folder $folder
    }
    write-host "Sitio:" $Web.Title " tiene " $subtotal "KB"
    return $subtotal
}
#====================================================================================
function GetSubWebSizes ($Web)
{
    [long]$subtotal = 0
    foreach ($subweb in $Web.GetSubwebsForCurrentUser())
    {
        [long]$webtotal = 0
        foreach ($folder in $subweb.Folders)
        {
            $webtotal += GetFolderSize -Folder $folder
        }
        write-host "Sitio:" $subweb.Title " tiene " $webtotal "Bytes"
        $subtotal += $webtotal
        $subtotal += GetSubWebSizes -Web $subweb
    }
    return $subtotal
}
#====================================================================================
function GetFolderSize ($Folder)
{
    [long]$folderSize = 0
    foreach ($file in $Folder.Files)
    {
        $folderSize += $file.Length;
    }
    foreach ($fd in $Folder.SubFolders)
    {
        $folderSize += GetFolderSize -Folder $fd
    }
    return $folderSize
}
#====================================================================================
$siteurl = "http://intranet"
#Llamada a la funcion para devolver el tamaño del la Intranet
GetWebSizes $siteurl

Script para el aprovisionamiento de My Site en SharePoint

Este es uno de los primeros de una serie posts, cuyo objetivo es mostrar como se pueden realizar muchas de las labores de administracion de SharePoint 2010 habituales, con scripts de PowerShell.

Comenzamos con un sencillo script que permite aprovisionar el My Site de un usuario, unicamente hay que llamar a la siguiente funcion:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
Function CreateMySite($siteurl, $loginname)
{
	$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
	$context = [Microsoft.Office.Server.ServerContext]::GetContext($site)
	$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
	if ($upm.UserExists($loginname)) {
		$profile = $upm.GetUserProfile([string]$loginname)
		trap [Microsoft.Office.Server.UserProfiles.PersonalSiteExistsException]
		{
			Write-Host "WARNING: Ya existe el sitio personal del usuario: $loginname" -ForeGroundColor Red
			continue
		}
		write-host "Creando el sitio personal para el usuario: $loginname" -ForeGroundColor Green
		$profile.CreatePersonalSite();
	} else {
		Write-Host "WARNING: No existe el usuario: $loginname" -ForeGroundColor Red
	}
	$site.Dispose()
}

$siteurl = "http://misitio"
$loginname = "DOMINIO\USUARIO"
#Llamada a la funcion para crear el My Site
#CreateMySite $siteurl $loginname

En el caso que quieras provisionar todos los usuarios existentes en el UserProfile, en vez de utilizar la función anterior puedes usar esta otra:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
Function CreateMySite($siteurl)
{
	$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
	$context = [Microsoft.Office.Server.ServerContext]::GetContext($site)
	$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
	foreach ($userobject in $Profiles ) {
		$loginname = $userobject.item("AccountName")
		if ($upm.UserExists($loginname)) {
			$profile = $upm.GetUserProfile([string]$loginname)
			trap [Microsoft.Office.Server.UserProfiles.PersonalSiteExistsException]
			{
				Write-Host "WARNING: Ya existe el sitio personal del usuario: $loginname" -ForeGroundColor Red
				continue
			}
			write-host "Creando el sitio personal para el usuario: $loginname" -ForeGroundColor Green
			$profile.CreatePersonalSite();
			trap
			{
				Write-Host "ERROR: Se ha producido un error al crear el sitio para: $loginname" -ForeGroundColor Red
				continue
			}
		}else{
			Write-Host "WARNING: No existe el usuario: $loginname" -ForeGroundColor Red
		}
	}
	$site.Dispose()
}

$siteurl = "http://misitio"
#Llamada a la funcion para crear el My Site
#CreateMySite $siteurl