Red Hat, Alma Linux : Installer PowerShell
Table des matières
Il est possible d'installer PowerShell de Microsoft sous Linux. Dans cet article, nous allons voir comment mettre cela en œuvre sous Red Hat Enterprise Linux.
Et nous verrons l'installation d'un module annexe (PowerCli de VMware).
Bien que certains libristes soient anti-Microsoft, installer PowerShell peut avoir plusieurs avantages. Dans le cadre professionnel, j'y vois :
- Un langage d'administrateur système, qui est conçu pour les administrateurs système
- Un seul langage de script à apprendre, commun à plusieurs systèmes d'exploitation
- Une interopérabilité des scripts possible suivant le type du système d'exploitation
- La possibilité de tirer des bénéfices des modules PowerShell entreprise (tels que PowerCli)
- La facilité pour des Administrateurs Windows de scripter sous Linux
- Apprendre le PowerShell depuis Linux sans avoir besoin de Windows
Cet article d'applique également aux dérivées telles qu'Alma Linux, ou Rocky Linux.
Si vous n'avez pas déjà installé le dépôt de Microsoft, vous pouvez le faire via :
Maintenant, pour installer PowerShell, rien de plus simple :
Pour information, une fois PowerShell lancé :
A noter que dans le shell PowerShell, on peut toujours exécuter des commandes Linux (telles que vim, nano etc..)
Pour lancer le shell powershell :
On peut lancer des commandes directement dans PowerShell :
On peut évidemment lancer des commandes Linux :
Pour exécuter des scripts, on mettra un shebang en entête et on rendra le fichier exécutable.
Comme pour un script Bash, on créé un fichier (on peut utiliser l'extension .ps1 comme sous Windows) :
Voici un simple exemple de script avec le shebang :
On rend le script exécutable avec la commande chmod classique :
On exécute le script PowerShell comme n'importe quel autre script :
On peut évidemment appeler le script ainsi :
On va prendre par exemple le module très utilisé en entreprise : VMware PowerCli.
Le module est téléchargeable à l'adresse : https://developer.broadcom.com/tools/vmware-powercli/latest
Une fois récupéré le zip (Au moment de la révision de ce tuto : VMware-PowerCLI-13.2.1-22851661.zip)
On extrait le zip dans /opt/microsoft/powershell/7/Modules :
Ensuite on exécute PowerShell et on vérifie que le module est disponible :
On peut installer directement le module depuis la commande Install-Module car Power Cli est connu de PowerShell.
Depuis Powershell, pour l'installer pour l'utilisateur actuel :
Si on veut installer le module pour tous les utilisateurs, on se connectera d'abord en root et depuis powershell :
Vu qu'il est dans un dépôt tiers, on validera l'installation via A :
Ensuite on vérifie que le module est disponible :
Dans le cas de PowerCli, si votre VCenter possède un certificat autosigné :
Et on va supprimer les avertissements pour la participation au programme d'expérience utilisateur :
Affichez pour tester des infos de VM via ce script :
Introduction
Il est possible d'installer PowerShell de Microsoft sous Linux. Dans cet article, nous allons voir comment mettre cela en œuvre sous Red Hat Enterprise Linux.
Et nous verrons l'installation d'un module annexe (PowerCli de VMware).
Bien que certains libristes soient anti-Microsoft, installer PowerShell peut avoir plusieurs avantages. Dans le cadre professionnel, j'y vois :
- Un langage d'administrateur système, qui est conçu pour les administrateurs système
- Un seul langage de script à apprendre, commun à plusieurs systèmes d'exploitation
- Une interopérabilité des scripts possible suivant le type du système d'exploitation
- La possibilité de tirer des bénéfices des modules PowerShell entreprise (tels que PowerCli)
- La facilité pour des Administrateurs Windows de scripter sous Linux
- Apprendre le PowerShell depuis Linux sans avoir besoin de Windows
Cet article d'applique également aux dérivées telles qu'Alma Linux, ou Rocky Linux.
Installer Power Shell
Installation du dépôt de Microsoft
Si vous n'avez pas déjà installé le dépôt de Microsoft, vous pouvez le faire via :
Code BASH :
dnf install https://packages.microsoft.com/rhel/$(rpm -E %rhel)/prod/Packages/p/packages-microsoft-prod.rpm
Installer PowerShell
Maintenant, pour installer PowerShell, rien de plus simple :
Code BASH :
dnf install powershell
Configuration de PowerShell
Pour information, une fois PowerShell lancé :
- $PSHOME est /opt/microsoft/powershell/7/
- Les profils sont lus depuis : ~/.config/powershell/profile.ps1
- Les profils par défaut sont lus depuis $PSHOME/profile.ps1
- Les modules utilisateurs sont lus depuis ~/.local/share/powershell/Modules
- Les modules partagés sont lus depuis /usr/local/share/powershell/Modules
- Les modules par défaut sont lus depuis $PSHOME/Modules
- Historique PSReadLine est enregistré dans ~/.local/share/powershell/PSReadLine/ConsoleHost_history.txt
- Les profils sont lus depuis : ~/.config/powershell/profile.ps1
- Les profils par défaut sont lus depuis $PSHOME/profile.ps1
- Les modules utilisateurs sont lus depuis ~/.local/share/powershell/Modules
- Les modules partagés sont lus depuis /usr/local/share/powershell/Modules
- Les modules par défaut sont lus depuis $PSHOME/Modules
- Historique PSReadLine est enregistré dans ~/.local/share/powershell/PSReadLine/ConsoleHost_history.txt
A noter que dans le shell PowerShell, on peut toujours exécuter des commandes Linux (telles que vim, nano etc..)
Utiliser PowerShell
Lancer des commandes
Pour lancer le shell powershell :
Code BASH :
pwsh
On peut lancer des commandes directement dans PowerShell :
Code :
PS /root> Get-Uptime
Code TEXT :
Days : 17 Hours : 18 Minutes : 56 Seconds : 5 Milliseconds : 0 Ticks : 15369650000000 TotalDays : 17,7889467592593 TotalHours : 426,934722222222 TotalMinutes : 25616,0833333333 TotalSeconds : 1536965 TotalMilliseconds : 1536965000
On peut évidemment lancer des commandes Linux :
Code :
PS /root> uptime
12:34:32 up 17 days, 18:56, 1 user, load average: 0,04, 0,05, 0,03
Créer et exécuter des scripts PowerShell
Pour exécuter des scripts, on mettra un shebang en entête et on rendra le fichier exécutable.
Comme pour un script Bash, on créé un fichier (on peut utiliser l'extension .ps1 comme sous Windows) :
Code BASH :
vi script.ps1
Voici un simple exemple de script avec le shebang :
Code :
#! /usr/bin/env pwsh
Get-Uptime
On rend le script exécutable avec la commande chmod classique :
Code BASH :
chmod +x script.ps1
On exécute le script PowerShell comme n'importe quel autre script :
Code BASH :
./script.ps1
On peut évidemment appeler le script ainsi :
Code BASH :
pwsh script.ps1
Installer des modules
On va prendre par exemple le module très utilisé en entreprise : VMware PowerCli.
Installer VMware PowerCli
Depuis le site Broadcom
Le module est téléchargeable à l'adresse : https://developer.broadcom.com/tools/vmware-powercli/latest
Une fois récupéré le zip (Au moment de la révision de ce tuto : VMware-PowerCLI-13.2.1-22851661.zip)
On extrait le zip dans /opt/microsoft/powershell/7/Modules :
Code BASH :
mv Mware-PowerCLI-13.2.1-22851661.zip /opt/microsoft/powershell/7/Modules cd /opt/microsoft/powershell/7/Modules unzip Mware-PowerCLI-13.2.1-22851661.zip
Ensuite on exécute PowerShell et on vérifie que le module est disponible :
Code :
Get-Module -Name VMware.PowerCLI -ListAvailable
Code :
Directory: /opt/microsoft/powershell/7/Modules
ModuleType Version PreRelease Name PSEdition ExportedCommands
---------- ------- ---------- ---- --------- ----------------
Manifest 13.2.1.22. VMware.PowerCLI Desk
Depuis la gallerie Powershell
On peut installer directement le module depuis la commande Install-Module car Power Cli est connu de PowerShell.
Depuis Powershell, pour l'installer pour l'utilisateur actuel :
Code BASH :
Install-Module -Name VMware.PowerCLI
Si on veut installer le module pour tous les utilisateurs, on se connectera d'abord en root et depuis powershell :
Code BASH :
Install-Module -Name VMware.PowerCLI -Scope AllUsers
Vu qu'il est dans un dépôt tiers, on validera l'installation via A :
Code TEXT :
Untrusted repository You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are you sure you want to install the modules from 'PSGallery'? [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): A
Ensuite on vérifie que le module est disponible :
Code :
Get-Module -Name VMware.PowerCLI -ListAvailable
Code :
Directory: /usr/local/share/powershell/Modules
ModuleType Version PreRelease Name PSEdition ExportedCommands
---------- ------- ---------- ---- --------- ----------------
Manifest 13.3.0.24… VMware.PowerCLI Desk
Paramétrer PowerCli
Dans le cas de PowerCli, si votre VCenter possède un certificat autosigné :
Code :
Set-PowerCLIConfiguration -InvalidCertificateAction ignore
Et on va supprimer les avertissements pour la participation au programme d'expérience utilisateur :
Code :
Set-PowerCLIConfiguration -Scope User -ParticipateInCEIP $false
Affichez pour tester des infos de VM via ce script :
Code :
#! /usr/bin/env pwsh
$Vcenter="vcenter01"
Connect-VIServer -Server $Vcenter
Get-VM –Name SRV-WEB01
Code TEXT :
Specify Credential Please specify server credential User: vcenter-adm Password for user vcenter-adm: ******************** Name Port User ---- ---- ---- vcenter01 443 LINUXTRICKS\vcenter-adm WARNING: The 'Version' property of VirtualMachine type is deprecated. Use the 'HardwareVersion' property instead. Name : SRV-WEB01 PowerState : PoweredOn Notes : RHEL8 Apache PHP Guest : SRV-WEB01:Red Hat Enterprise Linux 8 (64-bit) NumCpu : 2 CoresPerSocket : 1 MemoryMB : 2048 MemoryGB : 2 VMHostId : HostSystem-host-1309951 VMHost : esx01.linuxtricks.lan VApp : FolderId : Folder-group-v492933 Folder : Redhat ResourcePoolId : ResourcePool-resgroup-334095 ResourcePool : Resources HARestartPriority : ClusterRestartPriority HAIsolationResponse : AsSpecifiedByCluster DrsAutomationLevel : AsSpecifiedByCluster VMSwapfilePolicy : Inherit VMResourceConfiguration : CpuShares:Normal/2000 MemShares:Normal/20480 Version : Unknown HardwareVersion : vmx-19 PersistentId : 502995e4-8d3d-3e96-fd36-dbccefa72309 GuestId : rhel8_64Guest UsedSpaceGB : 47.100052206777036190032958984 ProvisionedSpaceGB : 92.09810088481754064559936523 DatastoreIdList : {Datastore-datastore-1324296} CreateDate : 1/1/1970 12:00:00 AM SEVEnabled : False BootDelayMillisecond : 0 MigrationEncryption : Opportunistic MemoryHotAddEnabled : True MemoryHotAddIncrement : 128 MemoryHotAddLimit : 3072 CpuHotAddEnabled : False CpuHotRemoveEnabled : False ExtensionData : VMware.Vim.VirtualMachine CustomFields : {[PnC.CustSpec, ], [PnC.Deployed, ], [PnC.GroupID, ], [PnC.Source, ]…} Id : VirtualMachine-vm-1312151 Uid : /VIServer=linuxtricks\vcenter-adm@vcenter01:443/VirtualMachine=VirtualMachine-vm-1312151/