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..)
On peut lancer des commandes directement dans PowerShell après avoir exécuté pwsh :
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 :
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
On peut lancer des commandes directement dans PowerShell après avoir exécuté pwsh :
Code :
PS /root> Get-Uptime
Code TEXT :
Days : 16 Hours : 0 Minutes : 1 Seconds : 48 Milliseconds : 0 Ticks : 13825080000000 TotalDays : 16.00125 TotalHours : 384.03 TotalMinutes : 23041.8 TotalSeconds : 1382508 TotalMilliseconds : 1382508000
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
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
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/