Red Hat et dérivées version SERVEUR

Red Hat, Alma Linux : Installer PowerShell

Table des matières

logo-powershell



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

Evidemment, les commandes spécifiques à Windows ne fonctionneront pas sous Linux.
La commande Get-Service qui permet de lister les services Windows (et d'afficher leurs statuts) n'affichera pas la liste des services systemd sous Linux.


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


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


Si on est déjà dans le shell PowerShell, il n'est pas nécessaire que le fichier .ps1 soit exécutable.

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
Un compte sur le site de Broadcom est requis.

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/
 

Cette page a été vue 7900 fois