[PowerShell] Normaliser une chaîne de caractères

Bonjour à tous,

Voici probablement le meilleur tips PowerShell que j’ai dans mon escarcelle, à savoir normaliser une chaîne de caractères.
Mais ça veut dire quoi normaliser une chaîne de caractères ??
ça veut tout simplement dire remplacer tous les caractères spéciaux “latins” en caractères standards. En d’autres termes :

  • ça retire les accents
  • ça retire les cédilles (oui oui, cédille ça s’écrit comme ça 😉 )
  • etc.

Cette fonction est donc particulièrement intéressante dans les cas suivants :

  • Création de comptes Active Directory, Azure AD, etc. Par exemple Créer le compte regislaine à partir du prénom Régis et du nom Lainé.
  • Création de dossiers et fichiers. De la même manière cette fonction retirera les accents, cédilles, etc… Cependant cette fonction ne retirera pas les espaces, tirets et caractères spéciaux interdits lors de la création d’un dossier (‘<‘, ‘>’, ‘:’, ‘”‘, ‘/’, ‘\’, ‘|’, ‘?’, ‘*’)

Comme vous pouvez le constater cette fonction est extrêmement complexe 🙂 (Comme quoi les meilleures choses sont souvent les plus simples)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function Get-NormalizedString
{
    Param    (
        [Parameter(Mandatory=$true,Position=0)]$InputString
    )
 
    try
    {
        return [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($InputString))
    }
    Catch
    {
        Throw
    }
}

Enjoy 😉

[PowerShell] Identifier les ordinateurs disposant du même SID

Bonjour à tous,

Voici un script permettant d’identifier parmi tous les ordinateurs d’un domaine, ceux qui disposent du même SID.

Pour rappel : Microsoft n’apporte pas son support dans le cas où vous disposez de systèmes clonés avec le meme SID (Lien officiel)

Notez que pour que ce script fonctionne :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
$Error.Clear()
Clear-Host
 # Initialize Computers List
$computerList = New-Object -TypeName System.Collections.ArrayList
 
# Retrieve ADCOmputers
Import-Module ActiveDirectory
$ADcomputers = @(Get-ADComputer -Filter * -Properties SamAccountName, SID)
 
# Create custom object for each computers
# Add information to this object (ComputerName, DomainSID, LocalSID)
# Add object to Result list
if ($ADcomputers.Count -gt 0)
{
    $i = 0
    foreach ($ADcomputer in $ADcomputers)
    {
        Write-Progress -Activity get-SID -Status Running -Id 0 -PercentComplete (($i/$ADcomputers.Count)*100) -CurrentOperation $computer.ComputerName
 
        $Computer = New-Object -TypeName psobject -Property @{
            "ComputerName"= ([String]$ADcomputer.SamAccountName).Replace('$','')
            "DomainSID"=$ADcomputer.SID
            "LocalSID"=$null
        }
 
        Invoke-Expression -Command ("PsGetsid.exe " + '\\' + $computer.ComputerName) -ErrorAction SilentlyContinue| Tee-Object -Variable out | Out-Null
        $Computer.LocalSID = ($out | Where-Object{$_ -like "S-1-5*"})
 
        $computerList.Add($Computer) |Out-Null
 
        $i++
    }
}
 
$computerList | Group-Object -Property LocalSID | Format-Table

Enjoy 😉

Windows 7 / Windows Server 2008 R2 : Le Service Pack 1 est disponible

softwareLe service Pack 1 pour Windows Server 2008 R2 et Windows 7 est disponible depuis quelques minutes pour les abonnés Technet, et MSDN. vous pouvez le télécharger en vous rendant sur l’espace de téléchargement technet.

Pour plus d’information sur les apports de ce service pack, rendez-vous ici.

La date de publication sur Windows Update est prévue pour le 22 février prochain.

Enjoy 🙂

Date de sortie du Service Pack 1 RTM pour Windows 7 et Windows server 2008 R2

softwareLe “Service Pack 1” de Windows 7 et Windows Server 2008 R2 sera disponible au téléchargement le 09 Février 2011.

Concernant Windows 7, Il n’existera qu’un fichier (multi langues) pour chaque architecture, à savoir :

  • X86 : avec un volume estimé de 530 Mo
  • x64 : avec un volume estimé de 900 Mo

Evidemment, toute version BETA de ce Service Pack devra être désinstallée au préalable.

Ces packages contiendront principalement le cumul des mises à jour depuis l’apparition des deux systèmes d’exploitation, mais aussi :

  • Pour Windows Server 2008 R2 : l’apparition d’une fonctionnalité très attendue : “Dynamic memory” dans le rôle Hyper-v, permettant d’optimiser la gestion de la mémoire vive consommée par les machines virtuelles. Pour plus d’information, cliquez ici. Seconde évolution la mise en œuvre de “Remote FX”, une fonctionnalité supplémentaire du rôle “Remote Desktop Services” permettant le transfert, via le protocole RDP, de flux haute qualité.
  • Pour Windows 7, le service pack 1 apportera une mise à jour du client RDP pour la prise en compte de la fonctionnalité “Remote FX”.

Avec la fonctionnalité Remote FX, Il sera ainsi possibled’afficher un bureau AERO via une connexion RDP, lire une vidéo sans hachure, afficher des animations Silverlight ou encore afficher une application 3D . Une bonne nouvelle donc pour la solution VDI de Microsoft. Rire