FreshRSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

How to create a Hyper-V VM with PowerShell

16 mai 2022 à 11:51

In this new post of my Hyper-V management series, I will explain how create a Hyper-VM with PowerShell.

The post How to create a Hyper-V VM with PowerShell first appeared on 4sysops.

Windows Terminal : accéder à Powershell, Invite de commandes et WSL

21 mai 2020 à 16:02

Windows Terminal est un terminal moderne qui regroupe Powershell, invite de commandes ou WSL .
C’est une nouvelle application pour ouvrir les Shells Windows dans une application centralisée et moderne.
En effet, vous pouvez bénéficier d’effets GPU comme la transparence et opacité.
On peut créer ou modifier des profils pour personnaliser n’importe quel terminal et shell.
Ce dernière permettent aussi d’ouvrir des shells externes à Windows.

L’application peut s’installer sur Windows 10 et est incluse par défaut dans Windows 11 pour remplacer le shell PowerShell.

Voici une présentation du Windows terminal, comment l’utiliser, le configurer et le personnaliser.

Qu’est-ce que le terminal de Windows ?

Dans Windows, pour ouvrir l’invite de commandes ou PowerShell, on passer par une interface différence.

Le terminal Windows est une application de terminal moderne, rapide, efficace, puissante et productive pour les utilisateurs d’outils en ligne de commande et d’environnements tels que l’Invite de commandes, PowerShell et WSL.
Grâce à Windows Terminal, vous pouvez accéder aux différents interfaces sur une même application.
Elle centralise donc tous les shells de Windows dans une même application.

Avec ce dernier, vous pouvez ouvrir un ou plusieurs onglets Powershell, invite de commandes ou WSL.
Enfin on peut le personnaliser afin de jouer sur la transparence ou changer le fond d’écran.

Les principales fonctionnalités incluent plusieurs onglets, des volets, une prise en charge des caractères Unicode et UTF-8, un moteur de rendu de texte accéléré par GPU, ainsi que des thèmes, styles.
Chacun des paramètres se font sur des profils afin de personnaliser l’apparence et l’affichage.

Le terminal Windows pour accéder à Powershell, Invite de commandes et WSL

Plus de détails sur la définition d’un terminal :

Installer et ouvrir Windows Terminal

Comment ouvrir Windows Terminal sur Windows 11

Windows Terminal étant l’application de terminal par défaut de Windows 11, on le retrouve dans le menu Démarrer.
Notamment par le clic droit sur le menu Démarrer ou via le raccourci clavier

+ X.
Pour trouver d’autres méthodes pour ouvrir Windows Terminal dans Windows 11, suivez ce tutoriel :

Ouvrir Windows Terminal sur Windows 11 avec le clic droit du menu Démarrer

Comment installer et ouvrir Windows Terminal sur Windows 10

L’application n’set pas incluse par défaut dans Windows 10.
Mais elle facile à installer puisque disponible dans le Store.

Comment installer Windows Terminal
  • Puis cliquez sur Installer
  • Une fois l’installation terminée, ouvrez le Terminal depuis le Menu Démarrer
Comment ouvrir Windows Terminal sur Windows 10

Comment utiliser Windows Terminal ?

Il fonctionne comment les terminaux Linux.
Vous pouvez ouvrir plusieurs shells avec le bouton +

Comment utiliser Windows Terminal

Par exemple ci-dessous, on accède à l’invite de commandes, Powershell et la distribution Debian par WSL depuis une même fenêtre Windows Terminal.

Comment utiliser Windows Terminal

Bien entendu, il existe des touches raccourcies pour faire gagner du temps.

Type d’interfacesRaccourcis clavier
Windows PowershellCTRL+Shift+&
Invite de commandesCTRL+Shift+é
Ubuntu
(ou autre Linux WSL installé)
CTRL+Shift+”
Azure Cloud ShellCTRL+Shift+’
Les touches raccourcies pour ouvrir les interfaces sur Windows Terminal

La commande wt

Vous pouvez utiliser wt.exe pour ouvrir une nouvelle instance de Windows Terminal à partir de la ligne de commande. Vous pouvez également utiliser l’alias d’exécution wt à la place.

  • new-tab : créer un nouvel onglet
  • split-pane : spliter les écrans

Pour ouvrir une nouvelle instance de terminal avec plusieurs onglets, dans ce cas un profil d’invite de commandes et un profil PowerShell

wt -p "Command Prompt" ; new-tab -p "Windows PowerShell"

Par exemple pour ouvrir le Widnows Terminal en multi-fenêtre.
C’est à dire plusieurs shells dans une même fenêtre.

wt -p "Command Prompt" `; split-pane -p "Windows PowerShell" `; split-pane -H wsl.exe
ouvrir Windows Terminal en mode multi-fenêtres

Les raccourcis clavier

WT propose de nombreux raccourcis clavier afin de naviguer dans les onglets et menus par le clavier.
Cela permet d’éviter d’utiliser la souris ce qui est très utile pour une application en ligne de commandes.
Le tutoriel suivant vous donne la liste complète des raccourcis clavier de Windows Terminal :

Les profils de Windows Terminal

L’application de terminal propose un menu de paramétrage afin de personnaliser l’affichage, créer de nouveaux profils.

  • Ouvrez Windows Terminal
  • Puis cliquez sur le menu déroulant sur la barre de titre
  • Sélectionnez l’option Paramètres. Notez que vous pouvez accéder directement aux paramètres par le raccourci clavier : CTRL+,
  • On trouve de nombreux réglages comme les options de démarrage, apparences, jeu de couleurs et les raccourcis clavier dans Actions. Enfin peut aussi créer, supprimer ou personnaliser les profils.
Comment changer la police par défaut dans Terminal Windows

Comment paramétrer et personnaliser le terminal de Windows ?

Une des principales avancées avec cette application de Terminal est la possibilité de la personnaliser à travers de nombreux paramètres.
Ainsi vous pouvez modifier l’image de fond de chaque Shell, les policiers, curseurs, etc.

Le site propose de nombreux tutoriels pour vous guider :

Enfin ce dernier regroupe tous les paramétrages pour personnaliser WT :

Modifier l'image de fond et transparence du Windows Terminal

Liens

La page officielle consacrée au Terminal Windows : https://devblogs.microsoft.com/commandline/
La document de Windows Terminal : https://docs.microsoft.com/en-us/windows/terminal/

L’article Windows Terminal : accéder à Powershell, Invite de commandes et WSL est apparu en premier sur malekal.com.

Remove or block Chrome extensions with PowerShell

12 mai 2022 à 15:28

A comment on the previous post about deploying Chrome extensions posed the question of whether PowerShell could be used to remove Chrome extensions.

The post Remove or block Chrome extensions with PowerShell first appeared on 4sysops.

How to check the PowerShell version

10 mai 2022 à 11:59
Par : Leos Marek

It is important for an administrator to know what Windows PowerShell and PowerShell edition and version are installed on a system, especially due to script compatibility. This article covers all the ways to check the PowerShell version on Windows, Linux, and MacOS and offers tips and tricks. The methods discussed here also work with PowerShell 7, 7.1 and 7.2

The post How to check the PowerShell version first appeared on 4sysops.

Comment manipuler des fichiers Excel avec PowerShell ?

9 mai 2022 à 16:15

I. Présentation

Microsoft Excel est un logiciel très populaire en entreprise, et on l'utilise très souvent comme une petite base de données afin de stocker des données diverses et variées. Au sein même d'un service informatique, c'est un outil très utile, au même titre que peut l'être PowerShell, alors pourquoi ne pas combiner l'usage de ces deux outils ?

Lorsque l'on utilise PowerShell, il n'est pas rare de manipuler des fichiers de données au format CSV, notamment pour exporter ou importer des données afin de les exploiter dans un script. Dans le cas d'Excel, on peut également réaliser plusieurs actions : importer un fichier Excel, exporter des données dans un fichier Excel, écrire dans une cellule spécifique d'un fichier Excel, etc... Le tout avec PowerShell.

Ainsi, on peut imaginer un script qui va alimenter un fichier Excel, et ce dernier sera facilement consultable depuis un poste de travail, grâce à l'affichage sous forme de tableur. Vous l'aurez compris, dans ce tutoriel, nous allons apprendre à manipuler des fichiers Excel avec PowerShell. L'usage d'Excel à partir de PowerShell est un sujet vaste tant les possibilités sont nombreuses, donc ce tutoriel sera une première introduction pour vous permettre de démarrer sur de bonnes bases !

II. PowerShell et Excel : les prérequis

Depuis 2015, Douglas Finke développe un module nommé "ImportExcel" qui permet de manipuler des fichiers Excel avec PowerShell. Ce module populaire est disponible sur la PowerShell Gallery et compte plus de 1,4 million de téléchargements ! Grâce à ce module, il est possible d'effectuer de nombreuses opérations : importer les données d'un fichier Excel, exporter au format Excel, ajouter des onglets, des tableaux, des graphiques, mais aussi déclarer une formule, voire même changer la couleur de fond d'une cellule ou créer des règles de mise en forme conditionnelle.

Voici le lien vers la page du module :

Pour interagir avec Excel à partir de PowerShell sur Windows, c'est le seul prérequis ! En effet, il n'est pas nécessaire d'installer Microsoft Excel sur la machine où vous souhaitez manipuler des fichiers Excel avec PowerShell, ce qui est un avantage intéressant sur les serveurs.

III. Installer le module ImportExcel de PowerShell

L'installation de ce module s'effectue très simplement, à l'aide de la commande Install-Module que l'on utilise habituellement pour installer un module. Ce qui donne :

Install-Module -Name ImportExcel

Pour rappel, il est également possible d'installer le module uniquement pour l'utilisateur actuellement connecté sur la machine :

Install-Module -Name ImportExcel -Scope CurrentUser

Quelques secondes plus tard, le tour est joué : vous êtes prêt à passer à la suite !

PowerShell - Installer le module ExportExcel

Sachez que vous pouvez lister l'ensemble des commandes disponibles dans ce module via la commande suivante :

Get-Command -Module ImportExcel

IV. Exporter des données dans Excel avec PowerShell

L'export de données dans un fichier Excel, reprend un peu le même principe que l'export CSV avec PowerShell. Très facilement, nous pouvons exporter le résultat d'une commande dans un fichier Excel. Prenons un exemple où nous allons exporter la liste des comptes d'un annuaire Active Directory dans un fichier Excel.

La commande ci-dessous récupère la liste de tous les utilisateurs de l'Active Directory et exporte cette liste dans un fichier nommé "AD-utilisateurs.xlsx" qui sera généré dans le répertoire courant.

Get-ADUser -Filter * | Export-Excel -Path './AD-utilisateurs.xlsx'

Quelques secondes plus tard, on obtient le résultat suivant :

Exporter des données dans Excel via Powershell

Dans cet exemple, les colonnes ne sont pas dimensionnées automatiquement, ce qui n'est très pratique pour lire. La bonne nouvelle, c'est que le cmdlet Export-Excel dispose de nombreux paramètres, notamment :

  • -AutoSize pour redimensionner les colonnes automatiquement selon la largeur du contenu
  • -WorksheetName pour nommer l'onglet dans le tableau Excel
  • -StartColumn pour écrire les données à partir de la Xème colonnes
  • -StartRow pour écrire les données à partir de la Xème lignes
  • -Append pour ajouter les données à la suite des données existantes dans le fichier
  • -ClearSheet pour supprimer les données avant d'ajouter les nouvelles données (uniquement dans l'onglet/la feuille, si un onglet est précisé)
  • Etc.
Get-ADUser -Filter * | Export-Excel -Path './AD-utilisateurs.xlsx' -AutoSize -WorksheetName "Domaine it-connect.local"

Cette fois-ci, les colonnes sont correctement dimensionnées, et l'onglet est bien nommé comme je l'ai demandé :

Voici un autre exemple qui va permettre de laisser les 3 premières lignes et les 3 premières colonnes vierges :

Get-ADUser -Filter * | Export-Excel -Path './AD-utilisateurs.xlsx' -AutoSize -WorksheetName "Domaine it-connect.local" -StartColumn 4 -StartRow 4

La preuve en image :

Dans le but d'exporter uniquement certaines propriétés, on peut ajouter la commande Select-Object afin de sélectionner les propriétés que l'on souhaite exporter. Voici un exemple pour exporter dans le fichier Excel uniquement deux champs : SamAccountName et Enabled.

Get-ADUser -Filter * | Select-Object SamAccountName,Enabled | Export-Excel -Path './AD-utilisateursBis.xlsx' -AutoSize -WorksheetName "Domaine it-connect.local"

À tout moment, vous pouvez obtenir de l'aide sur l'utilisation de cette commande, ou d'une autre commande, via :

Get-Help Export-Excel

Si vous n'avez pas d'Active Directory sous la main, vous pouvez exporter d'autres données, comme la liste des processus actifs sur votre machine ou l'état des services.

Get-Service | Export-Excel -Path './Services.xlsx' -AutoSize -WorksheetName "Etat des services"

V. Importer un fichier Excel avec PowerShell

Dans cette partie, nous allons voir que l'on peut aussi importer un fichier Excel dans PowerShell afin de lire son contenu. Cette fois-ci, c'est le cmdlet "Import-Excel" qui va être notre alliée pour importer le contenu d'un classeur Excel. Voici un exemple pour importer le fichier que l'on a importé précédemment :

Import-Excel -Path '.\AD-utilisateursBis.xlsx'

Ce qui donne :

PowerShell et Import-Excel

Si l'on reprend l'exemple du premier fichier Excel généré, avec de nombreuses colonnes, mais que l'on souhaite en importer uniquement certaines, c'est également possible via le paramètre -HeaderName. On peut également aller encore plus loin en précisant le nom de l'onglet du fichier Excel dans lequel il faut récupérer les données, via le paramètre -WorksheetName. Voici un exemple pour récupérer uniquement les colonnes DistinguishedName, Enabled et SamAccountName de l'onglet "Domaine it-connect.local" de notre fichier. On commence à la ligne 2 (-StartRow 2) pour ne pas récupérer la ligne d'en-tête. Ce qui donne :

Import-Excel -Path '.\AD-utilisateurs.xlsx' -HeaderName DistinguishedName,Enabled,SamAccountName -WorksheetName "Domaine it-connect.local" -StartRow 2

Le résultat obtenu dans la console PowerShell, et que l'on pourrait tout à fait stocker dans une variable, est plutôt satisfaisant :

Il faut bien respecter l'ordre des colonnes que l'on sélectionne avec -HeaderName, telles qu'elles sont positionnées dans le fichier Excel, sinon les noms de colonnes ne vont pas correspondre aux valeurs. Pour organiser les colonnes dans l'ordre que l'on souhaite dès l'import des données, il faut le faire en deux temps, de cette façon :

Import-Excel -Path '.\AD-utilisateurs.xlsx' -WorksheetName "Domaine it-connect.local" | Select-Object DistinguishedName,SamAccountName,Enabled

On voit bien, dans cet exemple, que j'ai pu inverser l'ordre des colonnes Enabled et SamAccountName par rapport au premier exemple.

Parfois, nous ne connaissons pas forcément la contenance du fichier Excel, ou en tout cas le nom exact des onglets. La commande Get-ExcelFileSummary permet d'obtenir des informations sur un fichier Excel, notamment le nom de chaque onglet, avec le nombre de colonnes utilisées, ainsi que le nombre de lignes, et la plage que cela représente. Voici un exemple :

Get-ExcelFileSummary -Path '.\AD-utilisateurs.xlsx'

Le résultat est parlant :

D'ailleurs, on peut aller plus loin et obtenir des informations sur tous les fichiers Excel situés dans un dossier ou une arborescence. Sur le site officiel, il y a un exemple donné (voir ci-dessous) qui permet d'obtenir un résumé de tous les fichiers Excel en se positionnant sur le dossier courant (avec récursivité).

dir . -r *.xlsx | Get-ExcelFileSummary | ft

Ainsi, on obtient des informations de différents fichiers Excel :

Note : le paramètre -Password est disponible avec Import-Excel et Export-Excel afin de gérer le mot de passe qui peut éventuellement protéger le fichier Excel.

VI. Écrire dans un fichier Excel avec PowerShell

Vous attendiez probablement cette partie : l'ajout de données dans un fichier Excel à l'aide de PowerShell. Sachez que c'est possible, et que l'on peut même modifier des données existantes. Ainsi, on va aller plus loin que simplement exporter et importer des données au format Excel, même si c'est déjà bien !

A. Ouvrir le fichier Excel avec Open-ExcelPackage

La première étape consiste à ouvrir le fichier Excel avec la commande Open-ExcelPackage afin de le convertir (en quelque sorte) en un objet PowerShell. Une fois qu'il sera dans ce nouveau format, il sera possible de lire et de le modifier.

Commençons par ouvrir le fichier Excel "AD-utilisateurs.xlsx" que nous avons créé précédemment. L'objet sera stocké dans la variable $Excel dans mon exemple, mais vous pouvez utiliser un autre nom.

$Excel = Open-ExcelPackage -Path '.\AD-utilisateurs.xlsx'

Actuellement, la variable $Excel ne contient pas le contenu de notre fichier Excel directement. Si on affiche son contenu, ce sont plutôt les propriétés du fichier Excel que l'on obtient.

B. Lire le contenu d'une cellule

Pour lire le contenu d'une cellule, il faut parcourir le fichier Excel, via les différentes propriétés de l'objet. On commencera par préciser "Workbook.Worksheets['nom de la feuille']" pour se positionner dans le bon onglet de notre classeur Excel. Ensuite, via "Cells", on peut préciser la cellule que l'on veut cibler et obtenir sa valeur facilement. Voici un exemple pour la valeur de la cellule A1 :

$Excel.Workbook.Worksheets['Domaine it-connect.local'].Cells['A1'].Value

La valeur est bien retournée, et elle pourrait être stockée dans une variable :

Pour obtenir les valeurs d'une plage de cellules, par exemple la plage A1:A8, on utilisera plutôt SelectedRange :

$Excel.Workbook.Worksheets['Domaine it-connect.local'].SelectedRange['A1:A8'].Value

On peut aussi stocker le "chemin" vers l'onglet du fichier Excel dans une variable, comme ceci :

$Onglet = $Excel.Workbook.Worksheets['Domaine it-connect.local']
$Onglet.Cells['A1'].Value

C. Éditer le contenu d'une cellule

Si l'on souhaite modifier la valeur d'une cellule, on peut s'appuyer sur ce que nous avons vu précédemment. Par exemple, on sait que la cellule A1 (qui correspond à l'en-tête de la colonne A) a pour valeur "DistinguishedName" donc on peut changer cette valeur par "DN" pour avoir un nom plus court. Il suffit d'utiliser cette commande :

$Excel.Workbook.Worksheets['Domaine it-connect.local'].Cells['A1'].Value = "DN"

Avec cette commande, le tour est joué ! Bien sûr, on aurait pu réutiliser la variable $Onglet déclarée précédemment.

D. Fermer le classeur Excel

Il est indispensable de fermer le classeur Excel au moment où l'on a terminé les modifications. En fait, cette option s'effectue via le cmdlet Close-ExcelPackage et elle permettra d'enregistrer les modifications apportées au fichier Excel, s'il y en a eu. Tout le temps que cette commande n'est pas exécutée, les modifications ne sont pas visibles dans Excel.

Il suffit d'appeler notre variable $Excel :

Close-ExcelPackage $Excel

VII. Créer un fichier Excel vierge en PowerShell

Lorsque l'on utilise Open-ExcelPackage en appelant un fichier qui n'existe pas et en ajoutant le paramètre -Create, on peut créer un fichier Excel vierge ! Voici une commande qui permet de créer le fichier "C:\partage\test.xlsx".

$ExcelNew = Open-ExcelPackage -Path "C:\partage\test.xlsx" -Create

Pour le moment, ce fichier n'est pas visible à cet emplacement, car il n'est pas enregistré. Disons qu'il est en mémoire. Nous devons lui ajouter à minima un onglet, par exemple nommé "IT-Connect" grâce au cmdlet Add-Worksheet. D'ailleurs, ce cmdlet s'applique aussi sur les fichiers existants et que l'on manipule via Open-ExcelPackage.

Add-Worksheet -ExcelPackage $ExcelNew -WorksheetName "IT-Connect"

À partir du moment où il y a au moins un onglet de déclaré, on peut fermer le fichier ce qui aura pour effet de le créer.

Close-ExcelPackage $ExcelNew

Sans quitter notre console PowerShell, on peut récupérer des informations sur la structure de notre fichier Excel via cette commande :

Get-ExcelFileSummary -Path '.\test.xlsx'

Voici un récapitulatif en image :

Créer un fichier Excel avec PowerShell

VIII. Créer un tableau croisé dynamique Excel

Pour terminer en beauté cet article, nous allons voir qu'il est possible d'exporter la liste des ordinateurs intégrés au domaine Active Directory pour faire un tableau croisé dynamique dans un document Excel, associé à un graphique qui montrera la répartition entre chaque version de Windows !

Tout d'abord, commençons par exporter la liste des ordinateurs du domaine, en sélectionnant le nom et le système d'exploitation, dans un fichier Excel nommé "AD-Inventaire.xlsx" au sein d'un onglet nommé "Inventaire". Ce qui donne :

Get-ADComputer -Filter * -Properties OperatingSystem | Select-Object Name,OperatingSystem | Export-Excel -Path './AD-Inventaire.xlsx' -AutoSize -WorksheetName "Inventaire" -clearsheet

Ensuite, on va ouvrir ce fichier Excel via Open-ExcelPackage comme nous l'avons vu précédemment :

$Filename = "C:\Partage\AD-Inventaire.xlsx"
$Excel = Open-ExcelPackage -Path $Filename

Puis, on va définir notre tableau croisé dynamique ainsi que le graphique grâce au cmdlet New-PivotTableDefinition. Comme ceci :

$Graph1 = New-PivotTableDefinition -PivotTableName "Graph-Inventaire" -SourceWorkSheet "Inventaire" -PivotRows "OperatingSystem" -PivotData @{OperatingSystem='Count'} -IncludePivotChart -ChartType Pie3D -ShowPercent

Quelques explications sur les différents paramètres utilisés :

  • -PivotTableName : nom de l'onglet dans le classeur Excel
  • -SourceWorkSheet : onglet source pour récupérer les informations, en l'occurrence "Inventaire" que l'on a créé au moment de la création du fichier Excel
  • -PivotRows : champs à définir comme lignes dans le tableau croisé dynamique
  • -PivotData : les données du tableau, ici on veut compter les occurrences pour la propriété "OperatingSystem" de notre tableau dont on prend la fonction "count" mais d'autres valeurs sont possibles (Average, Count, CountNums, Max, Min, Product, None, StdDev, StdDevP, Sum, Var, VarP)
  • -IncludePivotChart : inclure un graphique correspondant au tableau
  • -ChartType : le type de graphique, ici "Pie3D" pour avoir un camembert 3D (désolé j'aime trop le fromage pour ne pas utiliser celui-ci... non en vrai il est adapté)
  • -ShowPercent : afficher les différents pourcentages sur le graphique

Il nous reste à mettre à jour le fichier Excel en intégrant le tableau croisé dynamique via le paramètre -PivotTableDefinition :

Export-Excel -ExcelPackage $Excel -PivotTableDefinition $Graph1 -Activate

Et voilà le résultat final dans un onglet nommé "Graph-Inventaire" de notre fichier Excel ! C'est top, non ? 🙂

PowerShell et les tableaux croisés dynamiques Excel

Afin d'explorer plus en détail les possibilités de ce module et des différentes commandes, il sera indispensable de consulter l'aide du module via la console PowerShell. Pour obtenir les détails sur une commande, vous pouvez utiliser (en remplaçant le cmdlet pour lequel vous souhaitez obtenir de l'aide) les commandes suivantes :

  • Aide détaillée :
Get-Help New-PivotTableDefinition -Detailed
  • Exemples d'utilisation :
Get-Help New-PivotTableDefinition -Examples

Maintenant, c'est à vous de jouer et n'oubliez pas de me dire ce que vous allez faire avec Excel via PowerShell !

The post Comment manipuler des fichiers Excel avec PowerShell ? first appeared on IT-Connect.

How to install the PowerShell Active Directory module

5 mai 2022 à 11:14

This guide has been updated for the latest Windows versions Windows 11 and Windows Server 2022. You'll learn how to install the Active Directory (AD) module for PowerShell Core 6.0, PowerShell 7 and Windows PowerShell. For Windows PowerShell, the tutorial describes how to install the AD module for Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11 Windows Server 2008 R2, Windows Server 2012 R2, and Windows Server 2016, Windows Server 2010 and Windows Server 2022. You'll also learn how to work with the AD module on other systems such as macOS or Linux with the help of PowerShell remoting.

The post How to install the PowerShell Active Directory module first appeared on 4sysops.

Create a Hyper-V virtual switch with PowerShell

29 avril 2022 à 09:40

In this second post in my series about Hyper-V management with PowerShell I will explain how to create a Hyper-V virtual switch with PowerShell. In my previous post I explained how to install Hyper-V with PowerShell.

The post Create a Hyper-V virtual switch with PowerShell first appeared on 4sysops.

Install Hyper-V with PowerShell

28 avril 2022 à 09:39

In this first post of my series about managing Hyper-V with PowerShell I will outline how to install Hyper-V Server and the Hyper-V role with PowerShell.

The post Install Hyper-V with PowerShell first appeared on 4sysops.

Create a Hyper-V virtual switch with PowerShell

29 avril 2022 à 09:40

In this second post in my series about Hyper-V management with PowerShell I will explain how to create a Hyper-V virtual switch with PowerShell. In my previous post I explained how to install Hyper-V with PowerShell.

Virtual switch types

The post Create a Hyper-V virtual switch with PowerShell first appeared on 4sysops.

Install Hyper-V with PowerShell

28 avril 2022 à 09:39

In this first post of my series about managing Hyper-V with PowerShell I will outline how to install Hyper-V Server and the Hyper-V role with PowerShell.

The post Install Hyper-V with PowerShell first appeared on 4sysops.

Windows : comment purger la file d’attente du Spouleur d’impression ?

28 avril 2022 à 09:00

I. Présentation

Dans ce tutoriel, nous allons voir comment purger la file d'attente du Spouleur d'impression d'un serveur d'impression sous Windows Server, même si cette manipulation peut très bien s'appliquer sur un poste de travail sous Windows, notamment Windows 10 ou Windows 11.

Lorsque l'on utilise un serveur d'impression pour gérer ses imprimantes, il arrive parfois qu'un document reste bloqué dans la file d'attente d'une imprimante. Ainsi, la file d'attente de l'imprimante est bloquée tout le temps que ce document ne parvient pas à être imprimé, ce qui peut vite être problématique.

Quand cela se produit, il n’est généralement pas possible de débloquer la situation via l'interface graphique, à partir de la console de gestion du serveur d'impression. De ce fait, il est nécessaire d'intervenir manuellement purger la file d'attente du spouleur d'impression du serveur (ou de l'ordinateur) : c'est ce que nous allons voir. C'est une opération simple, mais très pratique, et que j'ai eu besoin de faire des dizaines de fois.

II. Vider la file d'attente du serveur d'impression

On va commencer par arrêter le service spouleur d'impression de Windows. Pour cela, accédez au gestionnaire de services :

Recherchez dans la liste le service nommé "Spouleur d'impression" qui normalement doit être en cours de fonctionnement. Effectuez un clic droit sur ce service puis "Arrêter".

Note : Le spouleur est le service qui reçoit les données à imprimer depuis votre application et qui va les envoyer à l'imprimante. Il sert d'intermédiaire et permet de libérer l'application de la gestion de l'impression.

On va en profiter le temps de l'arrêt de ce service pour accéder au répertoire suivant : C:\Windows\System32\spool\PRINTERS

Il suffit de supprimer tout le contenu de ce répertoire qui correspond aux données du spouleur d'impression. Purger ce répertoire revient à supprimer tous les documents en attente d'impression.

Supprimer les fichiers bloqués dans le Spouleur d'impression

Enfin, il suffit de démarrer le service Spouleur d'impression dans les services Windows pour que le spouleur reprenne sa place sur votre système, via un clic droit "Démarrer".

B. Purger la file d'attente du spouleur d'impression avec un script Batch

Pour automatiser le tout, vous pouvez déjà commencer par créer un script batch pour gagner un peu de temps :

net stop spooler
del /q /s C:\Windows\System32\spool\PRINTERS\*
net start spooler

Les options /s et /q permettent respectivement de supprimer les fichiers des sous-répertoires et de ne pas demander de confirmation de suppression.

C. Purger la file d'attente du spouleur d'impression avec PowerShell

En PowerShell, on peut faire la même chose en trois commandes également, sur le même principe : arrêter le service Spouleur d'impression, supprimer le contenu du dossier "PRINTERS" et relancer le service. Ce qui donne :

Stop-Service Spooler 
Remove-Item "C:\Windows\System32\spool\PRINTERS\*.*" -Force 
Start-Service Spooler

Je vous recommande d'utiliser la méthode basée sur des commandes PowerShell (ou Batch) car c'est plus rapide : l'interruption de service sera plus courte, car quand le service est arrêté, le serveur d'impression est considéré comme étant hors ligne.

The post Windows : comment purger la file d’attente du Spouleur d’impression ? first appeared on IT-Connect.

Enable PowerShell remoting

13 avril 2018 à 09:30

If you want to manage Windows computers remotely with PowerShell, you first have to enable PowerShell remoting on the remote machine. You can then use the Invoke-Command and Enter-PSsession cmdlets to execute PowerShell commands on the remote machine. The commands described in this article also work in PowerShell 6 and PowerShell 7. Note that this article replaces several smaller wiki […]

The post Enable PowerShell remoting first appeared on 4sysops.

How to install the PowerShell Active Directory module

5 mars 2018 à 11:49

This guide explains how to install the Active Directory (AD) module for PowerShell Core 6.0 and Windows PowerShell. For Windows PowerShell, the tutorial describes how to install the AD module for Windows 7, Windows 8, Windows 8.1, Windows 10, Windows Server 2008 R2, Windows Server 2012 R2, and Windows Server 2016. Also read: How to install the PowerShell 7 Active […]

The post How to install the PowerShell Active Directory module first appeared on 4sysops.

Differences between PowerShell versions

8 février 2018 à 13:00

This article covers the differences between the PowerShell versions on different Windows versions. In a new section below, we discuss the differences of Windows PowerShell and PowerShell Core 6. In this article "Windows PowerShell" refers to the PowerShell versions that run on Windows until version 5.1. PowerShell Core or PowerShell 6 refers to the new cross-platform edition of PowerShell. Please […]

The post Differences between PowerShell versions first appeared on 4sysops.

Change PowerShell console syntax highlighting colors of PSReadLine

21 décembre 2017 à 12:54

You can change the PowerShell console colors of the PSReadLine module that Microsoft delivers with PowerShell since version 5. We have to distinguish between colors for tokens of a certain type (for examples cmdlets or strings) and the colors of console itself. Token colors To get an overview of your current color settings, you can use this command: Get-PSReadlineOption | […]

The post Change PowerShell console syntax highlighting colors of PSReadLine first appeared on 4sysops.

Disable PowerShell remoting: Disable-PSRemoting, WinRM, listener, firewall, LocalAccountTokenFilterPolicy

7 décembre 2017 à 15:32

Depending on your environment, up to five steps are required you to completely disable PowerShell remoting on a Windows computer. These include blocking remote access to session configurations with Disable-PSRemoting, disabling the WinRM service, deleting the listener, disabling firewall exceptions, and setting the value of the LocalAccountTokenFilterPolicy to 0. Disabling remote access with Disable-PSRemoting With the help of the Disable-PSRemoting […]

The post Disable PowerShell remoting: Disable-PSRemoting, WinRM, listener, firewall, LocalAccountTokenFilterPolicy first appeared on 4sysops.

How to monitor Cisco Unified Communications Manager backups with PowerShell

23 août 2017 à 05:10

This guide explains how to manage Cisco Unified Communication System (version 11.5.x), with PowerShell. Retrieving backup status is the concrete example: CallManager Instant Messaging & Presence (IM & P) Call Center Express (CCX) Cisco Unity Connection (CUC) Telepresence Management Suite (TMS) Except for ‘TMS’ all are configured to store backups on a Network Directory: The backup jobs create several *.tar […]

The post How to monitor Cisco Unified Communications Manager backups with PowerShell first appeared on 4sysops.

Export and import to and from Excel with the PowerShell module ImportExcel

21 avril 2022 à 14:12

The ImportExcel is a PowerShell module that allows you import to or export data directly from Excel spreadsheets without having Microsoft Excel installed on your computer. In this tutorial, you'll learn to work with Import-Excel and Export-Excel. The ImportExcel module runs on Windows, Linux, or Mac and now can be used in Azure functions and GitHub Actions. Simply put, if you need to generate reports for work, you must learn this module.

The post Export and import to and from Excel with the PowerShell module ImportExcel first appeared on 4sysops.

Comment démarrer automatiquement une VM Azure ?

20 avril 2022 à 10:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à démarrer automatiquement les VMs Azure à partir d'Azure Automation et d'un runbook PowerShell. Grâce à cette méthode, vous pourrez configurer certaines machines virtuelles Azure pour qu'elles s'arrêtent et démarrent automatiquement, à l'heure que vous le souhaitez.

Avant tout, il faut savoir que dans Azure, lorsqu'une VM tourne elle vous coûte de l'argent. En partant de ce constat, on peut chercher à optimiser les coûts pour que la facture soit un peu moins salée à la fin du mois. Pour certaines VM, l'arrêt n'est tout simplement pas envisageable, alors que pour d'autres cela peut avoir du sens. Par exemple, des VMs de test ou de préproduction que l'on utilise seulement la journée.

Azure Automation permet d'automatiser certaines tâches, notamment en exécutant des scripts PowerShell ou Python, pour automatiser certains processus. C'est surtout cet aspect d'Azure Automation qui va nous intéresser aujourd'hui. Même si ce service est payant, si l'on regarde les tarifs de "Process Automation", on peut voir que l'on a le droit à "500 minutes" d'exécution gratuite par mois. Étant donné que le démarrage d'une VM consomme quelques secondes, cette solution semble intéressante pour optimiser ses coûts 🙂

Dans cet article où l'on va effectuer la configuration pas à pas, je vais utiliser les valeurs suivantes :

  • VM à gérer automatiquement : SRV-WSUS
  • Groupe de ressources : IT-CONNECT_VM_SRV_WSUS
  • Compte Azure Automation :  IT-Connect_Automation
  • Nom du runbook : Start-VM-7am
  • Planification : Tous_les_jours_07h00

Pour une solution sans Azure Automation, consultez ce tutoriel :

II. Configurer l'arrêt automatique d'une VM Azure

Tout d'abord, nous devons activer l'arrêt automatique sur notre machine virtuelle "SRV-WSUS". Cette option est proposée lorsque l'on crée une machine virtuelle, et on peut revenir dessus à tout moment. Pour cela, il suffit de cliquer sur la VM puis de cliquer sur "Arrêt automatique" (1), de cocher l'option "Activé" (2), de définir l'heure à laquelle la VM doit s'arrêter et choisir le fuseau horaire (3). Enfin, il faut enregistrer (4).

Arrêt automatique d'une VM Azure

L'opération doit être répétée sur l'ensemble des VMs dont vous souhaitez gérer l'arrêt et le démarrage en mode auto. C'est également possible d'effectuer la configuration via PowerShell.

La première étape est un succès : notre VM va s'arrêter tous les jours à 23h00. Maintenant, voyons comment gérer le démarrage automatiquement, et là c'est un peu plus complexe.

III. Créer un compte Azure Automation

En premier lieu, à partir du portail Azure, recherchez "Automation" afin d'accéder à Azure Automation. La première fois, il sera indispensable de créer un compte Automation, en cliquant sur le bouton "Créer".

Il faut attribuer un groupe de ressources et un nom à ce compte Automation, par exemple "IT-Connect" en ce qui me concerne. Ensuite, lancez la création.

La création s'effectue en quelques secondes.

IV. Créer un runbook PowerShell dans Automation

La ressource étant créée, nous avons accès à notre compte "Azure Automation" et aux différentes fonctionnalités. Pour démarrer automatiquement les VMs, nous allons créer un runbook qui va exécuter un script PowerShell.

Sachez également qu'il y a une solution nommée "Start/stop VMs during off-hours" qui est proposée par Microsoft sous la forme d'une "application" pour Azure Automation. Vous pouvez accéder à cette méthode via votre compte Automation, puis en cliquant sur "Start/Stop VM" dans le menu de gauche. Cette solution est liée à Azure Automation et Log Analytics, alors elle va être plus coûteuse.

Start/stop VMs during off-hours

Commençons la configuration de notre runbook PowerShell... Toujours à partir d'Azure Automation (1), cliquez sur "Runbooks" dans le menu de gauche puis sur "Créer un runbook" (3).

Nous devons nommer ce runbook, par exemple "Start-VM-7am" car nous allons démarrer les VMs ciblées à 7h du matin. Pour le "Type de runbook", prenez "Flux de travail PowerShell". Continuez.

Azure Runbook PowerShell

À la suite de la création du runbook, un éditeur de code s'affiche. C'est ici qu'il va falloir coder notre runbook PowerShell en partant de ce bloc comme point de départ :

workflow Start-VM-7am
{
< notre code doit être intégré ici >
}

Voici le code à inclure (et ensuite je vous l'explique) :

workflow Start-VM-7am
{
    # Obtenir les informations du compte Azure Automation
    $ConnexionAz = Get-AutomationConnection -Name 'AzureRunAsConnection'

    # Ajouter le compte à la session en cours
    Add-AzureRMAccount -ServicePrincipal -Tenant $ConnexionAz.TenantID -ApplicationId $ConnexionAz.ApplicationId -CertificateThumbprint $ConnexionAz.CertificateThumbprint

    # Récupérer la liste des machines virtuelles à démarrer
    $VmAz = Get-AzureRMVM

    # Démarrer chaque VM
    $VmAz | Start-AzureRMVM
}

En image, cela donne :

La première étape consiste à récupérer les informations de connexion à Azure Automation via "Get-AutomationConnection", puis d'ajouter les informations du compte à la session en cours via Add-AzureRMAccount et notre variable $ConnexionAz.

Pour la suite, c'est-à-dire la cmd "Get-AzureRMVM" c'est pour récupérer la liste des machines virtuelles à démarrer et stocker cette liste dans une variable nommée $VmAz. Dans mon exemple, je récupère la liste de toutes les VMs, donc je vais démarrer toutes les VMs. Autrement dit, vous allez probablement vouloir faire autrement, en faisant un filtre sur un tag, par exemple.

Pour cela, il faudra ajuster cette ligne :

$VmAz = Get-AzureRMVM | Where-Object {$_.Tags.EtatVM -eq "Test"}

Dans l'exemple ci-dessus, je récupère uniquement les VMs dont le tag "EtatVM" est égal à "Test". A vous d'adapter selon vos tags. Pour cibler une VM spécifique, il faut préciser son nom et le groupe de ressources associé à cette VM. Voici un exemple avec "SRV-WSUS" :

$VmAz = Get-AzureRMVM -ResourceGroupName "IT-CONNECT_VM_SRV_WSUS" -Name "SRV-WSUS"

Une fois que la liste des VM est récupérée, on démarre chaque VM grâce à la commande Start-AzureRMVM puis le tour est joué ! En fin de compte, quand votre bout de code est prêt (tout en sachant qu'il est modifiable à tout moment), cliquez sur "Enregistrer" et "Publier".

Vous pouvez également cliquer sur "Volet de test" afin de tester votre runbook ! Attention, cela va réellement exécuter le script et démarrer les machines virtuelles.

Si la valeur "Terminée" s'affiche, c'est tout bon !Enfin, si vous obtenez une erreur et que vous voyez le texte "Run Login-AzureAccount to login", suivez l'étape suivante pour corriger le problème.

V. J'obtiens l'erreur "Run Login-AzureAccount to login" : que faire ?

Avant tout, sachez que cette partie du tutoriel s'adresse seulement à ceux qui ont rencontré l'erreur ci-dessous lors du test.

Run Login-AzureAccount to login

Pour corriger cette erreur, il faut accéder à la section "Comptes d'identification" (1) d'Azure Automation, puis créer un "Compte d'identification Azure" (2).

Run Login-AzureAccount to login

Une fois cette opération effectuée, ce compte Azure Automation sera capable de s'authentifier sur Azure et d'agir sur les ressources. Vous pouvez réexécuter votre test pour valider que cela fonctionne !

VI. Planifier l'exécution du runbook

La dernière étape consiste à créer une planification et à l'affecter à notre Runbook PowerShell. Pour créer une nouvelle planification à partir d'Azure Automation, nous devons cliquer sur "Planifications" (1) puis "Ajouter une planification" (2).

Azure Automation - Créer une planification

Nous pouvons nommer cette planification "Tous_les_jours_07h00" et définir la configuration suivante :

  • Démarrages : sélectionnez le lendemain et indiquez "07:00" (ou un autre horaire)
  • Fuseau horaire : France - Central European Time
  • Récurrence : périodique, tous les 1 jour
  • Définir l'expiration : "non" car cette planification doit s'exécuter tous les jours, pour toute la vie 🙂

Cliquez sur "Créer" pour valider.

Nous n'avons plus qu'à lier la planification avec le runbook "Start-VM-7am". Cliquez sur le runbook dans Azure Automation puis sur "Lier à une planification".

Choisissez l'objet "Tous_les_jours_07h00" qui correspond à la planification que nous venons de créer et validez.

La planification est bien liée à notre runbook ! Il est à noter que l'on peut ajouter plusieurs planifications à un même runbook, mais dans cet exemple ce n'est pas utile.

La configuration est terminée ! Ainsi, la machine virtuelle va s'arrêter à 23h00 et démarrer à 07h00, automatiquement, tous les jours !

The post Comment démarrer automatiquement une VM Azure ? first appeared on IT-Connect.
❌