Red Hat et dérivées version SERVEUR

Red Hat, Alma Linux : Installer PowerShell

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

logo-powershell



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


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/