Archive

Archives pour 02/2013

Augmenter la taille d’un volume

Avec les machines virtuelles sur VMware et HyperV, quand il n’y en a plus, il y en a encore. Cela vaut pour le CPU, la mémoire, le réseau et surtout le disque.
Voici comment rapidement étendre un volume de données sur un serveur.
Une fois que vous avez ajouté les gigas nécessaires à votre machine virtuelle, vous pouvez étendre la partition.
Il y a quelques conditions:
– Le volume ne peut pas être le système pour Windows Server 2000 et 2003.
– L’espace ajouté et le volume à étendre doivent être contigus.

Pour Windows 2000 et 2003 Server, utilisez Diskpart.

diskpart-2

Télécharger diskpart pour Windows 2000 ici.

Pour Windows 2008 Server, utilisez le gestionnaire de disques.
Cliquez droit sur le volume souhaité et cliquez sur Etendre le volume.
Suivez ensuite l’assistant.

Plus d’informations dans l’article Microsoft ici.

Pour rappel Microsoft recommande un partition système de 40Go ou plus.
Configuration système requise pour Windows Server 2008

Exporter la liste des fichiers d’un lecteur par extension.

Dans l’idée de faire un peu de ménage sur un lecteur, je cherche à identifier les fichiers multimédia avec le chemin et la taille.
Ce script va créer un fichier texte pour chaque extension.

?View Code POWERSHELL
Get-ChildItem -Recurse -Path "E:\" -Include *.mp3,*.mp4,*.avi -ErrorAction silentlycontinue | ForEach {
Write-Progress -activity "Fichiers Multimédia" -Status $_.FullName
$extension = $_.name.split(".")[-1]
$size ={0:N2}-f ($_.Length/1mb)
$logfile = ".\logs\" + $extension + ".txt"
$present = Test-Path -Path $logfile
    if ( $present -ne "true") {
    Write-host "Création de $logfile"
    $resfile = New-Item -ItemType file -Path $logfile -Force
    Add-Content -Path $logfile -Value "Nom;Chemin;Taille"
    Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
    }
    Else {
    Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
    }
}

Exporter la liste des gros fichiers présents sur un lecteur.

Voici un script pour exporter dans un fichier texte la liste des fichiers de plus de 100Mo présents sur un lecteur.

?View Code POWERSHELL
Get-ChildItem -Recurse -Path "E:\" -ErrorAction silentlycontinue | Where-Object { $_.length -gt 100000000 } | ForEach {
Write-Progress -activity "Fischiers de plus de 100Mo" -Status $_.FullName
$size ={0:N2}-f ($_.Length/1mb)
$logfile = ".\logs\Gros_fichiers.txt"
	$present = Test-Path -Path $logfile
	if ( $present -ne "true") {
Write-host "Création de $logfile"
$resfile = New-Item -ItemType file -Path $logfile -Force
Add-Content -Path $logfile -Value "Nom;Chemin;Taille"
Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
}
Else {
Add-Content -Path $logfile -Value "$($_.name );$($_.DirectoryName);$($size)"
}
}
Categories: Windows Tags: , ,

Garder le contrôle du temps dans Active Directory

Dans un domaine Active Directory le contrôleur de domaine hébergeant le rôle PDC est la référence de temps. C’est lui qui est en charge de se mettre à l’heure depuis une référence de temps externe via le protocole NTP et de fournir l’heure pour tous les membres du domaine.
Les autres contrôleurs de domaine viennent se mettre à l’heure sur le PDC via le protocole NT5DS.
Les serveurs et ordinateurs membres du domaine se mettent à l’heure depuis les contrôleurs de domaine via le protocole NT5DS.
La mise à l’heure est effectuée par le service w32time sur l’ensemble des systèmes d’exploitation Microsoft.

W32tm

Par défaut le service de temps des serveurs et ordinateurs du domaine est configuré de type NT5DS. Il n’y a donc que le PDC à configurer pour récupérer l’heure en NTP sur une source externe.
Pour rappel, le service de temps utilise le port UDP 123. Il faut donc configurer votre firewall en conséquence.

Si nécessaire, il est possible de figer cette configuration par GPO. Vous serez alors certains que les membres du domaine sont à l’heure.

Voici tout d’abord comment configurer par GPO le service w32time du PDC pour utiliser NTP.

1- Créer une GPO « Mise à l’heure du PDC »
2- Créer un filtre WMI pour sélectionner le PDC.
Le filtre est Select * from Win32_ComputerSystem where DomainRole = 5
Ce filtre assure que seul le PDC est affecté par cette GPO même si celui-ci est remplacé ou le rôle déplacé sur un autre contrôleur.

WMI-Filter-conf

WMI-Filter

 

Il est possible de faire la configuration à la main, mais la GPO va permettre que garantir que la configuration ne bouge pas.

3- Appliquer le filtre WMI sur la GPO.

4- Configurer le service de temps dans la GPO.

« Système/Service de temps Windows/Fournisseurs de temps »
Ne changer que NtpServer et Type.

GPO-NTP

5- Appliquer la GPO sur l’OU « Contrôleurs de domaine ».

 

Voici maintenant comment configurer par GPO le service w32time sur les membres et contrôleurs du domaine en NT5DS.

1- Créer une GPO « Mise à l’heure du domaine ».
2- Configurer le service de temps dans la GPO.
« Système/Service de temps Windows/Fournisseurs de temps »
Il suffit d’activer la GPO sans changer la configuration.
GPO-NT5DS
5- Appliquer la GPO à la racine du domaine.

 

Vous garantissez ainsi que l’ensemble de votre domaine est à l’heure.

Créer une arborescente d’unités d’organisation (OU)

Vous souhaitez créer une arborescence d’unités d’organisations pour chacun des vos 53 sites géographiques. Cette arborescence d’OU sera identique pour chaque sites.
La quantité d’OU à créer vous impressionne. Voici comment gagner quelques heures.

OU

?View Code POWERSHELL
 
$OUFilName = Read-Host "Entrez l'OU parent"
$OUSiteName = Read-Host "Entrez le nom de la nouvelle OU"
$Domain = [ADSI]"LDAP://AD-DC-01/dc=domain,dc=local"
 
#Creation de l'OU de site.
$OUSite = $Domain.Create("OrganizationalUnit", "ou=" + $OUSiteName + ",ou=" + $OUFilName)
$OUSite.SetInfo()
Write-Host "L'OU $OUSiteName a été créée."
 
#Creation du premier niveau d'OU.
$OUFirst = "Ordinateurs","Groupes","Utilisateurs"
Foreach ( $ou in $OUFirst) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=" + $OUSiteName + ",ou=" + $OUFilName)
$SetOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}
 
#Creation des OU d'ordinateurs
$OUComp = "Portables","Fixes"
Foreach ( $ou in $OUComp) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=Ordinateurs,ou=" + $OUSiteName + ",ou=" + $OUFilName)
$setOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}
 
#Creation des OU d'utilisateurs.
$OUUsr = "Standards","Citrix","Administrateurs"
Foreach ( $ou in $OUUsr) {
$SetOU = $Domain.Create("OrganizationalUnit", "ou=" + $ou + ",ou=Utilisateurs,ou=" + $OUSiteName + ",ou=" + $OUFilName)
$setOU.SetInfo()
Write-Host "L'OU $OU a été créée."
}

Importation DNS avec PowerShell

« Gagner du temps », c’est souvent l’objectif qui nous pousse à utiliser PowerShell. Voici donc comment importer des modifications dans un DNS avec PowerShell.
Ce script contient les commandes pour supprimer des enregistrements et en ajouter. Pour les mises à jour vous devrez passer par la suppression et l’ajout.
Il est possible de modifier le type d’enregistrement pour traiter par exemple des Alias.

?View Code POWERSHELL
$DNSServer = "AD-DC-01" 
$DNSZone = "domain.local" 
$InputFile = "./import-file.txt"
 
$records = Import-CSV $InputFile
 
ForEach ($record in $records) { 
    $recordName = $record.name 
    $recordType = "A" 
    $recordAddress = $record.ip
    $action = $record.action
 
    if ( $action -eq "DELETE") {
        $cmdDelete = "dnscmd $DNSServer /RecordDelete $DNSZone $recordName $recordType /f" 
        Write-Host "Running the following command: $cmdDelete" 
        Invoke-Expression $cmdDelete 
}
    ElseIf ( $action -eq "ADD") {
        $cmdAdd = "dnscmd $DNSServer /RecordAdd $DNSZone $recordName $recordType $recordAddress" 
        Write-Host "Running the following command: $cmdAdd" 
        Invoke-Expression $cmdAdd 
}
}

Ce script va vous permettre de faire l’importation en masse d’enregistrements mais aussi de planifier des modifications dans le DNS.