How to install PowerShell Core 7 on Windows and Linux

PowerShell is a must have skill for a developer or system administrator working in the Microsoft ecosystem, but not only. With the release of the version 7 of PowerShell Core, the improvements and new features make more us more powerful to to what we need to be do for our clients.

The PowerShell team announced PowerShell 7 here. PowerShell 7 is now built on .NET Core 3 and brings back many APIs required by modules built on .NET Framework, so now they work with .NET Core runtime and PowerShell 7 ! This is a huge improvement for what we can do with PS.

Here is how you can install and update PowerShell Core 7 on Windows and Linux (preview) from officiel documentation :

Windows 10 install

1. On Windows 10, you can execute this simple command line to install PS Core 7 with a PS instance (with administrator rights) :

iex « & { $(irm https://aka.ms/install-powershell.ps1) } –UseMSI -Quiet »

image

Note : If you install a previous version of PowerShell Core (PS6 for example) and you use –Quiet option, it will fail to install PS7. In that case, remove the –Quiet option and follow the installer UI instructions.

2. To launch a PSC7 instance, either right click in a directory ‘PowerShell 7 > Open here’ or just type ‘pwsh’ :

image

image

Linux install

PowerShell 7 supports the following operating systems on x64, including:

  • Windows 7, 8.1, and 10
  • Windows Server 2008 R2, 2012, 2012 R2, 2016, and 2019
  • macOS 10.13+
  • Red Hat Enterprise Linux (RHEL) / CentOS 7+
  • Fedora 29+
  • Debian 9+
  • Ubuntu 16.04+
  • openSUSE 15+
  • Alpine Linux 3.8+

Note : latest version 19.10 is not supported :
image

1. In a bash terminal, just execute the following command line :

wget https://aka.ms/install-powershell.sh; sudo bash install-powershell.sh; rm install-powershell.sh

2. To launch a PSC7 instance in the bash just type ‘pwsh’ :

PS 7 works fine even on a low Memory/CPU computer Smile

For Linux, you can see the documentation here : https://docs.microsoft.com/fr-fr/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-7.

[SharePoint 2010] Récupérer la date d’un répertoire pour mettre à jour une propriété d’un document

Un petit script prenant le nom d’un répertoire similaire à :

XYZ_110904_ABC

et permettant d’extraire la date (ici “110904”) et de la spécifier comme propriété (ici la propriété “Date de la revue”) sur les documents contenus dans le répertoire parent.

if(-not(Get-PSSnapin « Microsoft.SharePoint.PowerShell » -ErrorAction SilentlyContinue | Where {$_.Name -eq « Microsoft.SharePoint.PowerShell »}))
{
    Write-Host « Chargement de la librairie SharePoint pour PowerShell »
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

$web = Get-SPWeb http://companyweb
$listRP = $web.Lists[« Revue de presse »]

# On récupère uniquement les répertoire contenant 6 chiffres dans leur nom
$listRP.Folders | ? { $_.Name -match « (?<num>\d{6}) » } | % {
    $_ -match « (?<num>\d{6}) » | out-null ;
    Write-Host « Update =>  » $_.Name
    $year = 0;
    $month = 0;
    $day = 0;
    [System.Int32]::TryParse($matches[0].Substring(0,2), [ref] $year)
    [System.Int32]::TryParse($matches[0].Substring(2,2), [ref] $month)
    [System.Int32]::TryParse($matches[0].Substring(4,2), [ref] $day)
    $year = $year+2000 # 11 => 2011
    $revueDate = New-Object System.DateTime($year, $month, $day)
    $files = $_.Folder.Files
   foreach ($file in $files)
   {
        Write-host « Traitement du fichier ==>  » $file.Name
        $file.Item[« Date de la revue »] = $revueDate
        $file.Item.Update();
   }
}

Si cela peut vous sauver quelques minutes de votre longue journée !

Mettre à jour le type de contenu des documents d’une bibliothèque SharePoint 2010 avec PowerShell

Beaucoup de travail, beaucoup de nouvelles astuces à partager mais pas beaucoup de temps pour le faire, voici ce qui devrait changer dans les prochaines semaines.

Pour la reprise, voici quelques scripts PowerShell qui pourrait vous épargner quelques minutes d’écriture. Le premier très simple (je n’ai pas le niveau de notre SPAdmin préfére Fabrice69), pour changer le type de contenu de documents contenus dans un répertoire récemment migré :

if(-not(Get-PSSnapin « Microsoft.SharePoint.PowerShell » -ErrorAction SilentlyContinue | Where {$_.Name -eq « Microsoft.SharePoint.PowerShell »}))
{
    Write-Host « Chargement de la librairie SharePoint pour PowerShell »
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

$web = Get-SPWeb http://companyweb
# La liste contenant les documents à mettre à jour
$listRP = $web.Lists[« Revue de presse »]

# On prend que certains répertoires (ici ceux contenant le nom de notre journal local)
$folders = $listRP.Folders | where { $_.Name -like « *LNC* » }
foreach ($folder in $folders)
{
   Write-Host « Mise à jour répertoire =>  » $folder.Name
   $files = $folder.Folder.Files
   foreach ($file in $files)
   {
        Write-host « Traitement du fichier ==> » $file.Name
        if ($file.Level -eq [Microsoft.SharePoint.SPFileLevel]::Checkout)
        {
            $file.CheckIn(« Archiver par le système »)
        }
        # Créez le type de contenu dans les types de contenu de site
        $file.Item[« ID du type de contenu »] = $web.ContentTypes[« Revue de Presse »].Id;
        # Champ de type choix

        $file.Item[« Nom du média »] = « LNC »;
        $file.Item.Update();
   }
}

Happy PS ! (Dédicace à mon coéquipier de terrain David)