Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Gestion de WSUS en Powershell – Partie 1

Gérer Windows Server Update Services c’est bien, mais on n’a pas toujours envie de se connecter à un ou plusieurs serveurs pour le faire. Et si on troquait l’interface graphique pour Powershell ?

I- Les prérequis

  • Depuis un poste client en Windows 7 :

Pour un poste en Windows 7 il faut installer le RSAT « Windows Server Update Services 3.0 SP2 » disponible ici:

https://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=5216

  • Depuis un serveur en Windows Server 2012 R2 :

Pour un serveur en Windows Server 2012 R2 il faut installer la fonctionnalité « Windows Server Update Services Tools« 

II – Connexion au Serveur WSUS

Pour se connecter il va falloir déterminer 3 variables:

  • Le nom du serveur WSUS
  • L’utilisation ou non du SSL ($true ou $false)
  • Le port de connexion (8530, 8531, 80 ou 443)

Dans l’exemple que j’utilise je me connecterai sur le port 8530 sans SSL, d’où la présence du $false.

$WsusServer = "Mon-Server-WSUS"
$WsusPort = "8530"
[void][reflection.assembly]::loadwithpartialname("microsoft.updateservices.administration")
$Wsus = [microsoft.updateservices.administration.adminproxy]::getupdateserver($WsusServer,$false,$WsusPort)

Avec ces 4 lignes vous êtes connecté au serveur WSUS, pour le vérifier rien de plus simple, appelez $Wsus

III – Cmdlet disponibles

Pour déterminer les actions possibles sur le serveur regardons les cmdlet disponibles, pour cela utilisons : 

$Wsus | gm

Comme vous pouvez le voir nous avons un grand nombre d’actions possibles.

Dans la prochaine partie nous verrons les informations que nous pouvons récolter avec quelques lignes de commandes.

Active Directory : NETDOM et les contrôleurs de domaine en français

Bonjour à tous !

Aujourd’hui, nous allons parler de la commande Netdom trust (nous allons donner plus de détails sur cette commande dans un prochain article).

Quand vous êtes dans le cadre d’une migration de forêt/domaine Active Directory, il est probable que vous vouliez autoriser l’utilisation des SidHistory afin de préserver les accès aux ressources du domaine historique pour les postes/utilisateurs migrés.

Pour se faire, nous utilisons deux commandes (depuis un contrôleur de la nouvelle foret) :

  • netdom trust DomaineHistorique /D:NouveauDomaine /UO:Utilisateur_Nouveau_Domaine /PO:* /Quarantine:yes/no
  •  netdom trust DomaineHistorique /D:NouveauDomaine /UO:Utilisateur_Nouveau_Domaine /PO:* /EnableSidHistory:yes/no

Mais que se passe t’il si vous entrez cette commande sur un contrôleur de domaine en langue française ?

Nous entrons donc la commande suivante afin d’avoir le statut de la mise en quarantaine des SID : netdom trust DomaineHistorique /D:NouveauDomaine /UO:Utilisateur_Nouveau_Domaine /PO:* /Quarantine

Nous voulons maintenant effectuer une action en désactivant la mise en quarantaine des SID : netdom trust DomaineHistorique /D:NouveauDomaine /UO:Utilisateur_Nouveau_Domaine /PO:* /Quarantine:no

Bizarre, nous obtenons le même message que pour la commande précédente …

Après vérification, la commande n’a pas désactivé le filtrage.

En revanche, si vous entrez la version suivante de la commande, vous obtiendrez un résultat fort différent ! 

netdom trust DomaineHistorique /D:NouveauDomaine /UO:Utilisateur_Nouveau_Domaine /PO:* /Quarantine:non

Et voilà ! La commande marche enfin ! Elle n’a été traduite que pour un seul paramètre.

Il est à noter qu’il faut faire exactement la même chose pour le paramètre /EnableSidHistory.

Vous êtes désormais averti, ce bug est encore présent même sous Windows Server 2012 R2.

Remplacer tous les mots de passe en claire dans un dossier donné en powershell

Bien souvent, en entreprise on se retrouve avec des dossiers contenant des fichiers *.ini d’installation ou autres avec des mots de passe stockés en claire. Prenons, le cas des installations SQL , le DBA enregistre les mots de passe dans un fichier de paramètre et ne pense pas à le supprimer. Les mots de passe en claire posent un problème de sécurité au SI. Le script en powershell ci-dessous permettrait de remplacer tous les mots de passes en claire par des étoiles (**********). 

#############################################
#Author: KARUPPANNAN Seevadassen            #
#Date: 27/03/2017                           #
#############################################

$networkPath = "\\chemin\dossier\"

$iniS = Get-ChildItem -Path $networkPath -Filter *.ini -Recurse

foreach ($file in $iniS) {

$fileName = $file.Name
$filePath = $file.FullName

Write-Host "File name: " $fileName -ForegroundColor yellow
Write-Host "Full path: " $filePath -ForegroundColor yellow

$array = $filePath.split("\")
$server = $array[8]

Write-Host "Server: " $server

$password = Get-Content $filePath | Where-Object { $_.Contains("SAPWD") -or $_.Contains("SQLSVCPASSWORD") -or $_.Contains("AGTSVCPASSWORD") -or $_.Contains("FTSVCPASSWORD") -or $_.Contains("ISSVCPASSWORD") -or $_.Contains("ASSVCPASSWORD") -or $_.Contains("RSSVCPASSWORD") -or $_.Contains("FARMPASSWORD")}

Write-Host $password
Write-Host $password.GetType()

foreach ($line in $password){

      $row = $server + ";" + $line
      Write-Host "row value: " $row -ForegroundColor Green

      Write-Host "line: " $line
      $param1,$param2 = $line.split('=') 
      Write-Host "partie1: " $param1


      $replacetxt =  $param1 + '=' + '"' + "********" + '"' 


      Write-Host "replace with " $replacetxt

try {

            (Get-Content $filePath) -replace $line,$replacetxt | Set-Content $filePath

            Write-Host "SUCCESS:Password has been replaced!" -ForegroundColor Green

      }catch{

            Write-Host "ERROR:Password has NOT been replaced!" -ForegroundColor red
            $ErrorMessage = $_.Exception.Message
            Write-Host $ErrorMessage
}

}

Write-Host "---"
}

 

Dans les fichiers *.ini, le script powershell va chercher toutes les lignes qui contiennent les mots clés « SAPWD », »SQLSVCPASSWORD », »AGTSVCPASSWORD », »FTSVCPASSWORD »… et replacer par la suite les mots de passe par des étoiles.