Archive

Archives pour 2012

Lister les liens de sites Active Directory avec Powershell

Voici comment lister les liens de sites Active Directory et les sites qu’ils lient avec PowerShell.

?View Code POWERSHELL
$site_links = get-adobject -filter 'objectclass -eq "sitelink"' -SearchBase 'cn=configuration,dc=domain,dc=local' -properties sitelist
$site_links | fl Name,sitelist

Lister les sites Active Directory avec PowerShell

Dans un domaine Active Directory important avec beaucoup de sites Active Directory, de contrôleurs de domaine et de sous-réseaux, il peut être fastidieux de passer par la MMC « Sites et Services Active Directory » pour contrôler la configuration.
Voici comment afficher avec PowerShell la liste des sites avec leurs contrôleurs de domaine et les sous-réseaux associés.

?View Code POWERSHELL
$forest = [System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()
$sites = $forest.Sites
$sites | ft Name,Servers,Subnets –AutoSize

Vous pourrez visualiser rapidement si des sites sont sans contrôleurs ou sans sous-réseaux.

Raccourcir une URL avec PowerShell

Un raccourcisseur d’URL… Vous trouverez surement plein de plugins ou sites qui le font. Alors pourquoi pas PowerShell?
Voici en deux lignes un script qui raccourci une adresse Internet un peu longue.
Le résultat est directement copié dans le presse-papier pour plus d’efficacité.

?View Code POWERSHELL
$url = Read-Host "Enter the Url"
Invoke-RestMethod -Uri "http://tinyurl.com/api-create.php?url=$url" | clip

Invoke-RestMethod est disponnible avec PowerShell V3.

Categories: Powershell Tags: , ,

Connaitre la durée du Tombstone Lifetime

Voici la commande PowerShell pour connaitre la valeur du Tombstone Lifetime de votre domaine Active Directory.
Cette valeur correspond à la durée de vie des objets supprimés dans le domaine.
Si un contrôleur de domaine ne réplique pas depuis le nombre de jours du Tombstone LifeTime, il ne sera plus possible pour lui de répliquer avec les autres contrôleurs.

?View Code POWERSHELL
Get-ADObject -Identity "CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=domain,D
C=local" -properties tombstonelifetime

Désactiver le contrôle de compte d’utilisateur UAC avec PowerShell

Voici comment désactiver le contrôle de compte d’utilisateur (UAC) avec PowerShell.
UAC (User Account Control) permet de restreindre l’exécution des programmes pour contrôler les modifications du système.
 

L’apparition régulière de ce message peut à la longue devenir lassante.
Voici comment rapidement y mettre fin:

– Exécuter PowerShell en tant d’administrateur
– Lancer la commande:

?View Code POWERSHELL
New-ItemProperty -Path HKLM:Software\Microsoft\Windows\CurrentVersion\policies\system -Name EnableLUA -PropertyType DWord -Value 0 -Force

– Rebooter l’ordinateur.

Désactiver le mappage automatique des boites aux lettres dans Outlook

Depuis Exchange 2010 SP1, le montage des boites aux lettres où un utilisateur a l’accès complet est automatique dans Outlook.
Ce mappage automatique peut être désactivé en changeant la valeur de la propiété AutoMapping des permissions de l’utilisateur sur la boite aux lettre mappé.
Par défaut le mappage automatique est activé.
Cette modification ne peut être effectuée que par PowerShell.
On ne peut modifier une permission existante, il faut supprimer la permission accès total et la recréer avec le bon paramètre.

Voici quelque méthodes.

Donner l’accès à une boite sans le mappage automatique:

?View Code POWERSHELL
Add-MailboxPermission -Identity "Boite partagée" -User "j.doe" -AccessRight FullAccess -InheritanceType All -Automapping $false

Désactiver le mappage automatique pour un utilisateur:

?View Code POWERSHELL
Remove-MailboxPermission -Identity "Boite partagée" -User "j.doe" -AccessRights FullAccess -InheritanceType All -Confirm:$false
Add-MailboxPermission -Identity "Boite partagée" -User "j.doe" -AccessRight FullAccess -InheritanceType All -Automapping $false

Supprimer le mappage automatique pour tous les utilisateurs d’une boite aux lettres.

?View Code POWERSHELL
$DisAutoMapping = Get-MailboxPermission "Boite partagée" | where {$_AccessRights -eq "FullAccess" -and $_IsInherited -eq $false}
$DisAutoMapping | Remove-MailboxPermission
$DisAutoMapping | ForEach {Add-MailboxPermission -Identity $_.Identity -User $_.User -AccessRights:FullAccess -AutoMapping $false}

Source Technet

Importer un fichier avec des accents et caractères spéciaux

Lors de la création par importation de comptes ou boites aux lettres, vous pouvez avoir à gérer des chaines de caractères avec des accents ou caractères spéciaux.
La cmdlet Import-CSV ne gère pas ces caractères. Il est nécessaire de convertir votre fichier txt ou csv au format Unicode avant de l’importer.
Sans cette conversion, les caractères é, ë, ç… seront transformés en « ? ».
Dans le script ci-dessous, je converti le fichier à importer avant la commande Import-CSV.

?View Code POWERSHELL
Get-Content -Path ./import.txt | Out-File -FilePath ./import-unicode.txt -Encoding Unicode
 
Import-Csv -Path ./import-unicode.txt | foreach {
$displayname = $_.LastName + " " + $_.FirstName
$displayname
}

Savoir qui est connecté sur un PC distant

Ce script permet de savoir qui est connecté en ce moment sur un ordinateur distant.
Ça marche sur Windows XP et Windows Seven.

?View Code POWERSHELL
$computer = Read-Host "Enter the computer Name"
$loginfo = Get-WmiObject -Computer $Computer -Class Win32_ComputerSystem
"Machine Name: " + $loginfo.Name 
"User Name: " + $loginfo.UserName
Categories: Windows Tags: , , ,

Lancer une commande Dos avec une variable issue d’un import.

Utiliser PowerShell pour lancer par exemple un « reg query » ou tout autres commandes Dos sur une liste de PC présents dans un fichier texte.

?View Code POWERSHELL
$list = Import-CSV -Path "./comp-list.txt"
 
ForEach ($comp in $list) { 
    $ip = $comp.ip
    $cmdreg = "reg query \\$ip\HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa"
    Invoke-Expression $cmdreg
 }

😉

Categories: Powershell Tags: , ,

Conserver le dernier mot de chaque phrases

Cette fois je souhaite conserver la dernière valeur des chaque chaines de caractères.

?View Code POWERSHELL
$songs= "My name is stain dfldsj","Reset after all pomaolk","Palabra mi amor piloeak"
foreach ($title in $songs) {
$title.Split(" ")[-1]
}
Categories: Powershell Tags: