[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 😉

Sauvegardez simplement vos pilotes avec cet outil

Bonjour à tous,

Après une bonne période de développement voici un petit utilitaire que je viens de développer et qui vous permet de sauvegarder rapidement les pilotes tiers utilisés sur un poste de travail. Cette sauvegarde peut ensuite être intégrée dans SCCM ou MDT ou tout autre dossier.

Vous retrouverez les binaires de cette application à la page suivante : Driver Management Tool. N’hésitez pas à noter cette contribution à cette même page 🙂 🙂

Lire la suiteSauvegardez simplement vos pilotes avec cet outil

[Windows] Modifier l’ordre des emplacements source des pilotes

Vous avez déjà pu constater que lors du branchement d’un nouveau périphérique la recherche d’un pilote compatible pouvait prendre un certain temps … et même un temps certain. Ce délai est dû au fait que le processus de recherche de pilote Windows tente d’abord de localiser un pilote à partir du site Windows Update avant de rechercher un pilote localement.

Depuis Windows 7, vous avez la possibilité de modifier cet ordre de recherche.

Cet article vous présente où et comment modifier ce paramètre.

Lire la suite[Windows] Modifier l’ordre des emplacements source des pilotes

[Windows 10] Obtenir la clé OEM stockée dans le BIOS

Bonjour à tous,

Voici une portion de code PowerShell vous permettant d’obtenir la clé OEM Windows de votre système. Cette fonction renvoie la clé si le BIOS contient une clé Windows sinon elle ne renvoie rien:

1
2
3
4
5
6
7
8
9
10
11
12
Function Get-OriginalProductKey
{
    $ProductKey = (Get-WmiObject -Class SoftwareLicensingService).OA3xOriginalProductKey
    if (-not [string]::IsNullOrEmpty($ProductKey))
    {
        Write-Output $ProductKey
    }
    else
    {
        Write-Output $null
    }
}

Plus globalement, la classe WMI SoftwareLicensingService expose les propriétés d’activation d’un produit ainsi que les méthodes et propriétés liées au Service d’activation (date de fin de grâce, méthode d’activation, etc.). Vous trouverez le détail de cette classe ici.

Dernière information, il semblerai que cette classe soit disponible à partir de Windows 7 / 2008 R2.

Enjoy 😉

MDT 2012 Update 1 : La beta est disponible !

Depuis la fin de la semaine dernière, la beta 1 de MDT 2012 Update 1 est disponible en téléchargement sur le site Connect.

Grosses nouveautés au programme :

  • Support du DART Windows 8 ainsi que du futur Windows AIK, alias Windows Assessment and Deployment Toolkit
  • Possibilité de créer et de personnaliser votre propres pages dans le scénario UDI et sans connaissance en développement requise (drag-and-drop)
  • Intégration avec System Center Orchestrator. Vous pourrez invoquer des Runbooks pendant une séquence de tâches
  • Refonte de l’ajout de rôles et fonctionnalités (ajout / Suppression) et possibilité de sélectionner les rôles à ajouter dans l’assistant d’installation
  • Support de Powershell 3.0 pour faciliter l’exécution de script dans une séquence de tâches
  • fonctionnalités de monitoring d’exécution de séquences de tâches SCCM
  • déploiements « Boot from vhd » améliorés supportant les scénarios « new computer » et « Refresh »

Enjoy !!!

Windows 8 Consumer Preview : disponible

Et voici maintenant l’arrivée de la Consumer preview.

Disponible à l’adresse suivante : http://windows.microsoft.com/en-US/windows-8/iso

 

 

Disponible pour les langues suivantes :

  • Anglais
  • Français
  • Japonais
  • Chinois simplifié
  • Allemand

Pour le moment 2 modes d’installation :

  • télécharger l’image ISO du produit
  • lancer l’installeur WEB

Enjoy !!

Windows 8 : La Beta publique le 29 février 2012

Nous venons d’apprendre que Microsoft mettrai à disposition la première beta de Windows 8 le 29 Février prochain, lors du « Mobile World Congress » de Barcelone.

La présentation au Mobile World Congress n’est pas anodine … Je pense tout particulièrement à Windows Phone 8.

Quelques Screenshot d’une version Escrow viennent d’apparaitre sur le site WinUnLeaked.

Il ne me reste donc plus que 19 jours, 11 Heures, 13 minutes et …. 45 secondes d’attente … 🙂