Red Hat, Alma Linux : Installer PowerShell
Table des matières
Il peut arriver que pour des cas spécifiques, nous ayons besoin de PowerShell.
Il est possible d'installer PowerShell de Microsoft sous Linux.
Nous allons voir comment mettre cela en œuvre sous Red Hat Enterprise Linux 8.
Et nous verrons l'installation d'un module annexe (PowerCli de VMware)
Je n'ai pas encore testé sur une dérivée de Red Hat Enterprise Linux comme Alma Linux, mais ça doit fonctionner.
Si vous n'avez pas déjà installé le dépôt de Microsoft, vous pouvez le faire via cette ligne de commande pour RHEL 8 et dérivées :
Maintenant, pour installer PowerShell, rien de plus simple :
Pour information, une fois PowerShell lancé :
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 :
On peut évidemment appeler le script ainsi :
On va prendre par exemple le module VMware PowerCli : https://developer.vmware.com/web/tool/vmware-powercli
Une fois récupéré le zip (Au moment de ce tuto : VMware-PowerCLI-13.0.0-20829139.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 peut arriver que pour des cas spécifiques, nous ayons besoin de PowerShell.
Il est possible d'installer PowerShell de Microsoft sous Linux.
Nous allons voir comment mettre cela en œuvre sous Red Hat Enterprise Linux 8.
Et nous verrons l'installation d'un module annexe (PowerCli de VMware)
Je n'ai pas encore testé sur une dérivée de Red Hat Enterprise Linux comme Alma Linux, mais ça doit fonctionner.
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 cette ligne de commande pour RHEL 8 et dérivées :
Code BASH :
dnf install https://packages.microsoft.com/rhel/8/prod/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
Utiliser PowerShell
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
Pour exécuter des scripts, on mettra un shebang en entête et on rendra le fichier exécutable :
Code BASH :
vi script.ps1
Code :
#! /usr/bin/env pwsh
Get-Uptime
Code BASH :
chmod +x script.ps1
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 VMware PowerCli : https://developer.vmware.com/web/tool/vmware-powercli
Une fois récupéré le zip (Au moment de ce tuto : VMware-PowerCLI-13.0.0-20829139.zip)
On extrait le zip dans /opt/microsoft/powershell/7/Modules :
Code BASH :
mv VMware-PowerCLI-13.0.0-20829139.zip /opt/microsoft/powershell/7/Modules cd /opt/microsoft/powershell/7/Modules unzip VMware-PowerCLI-13.0.0-20829139.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.0.0.20… VMware.PowerCLI Desk
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/