Visualizzazione post con etichetta Windows. Mostra tutti i post
Visualizzazione post con etichetta Windows. Mostra tutti i post

lunedì 1 maggio 2023

Windows Quick Tip: Visualizzare la versione, l'edizione e la build di Windows dal file ISO o WIM

In questo articolo approfondiremo quanto già visto nell'articolo Windows Quick Tip: Visualizzare informazioni su un file WIM (Windows Imaging) mostrando come utilizzare DISM e PowerShell per scoprire quali versioni, edizioni, build, language pack di Windows sono presenti all'interno di un file ISO o WIM. Se il nome di un file ISO (o il nome del supporto di installazione) non contiene una versione e una build, è difficile sapere quale versione di Windows contiene. In questi casi è possibile montare il file ISO contenente l'immagine di installazione di Windows e recuperare tali informazioni dal file install.wim.

Una volta montato il file ISO (o inserito il supporto di installazione) accedere alla cartella sources e individuare il file di installazione contenente l'immagine di Windows. Il file si chiama install e può avere una delle seguenti estensioni:
  • install.wim. WIM è un formato standard di immagine di installazione di Windows.
  • install.esd. ESD è un file immagine compresso.
  • install.swm. SWM viene utilizzato se si desidera dividere un'immagine WIM di grandi dimensioni in più file di dimensioni non superiori a 4 GB, in modo da inserirli nel file system FAT32 se si crea una chiavetta USB di installazione.
Prendere nota del nome del file e del suo percorso, avviare il prompt dei comandi come amministratore ed eseguire il seguente comando
DISM /Get-WimInfo /WimFile:"X:\sources\install.wim"
sostituendo X:\sources\Install.wim con nome del file, comprensivo del percorso, individuato in precedenza.

Verranno visualizzate le informazioni relative alla versione di Windows contenuta nel file. Nel caso si tratti di un ISO multi-edition, verrà visualizzato un elenco delle edizioni disponibili (Education, Home, Enterprise, Pro, ecc.) come mostrato in FIG 1.
Immagine di Windows multi-edition
FIG 1 - Immagine di Windows multi-edition

Ogni edizione è contrassegnata da un indice utilizzabile per ottenere informazioni più dettagliate. Per visualizzare maggiori informazioni (come build e lingue disponibili) su un'edizione specifica presente in elenco, è possibile indicarla tramite l'indice e l'opzione /index aggiunta al comando DISM visto in precedenza. Ad esempio, per visualizzare le informazioni sull'edizione contrassegnata dall'indice 5, basterà eseguire il comando
DISM /Get-WimInfo /WimFile:"X:\Sources\Install.wim" /index:5
DISM multi-edition, index
FIG 2 - DISM multi-edition, index

L'operazione sopra descritta può essere automatizzata tramite un semplice script PowerShell
 #Indicare il file ISO contenente l'immagine di Windows (ad es. d:\win.iso)  
 $imagePath = (Read-Host -Prompt "Indicare il file ISO contenente l'immagine di Windows")  
 #Verifico se il file indicato esiste  
 If (Test-Path -Path $imagePath){  
      #Se il file esiste provo a montarlo  
      $mountResult = Mount-DiskImage $imagePath -PassThru  
      #Recupero la lettera di unità con cui viene identificata l'immagine montata  
      $driveLetter = "$(($mountResult | Get-Volume).DriveLetter):"  
      #Visualizzo le versioni di Windows contenute nel file install.wim  
      Get-WindowsImage -ImagePath "$driveLetter\sources\install.wim"  
      #Esegue l'unmount dell'immagine  
      Dismount-DiskImage $mountResult.ImagePath  
 }  
 else{  
      #Il file specificato non è stato trovato  
      write-host("Il file specificato non esiste!")  
 }  
Script PowerShell per la visualizzazione delle edizioni di Windows presenti nell'immagine
FIG 3 - Script PowerShell per la visualizzazione delle edizioni di Windows presenti nell'immagine

Con alcune modifiche possiamo generare un report che visualizza i dettagli di ciascuna edizione di Windows presente nell'immagine
 $Report = @()  
 #Indicare il file ISO contenente l'immagine di Windows (ad es. d:\win.iso)  
 $imagePath = (Read-Host -Prompt "Indicare il file ISO contenente l'immagine di Windows")  
 #Verifico se il file indicato esiste  
 If (Test-Path -Path $imagePath){  
      #Se il file esiste provo a montarlo  
      $mountResult = Mount-DiskImage $imagePath -PassThru  
      #Recupero la lettera di unità con cui viene identificata l'immagine montata  
      $driveLetter = "$(($mountResult | Get-Volume).DriveLetter):"  
      #Visualizzo le versioni di Windows contenute nel file install.wim  
      $WinImages = Get-WindowsImage -ImagePath "$driveLetter\sources\install.wim"  
      #Per ogni edizione di Windows contenuta nell'immagine  
      Foreach ($WinImage in $WinImages){  
           #Recupera informazioni da inserire nel report  
           $curImage=Get-WindowsImage -ImagePath "$driveLetter\sources\install.wim" -Index $WinImage.ImageIndex  
           $objImage = [PSCustomObject]@{  
                ImageIndex = $curImage.ImageIndex  
                ImageName = $curImage.ImageName  
                Version = $curImage.Version  
                Languages=$curImage.Languages  
                Architecture =$curImage.Architecture  
           }  
           $Report += $objImage  
      }  
      #Esegue l'unmount dell'immagine  
      Dismount-DiskImage $mountResult.ImagePath  
      #Visualizza il report  
      $Report | Out-GridView  
 }  
 else{  
      #Il file specificato non è stato trovato  
      write-host("Il file specificato non esiste!")  
 }  
Report edizioni di Windows contenute nell'immagine
FIG 4 - Report edizioni di Windows contenute nell'immagine







martedì 4 aprile 2023

Windows Quick Tip: Personalizzazione del tasto Stamp

Lo screenshot (o cattura dello schermo) è un'istantanea di quanto visualizzato sul monitor del computer, del tablet o di uno smartphone.
La scorciatoia più diffusa per scattare uno screenshot in ambiente Windows è quella che si avvale dell'utilizzo del tasto Stamp presente sulle tastiere e generalmente utilizzato per acquisire l'intero schermo. Sia in Windows 10 che in Window 11, il comportamento del tasto Stamp può essere personalizzato aggiungendo delle funzionalità extra:
Nella casella di ricerca di Windows digitare Stamp quindi selezionare Usa il tasto STAMP per avviare la cattura dello schermo.
Casella di ricerca di Windows
FIG 1 - Casella di ricerca di Windows
Attivare l'opzione Utilizza il pulsante STAMP per aprire la cattura schermo e riavviare il sistema.
Utilizza il pulsante STAMP per aprire la cattura schermo
FIG 2 - Utilizza il pulsante STAMP per aprire la cattura schermo

Dopo il riavvio, ogni volta che si premerà il tasto Stamp, verranno visualizzate nella parte alta dello schermo quattro opzioni: Cattura rettangolare, Cattura figura a mano libera, Cattura finestra, Cattura a schermo intero.
Cattura Schermo
FIG 3 - Cattura Schermo
Tali opzioni possono comunque essere richiamate con la combinazione di tasti WIN+SHIFT+S come mostrato nell'articolo Windows Quick Tip: Acquisizione di screenshot.



giovedì 12 gennaio 2023

MS Outlook: Modificare l'ambito di ricerca tramite registro di sistema

Per impostazione standard Outlook esegue una ricerca in tutte le cartelle della cassetta postale corrente quando la ricerca viene avviata dalla Posta in arrivo. Se la ricerca viene avviata da un'altra cartella, la ricerca include solo gli elementi di quella cartella. Gli utenti possono comunque modificare l'ambito della ricerca agendo manualmente sull'apposita casella o tramite le opzioni di ricerca (File -> Opzioni -> Cerca) presenti in Outlook.
Outlook, Opzioni Cerca
FIG 1 - Outlook, Opzioni Cerca

L'ambito di ricerca può essere impostato anche tramite registro di sistema:
  • Avviare l'editor del registro di sistema (WIN+R e digitare regedit seguito da invio);
  • Posizionarsi sulla chiave di registro
    HKEY_CURRENT_USER\Software\Microsoft\Office\xx.0\Outlook\Search
    dove al posto di xx va indicata la versione di office
  • Creare un nuovo valore DWORD 32bit e rinominarlo in DefaultSearchScope.
  • Cliccare, con il tasto destro del mouse, sul valore appena creato e selezionare Modifica.
  • Nella casella Dati valore specificare uno dei seguenti valori a seconda del comportamento desiderato
    0 - Impostazione predefinita. La ricerca in Outlook si comporta come sopra indicato.

    1 - Tutte le cassette postali. La ricerca viene eseguita su tutte le caselle di posta.

    2 - Cartella corrente. La ricerca viene eseguita all'interno della cartella corrente.

    3 - Cassetta postale corrente. La ricerca viene eseguita all'interno della casella di posta corrente.
  • Una volta impostato il valore desiderato, riavviare Outlook.
DefaultSearchScope
FIG 2 - DefaultSearchScope


Il valore può essere impostato anche tramite policy, in tal caso troveremo il valore DefaultSearchScope nel percorso
HKEY_CURRENT_USER\SOFTWARE\Policies\Microsoft\office\16.0\outlook\Search





martedì 6 dicembre 2022

PowerShell: Convertire gli ID delle lingue in nomi estesi

Per visualizzare gli ID delle lingue installate nel sistema è possibile procedere tramite PowerShell con comandi del tipo 
 $os = Get-CIMInstance -ClassName Win32_OperatingSystem  
 $os.MUILanguages   
Tali comandi restituiscono l'elenco degli ID relativi ai pacchetti di lingue installate nel sistema operativo come mostrato in FIG 1.
ID Lingue installate
FIG 1 - ID Lingue installate

L'output del comando restituisce un dato di tipo stringa pertanto, per convertire gli ID nei nomi estesi di lingua e paese, basterà eseguire il cast in un oggetto CultureInfo. Ad esempio:
 $os = Get-CIMInstance -ClassName Win32_OperatingSystem  
 [CultureInfo[]]$os.MUILanguages  
In questo modo avremo in output maggiori informazioni tra cui anche il nome esteso della lingua e del paese.
Cast da stringa a CultureInfo
FIG 2 - Cast da stringa a CultureInfo







mercoledì 23 novembre 2022

Windows: Disattivare la protezione in tempo reale dell'Antivirus Microsoft Defender

In alcuni casi può essere utile disattivare, temporaneamente, la protezione in tempo reale dell'Antivirus Microsoft Defender, ad esempio quando un file viene riconosciuto come falso positivo ma di cui siamo certi della sua provenienza.
Nell'articolo PowerShell: Disattivare la protezione in tempo reale dell'Antivirus Microsoft Defender è stato mostrato come eseguire tale operazione tramite PowerShell. Per eseguire la stessa operazione tramite GUI i passaggi da seguire sono i seguenti:
  • Accedere alle Impostazioni di Windows (tramite la combinazione di tasti WIN + I);
  • Cliccare su Aggiornamento e Sicurezza;
    Impostazioni
    FIG 1 - Impostazioni


  • Selezionare la sezione Sicurezza di Windows quindi cliccare su Apri sicurezza di Windows;
    Sicurezza di Windows
    FIG 2 - Sicurezza di Windows

  • Cliccare su Protezione da Virus e minacce;
    Sicurezza in breve
    FIG 3 - Sicurezza in breve

  • Cliccare sul link Gestisci impostazioni;
    Protezione da virus e minacce, Gestisci impostazioni
    FIG 4 - Protezione da virus e minacce, Gestisci impostazioni

  • Disattivare l'opzione Protezione in tempo reale tramite l'apposito slider.

    Impostazioni di Protezione da virus e minacce
    FIG 5 - Impostazioni di Protezione da virus e minacce





giovedì 10 novembre 2022

Windows: Winget package manager

Winget è il package manager che Microsoft ha integrato nei suoi sistemi operativi (Windows 10 e Windows 11). La sua interfaccia a riga di comando, che può scoraggiare gli utenti meno esperti, consente di utilizzarlo per la creazione di script di installazione, per importare/esportare la lista dei software installati nel sistema e aggiornare tutti i programmi presenti con un solo comando.
Winget utilizza un’architettura flessibile che offre il supporto anche a sorgenti multiple in maniera analoga a quanto accade nei package manager in ambiente Linux. I repository possono essere integrati in un unico archivio locale e ciò rappresenta una funzionalità molto utile in ambito enterprise per garantire il controllo sulla distribuzione e aggiornamento dei software.
Per visualizzare un elenco dei comandi e opzioni disponibili del package manager, basta eseguire, da una finestra PowerShell, il comando
Winget
Winget
FIG 1 - Winget
Per visualizzare la versione di winget installata
Winget -v
Versione di Winget
FIG 2 - Versione di Winget
Per ricercare un applicazione nel repository il comando sarà simile a
winget search <appname>
ad esempio per ricercare le applicazioni acrobat il comando sarà
Winget search acrobat
quando si usa il comando per la prima volta bisogna accettare le condizioni dei contratti (FIG 3) per poter procedere.
Termini di utilizzo msstore
FIG 3 - Termini di utilizzo msstore
Il motore di ricerca integrato in Winget analizza tutti i metadati di ciascun elemento (non solo il nome dell'app ma anche l'ID ed altre informazioni aggiuntive). Se da un lato questo garantisce di visualizzare un'elenco il più esaustivo possibile dall'altro potrebbe mettere in difficoltà l'utente meno esperto che non sa quale software scegliere tra quelli proposti. Ad esempio possono essere proposti più versioni del software oppure possono esserci software presenti sia all'interno del repository principale di Winget che nel Microsoft Store
Ricerca applicazioni nei repository
FIG 4 - Ricerca applicazioni nei repository

Per limitare la ricerca ad un solo repository si può utilizzare l'opzione -s e specificando il repository desiderato (winget o msstore)
winget search acrobat -s winget
Winget, limitare la ricerca ad un solo repository
FIG 5 - Winget, limitare la ricerca ad un solo repository

Per ottenere maggiori informazioni su il pacchetto si può utilizzare il comando show seguito dal nome del pacchetto o il suo ID (generalmente si utilizza quest'ultimo in quanto consente di specificare con precisione il pacchetto di proprio interesse)
winget show  Adobe.Acrobat.Reader.64-bit
Winget, visualizzare maggiori informazioni su un pacchetto
FIG 6 - Winget, visualizzare maggiori informazioni su un pacchetto
Per l'installazione del software si utilizza il comando install ad es.
winget install --id Adobe.Acrobat.Reader.64-bit
winget install 7zip -s winget
Winget install
FIG 7 - Winget install
Winget scarica e installa per default la versione più recente del software indicato. L'elenco delle versioni disponibili può essere visualizzato aggiungendo il parametro --versions alla fine del comando
winget show 7zip -s winget --versions
Winget, visualizzare le versioni disponibili di un software
FIG 8 - Winget, visualizzare le versioni disponibili di un software
Il parametro -v utilizzato insieme al comando install, consente di specificare la versione del software da installare.
winget install 7zip -s winget -v 21.06
Il comando install supporta l'argomento -i (oppure -interactive)che richiama la modalità di installazione interattiva e l'argomento -h (oppure -silent) che procede con l'installazione senza visualizzare alcuna interfaccia all'utente
Tramite l'argomento --location è possibile indicare il percorso in cui installare il software tuttavia tale funzione dipende dalle opzioni offerte da ogni specifico installer (winget install <app> --location C:\CartellaPersonale).

Con il comando
Winget list
verrà restituito l’elenco completo dei programmi installati in formato testuale. Nell'elenco sono inclusi anche i software che non sono presenti nei repository di Winget e, nel caso in cui il package manager rilevi la presenza di pacchetti più aggiornati rispetto a quelli installati in locale, segnala le nuove versioni in una colonna separata all'interno dell'elenco.
Winget, elenco programmi installati
FIG 9 - Winget, elenco programmi installati
L'elenco dei soli pacchetti aggiornabili può essere ottenuto con il comando
Winget upgrade
Winget upgrade
FIG 10 - Winget upgrade
L'opzione --all, utilizzata con il comando upgrade, consente di aggiornare in un unica operazione tutti i software installati (ad eccezione dei software che non sono presenti nei repository di Winget)
Winget upgrade --all

La procedura di disinstallazione è altrettando semplice e viene utilizzato il comando uninstall. Con il seguente comando
winget uninstall 7zip 
si avvia la procedura di disinstallazione del software specificato.
L'argomento -v consente di specificare la versione del software da disinstallare (utile nel caso in cui siano installate più versioni di uno stesso software)
Come per l'installazione, anche in questo caso è supportato l'argomento -i che richiama la disinstallazione interattiva e l'argomento -h che, invece, avvia la disinstallazione in modalità silente.


Winget può essere difficile da approcciare ma esistono diversi strumenti che vengono in aiuto dell'utente:
  • Archivio dei pacchetti online 
    L'archivio dei pacchetti online è accessibile all’indirizzo https://winget.run. Il sito consente di effettuare ricerche nell’archivio dei software e ottenere righe di comando di installazione da copiare e incollare nel terminale.
    winget.run
    FIG 11 - winget.run

  • Interfaccia grafica WingetUI 
    Si tratta di un vero e proprio front-end nativo di Winget disponibile su Github all’indirizzo https://github.com/martinet101/WingetUI. L'interfaccia è molto intuitiva e divisa in sezioni: Discover Software elenca i pacchetti disponibili, che possono essere filtrati tramite la casella di ricerca in alto a sinistra. Software updates mostra i pacchetti aggiornabili, mentre Installed application propone una lista che comprende tutti i software installati nel sistema.
    WingetUI
    FIG 12 - WingetUI

Configurazione Winget

La configurazione predefinita del Windows Package Manager Winget può essere modificata agendo sul file settings.json (il file si trova in %LOCALAPPDATA%\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe\LocalState\).
Per visualizzare e modificare il file JSON basta lanciare il comando
Winget settings
Se sul pc non è presente alcun software per la gestione dei file con estensione JSON, è possibile utilizzare un qualunque editor di testo (come ad esempio Blocco Note).
Per un elenco aggiornato delle impostazioni si può consultare la pagina https://aka.ms/winget-settings.

Source

All'interno del blocco Source è possibile specificare, attraverso autoUpdateIntervalInMinutes, ogni quanto tempo controllare gli aggiornamenti di una sorgente. Ad autoUpdateIntervalInMinutes, va assegnato un numero intero positivo che rappresenta l'intervallo di aggiornamento in minuti (di default 5). Assegnando zero il controllo degli aggiornamenti di una sorgente viene disabilitato. 
   "source": {  
     "autoUpdateIntervalInMinutes": 3  
   },  
La sorgente può essere aggiornata manualmente con il comando
winget source update

Visual

Le impostazioni del blocco Visual riguardano la modalità di visualizzazione degli elementi di Winget.
   "visual": {  
     "progressBar": "accent"  
   },  
Tramite progressBar è possibile specificare il colore della barra di avanzamento visualizzata da Winget. I valori accettati sono:
  • accent (default)
  • retro
  • rainbow

InstallBehavior

La sezione installBehavior è forse quella più interessante in quanto permette la modifica del comportamento predefinito dell'installazione e dell'aggiornamento dei pacchetti.

- disableInstallNotes
Con disableInstallNotes è possibile abilitare/disabilitare la visualizzazione delle note di installazione dopo un'installazione riuscita. L'impostazione predefinita è false.
   "installBehavior": {  
     "disableInstallNotes": true  
   },  

- defaultInstallRoot
Con defaultInstallRoot è possibile specificare il percorso di installazione di pacchetto (se il pacchetto ne richiede uno durante l'installazione). Può essere sovrascritto dal parametro --location. Questa impostazione viene utilizzata solo quando il manifest di un pacchetto include InstallLocationRequired e il percorso effettivo si ottiene aggiungendo l'ID del pacchetto alla radice.
   "installBehavior": {  
     "defaultInstallRoot": "C:\installRoot"  
   },       

- portablePackageUserRoot
L'impostazione portablePackageUserRoot influisce sulla directory principale predefinita in cui vengono installati i pacchetti in ambito Utente. Questa impostazione si applica solo ai pacchetti di tipo portable installer. L'impostazione predefinita è %LOCALAPPDATA%/Microsoft/WinGet/Packages/. Il valore del path va specificato come percorso assoluto.
   "installBehavior": {  
     "portablePackageUserRoot": "C:/Users/FooBar/Packages"  
   },  

- Preferences e Requirements
Alcune impostazioni sono duplicate per Preferences e Requirements. Tramite Preferences viene influenzato l'ordinamento delle varie opzioni disponibili quando si sceglie quella su cui agire. Ad esempio, l'ambito predefinito per l'installazione dei pacchetti è quello dell'utente corrente, ma se non si tratta di un'opzione disponibile, verrà scelto un installatore a livello di macchina. I Requirements filtrano le opzioni. Si tratta di requisiti quindi se non rispettati l'installazione non verrà portata a termine. Nell'esempio precedente, un Requirements relativo all'ambito dell'utente non avrebbe prodotto alcun installatore applicabile ma un errore.

Scope permette di specificare se il pacchetto deve essere installato per l'utente corrente o per l'intera macchina. Il parametro corrispondente è --scope e utilizza gli stessi valori (user o machine).
   "installBehavior": {  
     "preferences": {  
       "scope": "user"  
     }  
   },  
Con Locale è possibile specificare le impostazioni locali da usare. Il parametro corrispondente è --locale e utilizza il tag di lingua bcp47
   "installBehavior": {  
     "preferences": {  
       "locale": [ "en-US", "fr-FR" ]  
     }  
   },  
Architectures seleziona l'architettura da installare. ll parametro corrispondente è --architecture. Da notare che è possibile selezionare solo le architetture compatibili con il sistema in uso.
   "installBehavior": {  
     "preferences": {  
       "architectures": ["x64", "arm64"]  
     }  
   },  

UninstallBehavior

Le impostazioni di uninstallBehavior influenzano il comportamento predefinito della disinstallazione (se applicabile) dei pacchetti.

- PurgePortablePackage 
PurgePortablePackage influenza il comportamento predefinito per la disinstallazione di un pacchetto portable. Se impostato su true, la disinstallazione rimuoverà tutti i file e le directory rilevanti per il pacchetto. Questa impostazione si applica solo ai pacchetti con il tipo di installatore portable. Se il valore non è impostato o non è valido, l'impostazione predefinita è false.
   "uninstallBehavior": {  
     "purgePortablePackage": true  
   },  

Telemetry

Le impostazioni di telemetria controllano se Winget scrive eventi ETW che possono essere inviati a Microsoft su un'installazione predefinita di Windows.
   "telemetry": {  
     "disable": true  
   },  
Se impostata su true, l'impostazione telemetry.disable impedisce la scrittura di qualsiasi evento da parte del programma.

Logging

Le impostazioni di log controllano il livello di dettaglio dei file di log. Il parametro --verbose-logs annulla questa impostazione e crea sempre un log verboso. Il valore predefinito è info se il valore non è impostato o non è valido.
   "logging": {  
     "level": ["verbose", "info", "warning", "error", "critical"]  
   },  

Network

Le impostazioni network influenzano il modo in cui Winget utilizza la rete per recuperare pacchetti e metadati.
L'impostazione downloader controlla il codice utilizzato  durante il download dei pacchetti. I valori accettati sono:
  • default, che può essere una qualsiasi delle opzioni in base alla nostra determinazione;
  • wininet usa le API WinINet;
  • do usa il servizio Delivery Optimization.
L'impostazione doProgressTimeoutInSeconds aggiorna il numero di secondi da attendere in assenza di avanzamento prima del fallback. Il numero predefinito di secondi è 60, il minimo è 1 e il massimo è 600.
   "network": {  
     "downloader": "do",  
     "doProgressTimeoutInSeconds": 60  
   }  

Interactivity

Le impostazioni Interactivity controllano se Winget può mostrare messaggi interattivi durante l'esecuzione. Si noti che questo si riferisce solo ai prompt mostrati da Winget stesso e non a quelli mostrati dai programmi di installazione dei pacchetti.
  "interactivity": {  
     "disable": true  
   },  
Se impostata a true, l'impostazione interactivity.disable impedisce la visualizzazione di qualsiasi richiesta interattiva.

ExperimentalFeatures

Le impostazioni di experimentalFeatures riguardano la configurazione di queste funzioni "sperimentali". In questo nodo è possibile abilitare singole funzioni. L'esempio seguente mostra un esempio di funzionalità sperimentali.
   "experimentalFeatures": {  
     "experimentalCmd": true,  
     "experimentalArg": false  
   },  
- zipInstall
Questa funzione consente a Windows Package Manager di installare da un file zip. È possibile attivare la funzione come mostrato di seguito.
   "experimentalFeatures": {  
     "zipInstall": true  
   },  
- directMSI
Questa funzione consente al gestore di pacchetti di Windows di installare direttamente i pacchetti MSI con le API MSI anziché tramite msiexec. Si noti che quando si utilizza l'installazione silenziosa questa funzione è già attiva. È possibile attivare la funzione come mostrato di seguito.   
   "experimentalFeatures": {  
     "directMSI": true  
   },  
- openLogsArgument
Questa funzione consente a Windows Package Manager di aprire la cartella dei log predefinita dopo l'esecuzione, passando l'argomento --open-logs con qualsiasi comando. È possibile attivare la funzione come mostrato di seguito.
   "experimentalFeatures": {  
     "openLogsArgument": true  
   },  

- dependencies
La funzione sperimentale Dependencies mostra, per ora,  solo le informazioni sulle dipendenze dei pacchetti. È possibile attivare la funzione come mostrato di seguito.
  "experimentalFeatures": {  
     "dependencies": true  
   },  
     




martedì 25 ottobre 2022

PowerShell: Esportare l'elenco dei software installati

Per esportare l'elenco dei software installati in un file csv è possibile utilizzare il seguente script PowerShell
 $paths = 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*','HKLM:\Software\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*'  
 Get-ItemProperty $paths | Select-Object DisplayName, Publisher, DisplayVersion, InstallDate, UninstallString | Sort-Object DisplayName | Export-Csv C:\temp\ElencoSoftware.csv  

Ovviamente al posto di C:\temp\ElencoSoftware.csv va specificato il percorso e il nome del file csv in cui si intende esportare l'elenco.
L'elenco mostra il Display Name del software, l'autore, la versione, la data di installazione e l'eventuale stringa da utilizzare per la disinstallazione.

Elenco Software installati
FIG 1 - Elenco Software installati



sabato 22 ottobre 2022

Windows: Modificare\eliminare la cronologia della finestra di dialogo Esegui

La finestra di dialogo Esegui, raggiungibile tramite la combinazione di tasti WIN+R, memorizza i comandi che vengono eseguiti. Per eliminare uno o più comandi memorizzati bisogna agire tramite il registro di sistema:
  • Avviare l'Editor del registro di sistema (WIN+R e digitare regedit seguito da invio); 
  • Posizionarsi sulla seguente chiave di registro
    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
  • Sul lato sinistro della finestra vengono riportati i comandi memorizzati contrassegnati da una lettera. Prendere nota della lettera che corrisponde all'elemento che si desidera eliminare dall'elenco, quindi selezionare ed eliminare l'elemento premendo il tasto Canc sulla tastiera oppure cliccare sull'elemento con il tasto destro del mouse e selezionare Elimina.
    Cronologia Esegui
    FIG 1 - Cronologia Esegui

  • Una finestra di dialogo chiederà di confermare l'eliminazione dell'elemento. Cliccare su Si.
    Conferma eliminazione valori
    FIG 2 - Conferma eliminazione valori

  • Una volta eliminati tutti gli elementi desiderati, eseguire un doppio click del mouse sul valore MRUList.
  • Nella casella Dati valore eliminare le lettere annotate precedentemente e corrispondenti agli elementi eliminati, quindi cliccare su OK per confermare la modifica
    MRUList
    FIG 3 - MRUList





venerdì 21 ottobre 2022

Windows: Disinstallare l'app Collegamento al telefono

Già da diversi anni Microsoft ha integrato in Windows 10, e successivamente in Windows 11, l'applicazione Collegamento al telefono: uno strumento che consente di sincronizzare alcune funzioni del proprio smartphone (come messaggi, notifiche, chiamate e file) con il sistema operativo Windows. 
Collegamento al telefono
FIG 1 - Collegamento al telefono

L'applicazione è compatibile solo con i dispositivi Android. Chi dispone di dispositivi iPhone oppure non è interessato alla funzioni dell'applicazione, può eliminare l'app dal sistema e risparmiare spazio. L'applicazione non può essere disinstallata da GUI come avviene per la maggior parte delle app (andando in Impostazioni->App, selezionando l'App da rimuovere e cliccare su Disinstalla) ma va rimossa tramite un comando PowerShell:
  • Avviare PowerShell come amministratore;
  • Eseguire il seguente comando
    Get-AppxPackage Microsoft.YourPhone -AllUsers | Remove-AppxPackage
PowerShell, Disinstallazione app Collegamento al telefono
FIG 2 - PowerShell, Disinstallazione app Collegamento al telefono


Una volta lanciato il comando, l'applicazione verrà disinstallata in pochi istanti. In caso di ripensamento, per ripristinare l'applicazione basterà raggiungere il Microsoft Store e scaricare nuovamente il pacchetto Collegamento al telefono.




mercoledì 12 ottobre 2022

Windows 10: Attivare l’account di amministratore nascosto

L'account di amministratore predefinito del sistema è un account nascosto creato automaticamente dal sistema operativo. Tale account gode di privilegi persino superiori rispetto ad un normale account di amministrazione pertanto viene tenuto normalmente disabilitato. Per poter sfruttare tale account in caso di necessità, bisogna prima attivarlo:
  • Aprire una finestra del Prompt dei comandi o di PowerShell come amministratore
  • Digitare il seguente comando seguito da invio
    net user administrator /active:yes
    Attivare l'account Administrator
    FIG 1 - Attivare l'account Administrator

  • Per utilizzare l'account amministratore appena attivato, disconnettersi dal sistema per ritornare alla finestra di autenticazione
  • Nell’angolo inferiore sinistro sarà disponibile un nuovo utente (Administrator). Selezionarlo e cliccare su Accedi (l'account non è protetto da password).
    Windows 10, Utente Administrator
    FIG 2 - Windows 10, Utente Administrator


Per disattivare nuovamente l'account basterà eseguire, da una finestra terminale avviata come amministratore, il comando 
net user administrator /active:no




giovedì 22 settembre 2022

PowerShell: Forzare un utente in AD a cambiare password al logon successivo

Per fare in modo che un utente in Active Directory, al successivo logon, modifichi la password si può utilizzare il cmdlet Set-ADUser.

Il comando è molto semplice, basta indicare l'account su cui intervenire e passare al parametro ChangePasswordAtLogon il valore $true (oppure 1). Il comando sarà simile a:
Set-ADUser -Identity Giovanni.Lubrano -ChangePasswordAtLogon $true
Set-ADUser, ChangePasswordAtLogon
FIG 1 - Set-ADUser, ChangePasswordAtLogon

Andando a verificare in Utenti e computer di Active Directory, dopo aver eseguito il comando, vedremo che per l'account specificato è stata attivata la voce Cambiamento obbligatorio password.
Proprietà account in AD
FIG 2 - Proprietà account in AD


Volendo possiamo creare un semplice script che ci richiede l'account su cui forzare il cambio password al logon successivo.
 $User = (Read-Host -Prompt "Username")  
 Set-ADUser -Identity $User -ChangePasswordAtLogon $true