27 apr 2020

Office365 sostituire licenze con PowerShell ...

Se vi dovessero chiedere la sostituzione di licenze per molti utenti (= o > di 1K), la procedura potrebbe diventare ostica e molto lunga se gestita tramite interfaccia web.
Scriptare l'operazione tramite PowerShell aiuta non poco.

Verificare le licenze disponibili nel Ns tenant [connessione + lista licenze]:
Connect-MsolService
Get-MsolAccountSku
Ora immaginiamo di filtrare utenti in base alla loro licenza assegnata:
Get-MsolUser -All | Where-Object {($_.licenses).AccountSkuId -match "EnterprisePremium"}

Passiamo allo script vero e proprio (fonte, thanks to Bradley Wyatt).
Rispetto all'originale ho aggiunto un tipo di licenza da rimuovere ($LicenseRemove2) e modificato l'ordine delle azioni, in quanto non potevo assegnare la nuova licenza (ENTERPRISEPREMIUM_STUUSEBNFT) senza prima aver rimosso l'altra (STANDARDWOFFPACK_STUDENT)[causa impossibilità di coesistenza tra i due piani SharePoint].
Da notare che la licenza da rimuovere è la licenza di "controllo" per filtrare gli account.

Il risultato finale è circa questo:

#VARIABILI
$LicenseAdd = "ENTERPRISEPREMIUM_STUUSEBNFT"
$LicenseRemove = "OFFICESUBSCRIPTION_STUDENT"
$LicenseRemove2 = "STANDARDWOFFPACK_STUDENT"

#Richiesta credenziali per l'accesso
$UserCredential = Get-Credential

Write-Host "Connessione a Office 365..." -ForegroundColor Yellow
Connect-MsolService -Credential $UserCredentiget-msolaccal

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
get-msolImport-PSSession $Session -AllowClobber

$Users = Get-MSOLUser -All | Where-Object { $_.isLicensed -eq "TRUE" -and $_.Licenses.AccountSKUID -like "*$LicenseRemove*" }
Foreach ($User in $Users)
{
   
        $UPN = ($User).UserPrincipalName
        $DN = ($User).DisplayName
       
        #Get License AccountSkuId
        $License = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -like "*$LicenseAdd*" }).AccountSkuId
   
        #Get License AccountSkuId
        $RemoveLicense = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -like "*$LicenseRemove*" }).AccountSkuId

        #Get License AccountSkuId 2
        $RemoveLicense2 = (Get-MsolAccountSku | Where-Object { $_.AccountSkuId -like "*$LicenseRemove2*" }).AccountSkuId
   
        #Rimuovo Office 365 A1 per studenti licenza utente
        Write-Host "Removing Office 365 A1 per studenti license from $DN..." -ForegroundColor White
        Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $RemoveLicense2
       
        #Rimuovo Microsoft 365 Apps per studenti licenza utente
        Write-Host "Removing Microsoft 365 Apps per studenti license from $DN..." -ForegroundColor White
        Set-MsolUserLicense -UserPrincipalName $UPN -RemoveLicenses $RemoveLicense

 
        #Aggiungo Office 365 A5 students use benefit licenza utente
        Write-Host "Adding Office 365 A5 students use benefit
        license for $DN..."
-ForegroundColor White
        Set-MsolUserLicense -UserPrincipalName $UPN -AddLicenses $License

}

Get-PSSession | Remove-PSSession


---

Alla fine ho fatto anche un bel giro di disattivazione Yammer per tutti gli utenti, sempre con PowerShell, ma quello lo vediamo nella prossima puntata...

12 apr 2020

Disabilitare Radeon vecchio MacBook con Ubuntu 18.04 ...

Piccola guida se avete un vecchio MacBook Pro (8,2 nel mio caso) con GPU dedicata compromessa (modo gentile per dire cotta) e non volete buttarlo nel cestino.
Con le seguenti modifiche si fa in modo che il MacBook utilizzi solamente la GPU Intel integrata nella CPU, evitando di "chiamare" la Radoen guasta.
L'ambiente con cui lo sto testando è Ubuntu 18.04.

Editate il file: sudo -H gedit /etc/default/grub

Sostituite la riga: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

con: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.lvds_channel_mode=2 i915.modeset=1 i915.lvds_use_ssc=0"

Salvate


Ora aprite:  sudo -H gedit /etc/grub.d/10_linux

Cercate la riga con "gzio" e inserite le seguenti righe prima della riga:
 
echo " outb 0x728 1" | sed "s/^/$submenu_indentation/"
echo " outb 0x710 2" | sed "s/^/$submenu_indentation/"
echo " outb 0x740 2" | sed "s/^/$submenu_indentation/"
echo " outb 0x750 0" | sed "s/^/$submenu_indentation/"
echo " insmod gzio" | sed "s/^/$submenu_indentation/"

Salvate

Infine aggiornate Grub: sudo update-grub


Fonte: https://www.youtube.com/watch?v=ELUzf0MDQS0

P.S.: nella fonte potete trovare istruzioni anche per problemi durante la fase di installazione del sistema operativo.
Io non ne ho avuti fino al primo giro di update > upgrade.

P.S.2: per chi mi conosce, il MacBook non è mio e non lo utilizzerò se dovessi riuscire a renderlo "stabile" :)

10 apr 2020

Leggere seriale server HPE con comando prompt ...

Me lo segno solo perchè faccio sempre fatica a trovarlo:

wmic bios get serialnumber

15 mar 2020

PowerShell da linux ...

Il blocco a casa\ufficio dato dal covid-19 mi da la possibilità di mettere mani a progetti lasciati indietro.

Questo fine settimana, sto "simulando" di ritrovarmi a lavorare in ambiente unix, sfruttando un vecchio MacBook con GPU dedicata cotta che gira incredibilmente bene con un Ubuntu 18.06 LTS.

Da sistemista Windows, la sfida sarebbe stata decisamente ardua fino a solo qualche anno fa. Ma con l'astrazione dei sistemi e dei servizi sempre più spinta, sto trovando pochissimi scogli.

Diverse applicazioni sono già pronte da installare tramite gestore del software, vedi Visual Studio Code, PowerShell, Teams.

Nella pratica mi sono anche connesso ad Exchange Online (con account senza 2FA).
$Creds = Get-Credential

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Creds -Authentication Basic -AllowRedirection

Import-PSSession $Session -DisableNameChecking




Continuo lo studio ...