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

domenica 5 marzo 2023

Windows Server 2022: Attivazione prodotto

Una delle prime cose da fare dopo l'installazione del sistema operativo Windows Server è attivarlo con un codice prodotto valido. È possibile farlo attraverso l'interfaccia desktop, tramite PowerShell o tramite SConfig nel caso di versioni Core. 

Attivazione tramite GUI

Nelle versioni Windows Server 2022 con desktop experience, l'attivazione può essere eseguita tramite interfaccia grafica con pochi click.

Da Server Manager, cliccare sul link Server locale presente nel riquadro di navigazione. Cliccare sul link Non attivato accanto a ID prodotto.
ID prodotto, non attivato
FIG 1 - ID prodotto, non attivato
Si aprirà automaticamente una finestra di dialogo che richiede l'immissione di un Product Key. Immettere il codice prodotto e fare clic su Successivo.
Immetti un codice Product Key
FIG 2 - Immetti un codice Product Key
Cliccare su Attiva per attivare il prodotto con il Product Key specificato.
Attiva Windows
FIG 3 - Attiva Windows

Attivazione tramite PowerShell

L'attivazione tramite PowerShell può essere eseguita sia su versioni di Windows Server 2022 dotati di desktop experience sia su versioni Core. L'attivazione avviene mediante l'utilizzo dello script Windows Server License Manager (slmgr.vbs).

Avviare una finestra PowerShell. Nelle versioni Core digitare 15 seguito da invio per selezionare l'opzione Esci dalla riga di comando (PowerShell).

Lo script slmgr.vbs può essere utilizzato con diversi parametri. I parametri utilizzati in quest'articolo sono -ipk e -ato. Il parametro -ipk viene utilizzato per l'installazione dei codici prodotto, mentre il parametro -ato viene utilizzato per specificare l'attivazione online. Per installare il product key necessario per la propria versione di Windows Server 2022, utilizzate il seguente comando con il parametro -ipk. Sostituire <productkey> con il codice di licenza di 25 caratteri, compresi i trattini.
slmgr.vbs -ipk <productkey>
Una finestra di dialogo indicherà se il codice prodotto è stato installato correttamente. Fare clic su OK.
Installazione Product Key
FIG 4 - Installazione Product Key

Dopo l'installazione della chiave di licenza, si utilizza lo stesso script con il parametro -ato per eseguire l'attivazione online della copia di Windows. Il comando seguente consente di effettuare l'attivazione online della copia di Windows:
slmgr.vbs -ato
Se l'attivazione è andata a buon fine, viene visualizzata una finestra di dialogo che indica la corretta attivazione del prodotto.


Attivazione tramite SConfig

L'attivazione tramite SConfig può essere eseguita sulle versioni Core di Windows Server 2022.

Da SConfig digitare 11 e premere invio per selezionare l'opzione Attivazione di Windows.
Sconfig, Attivazione di Windows
FIG 5 - Sconfig, Attivazione di Windows
Nel menu successivo, digitare 3 seguito da invio per Installa il codice Product Key
Installa il codice Product Key
FIG 6 - Installa il codice Product Key

Immettere il Product Key di 25 caratteri (inclusi i trattini) e premere invio.
Immetti il codice Product Key
FIG 7 - Immetti il codice Product Key
Un messaggio avvisa della corretta installazione del codice prodotto. Premere invio per ritornare alla schermata principale (FIG 5).
Codice Product Key Installato
FIG 8 - Codice Product Key Installato

Selezionare nuovamente 11 quindi 2 Attiva Windows. Dopo qualche secondo un messaggio avvisa della corretta attivazione di Windows Server 2022.





lunedì 23 settembre 2019

PowerShell: Creare una GUI per uno script PowerShell

Gli script PowerShell vengono generalmente creati ed eseguiti all'interno di un'interfaccia a riga di comando e anche i risultati vengono visualizzati all'interno della finestra CLI (Command Line Interface). Ciò ne scoraggia l'utilizzo da parte degli utenti comuni. Tuttavia, PowerShell è un potente strumento di automazione e consente l'utilizzo di una varietà di oggetti .NET Framework. Per creare una semplice interfaccia grafica per gli script PowerShell basta utilizzare l'API .NET.

In quest'articolo verrà mostrato come creare un semplice Form. Prima di iniziare assicurarsi che la versione di PowerShell installata sul proprio sistema sia 3.0 o superiore. Per farlo basta eseguire $PSVersionTable.PSVersion da una finestra PowerShell per visualizzare un'output come quello mostrato in FIG 1. Se la variabile non esiste allora probabilmente si tratta della versione 1.0

Versioni di PowerShell:
  • Versione 1.0: distribuita nel 2006 come download opzionale. Obsoleta
  • Versione 2.0: distribuita nel 2009 come parte di Windows 7/Windows Server 2008. L'unica versione che supporta Windows XP e Windows Server 2003.
  • Versione 3.0: distribuita nel 2012 come parte di Windows 8/Windows Server 2012. Sono state completate le caratteristiche principali del linguaggio ed è stato riprogettato l'editor ISE.
  • Versione 4.0: distribuita nel 2013 come parte di Windows 8.1/Windows Server 2012R2. Aggiunto DSC (Desired State Configuration).
  • Versione 5.0: distribuita nel 2016 come parte di Windows 10. In tale versione sono state introdotte numerose funzionalità ed estensioni.
  • Versione 5.1: distribuita nel 2017 come parte di Windows 10 Anniversary Update\Windows Server 2016.

PowerShell, visualizzare la versione installata nel sistema
FIG 1 - PowerShell, visualizzare la versione installata nel sistema
Il blocco di codice per creare un semplice Form è il seguente:

Add-Type -assembly System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$form.Text ='La mia finestra in PowerShell'
$form.Width = 400
$form.Height = 200
$form.AutoSize = $true
$form.ShowDialog()

Per la creazione del Form viene utilizzata la classe System.Windows.Forms di .NET. Per caricare tale classe all'interno dello script PowerShell si utilizza tale codice:
Add-Type -assembly System.Windows.Forms

Nell'istruzione successiva 
$form = New-Object System.Windows.Forms.Form
viene avviata una nuova istanza della classe System.Windows.Forms.Form di .NET Framework che genera una finestra vuota (Form o modulo) in cui è possibile iniziare ad aggiungere controlli.

Successivamente viene impostato un titolo per la finestra attraverso la proprietà Text, quindi vengono impostate le dimensioni (larghezza e altezza) tramite le proprietà Width e Height
$form.Text ='La mia finestra in PowerShell'
$form.Width = 400
$form.Height = 200

Per fare in modo che il Form si ridimensioni automaticamente in base al suo contenuto viene utilizzata la proprietà AutoSize.
$form.AutoSize = $true

L'ultima istruzione 
$form.ShowDialog()
non fa altro che richiamare il metodo ShowDialog per visualizzare a video il Form.

Per creare lo script basta copiare il blocco di codice sopra indicato all'interno di un editor di testo (come ad es. Blocco Note) e salvare il file con estensione .ps1 (ad es. Form1.ps1). Per eseguirlo da PowerShell digitare il nome del file .ps1 comprensivo del percorso (ad es. c:\Users\glubrano\desktop\Form1.ps1). Il risultato sarà quello mostrato in FIG 2.

Dal seguente link è possibile scaricare il file contenente il blocco di codice.
DOWNLOAD Form1.ps1
Form in PowerShell
FIG 2 - Form in PowerShell



Il Form così creato serve a ben poco. Possiamo aggiungere altri elementi come un etichette (label), una casella combinata (combobox) e un pulsante (button). Quello che andremo a costruire nelle prossime righe è uno script PowerShell che permette di selezionare, all'interno della combobox, una specifica cartella e, cliccando sul pulsante, visualizzarne la data dell'ultima modifica.

Iniziamo ad inserire un etichetta. Per farlo basta aggiungere il seguente blocco di codice prima dell'ultima istruzione $form.ShowDialog().

$Label1 = New-Object System.Windows.Forms.Label
$Label1.Text = "Directory:"
$Label1.Location  = New-Object System.Drawing.Point(5,10)
$Label1.AutoSize = $true
$form.Controls.Add($Label1)

Con la prima istruzione viene creata una nuova istanza della classe System.Windows.Forms.Label che genera l'etichetta. Successivamente viene specificato il testo che l'etichetta andrà a visualizzare quindi, tramite System.Drawing.Point(5,10) andiamo a specificare la posizione, all'interno del Form, in cui verrà visualizzata l'etichetta. Anche in questo caso viene impostata la proprietà AutoSize in modo che le dimensioni dell'elemento si adeguano in base al contenuto. 
L'ultima istruzione 
$form.Controls.Add($Label1)
aggiunge l'etichetta al form precedentemente creato.


Il passo successivo consiste nell'inserire una casella combinata accanto all'etichetta. Aggiungiamo il seguente blocco di codice al nostro file .PS1 (assicurandoci che l'ultima istruzione sia sempre $form.ShowDialog()) .

$ComboBox1 = New-Object System.Windows.Forms.ComboBox
$ComboBox1.Width = 150
$Folders = get-childitem -dir | Select Name
Foreach ($Folder in $Folders){
 $ComboBox1.Items.Add($Folder.Name);
}
$ComboBox1.Location  = New-Object System.Drawing.Point(60,10)
$form.Controls.Add($ComboBox1)

In questo blocco gran parte delle istruzioni sono analoghe a quanto visto per i blocchi precedenti. Con l'istruzione
$Folders = get-childitem -dir | Select Name
andiamo ad assegnare alla variabile $Folders l'elenco delle directory presenti nel path da cui stiamo richiamando lo script. Il ciclo ForEach non fa altro che estrarre il nome delle directory e inserirle all'interno della combobox.


Il blocco successivo provvede ad inserire all'interno del Form due etichette: Label2 e Label3. Quest'ultima mostrerà la data dell'ultima modifica della cartella selezionata quando si clicca sul pulsante presente alla destra della combobox.

$Label2 = New-Object System.Windows.Forms.Label
$Label2.Text = "Data modifica:"
$Label2.Location  = New-Object System.Drawing.Point(5,40)
$Label2.AutoSize = $true
$form.Controls.Add($Label2)

$Label3 = New-Object System.Windows.Forms.Label
$Label3.Text = ""
$Label3.Location  = New-Object System.Drawing.Point(90,40)
$Label3.AutoSize = $true
$form.Controls.Add($Label3)

Blocco codice relativo al pulsante. 

$Button1 = New-Object System.Windows.Forms.Button
$Button1.Location = New-Object System.Drawing.Point(220,10)
$Button1.Size = New-Object System.Drawing.Size(150,20)
$Button1.Text = "Visualizza data modifica"
$form.Controls.Add($Button1)

Anche questi 2 blocchi vanno inseriti prima dell'istruzione $form.ShowDialog(). Nel blocco relativo al pulsante troviamo l'istruzione 
$Button1.Size = New-Object System.Drawing.Size(120,20)
che consente di specificare la dimensione dell'elemento.

Adesso non resta che inserire un'ultimo blocco in cui andiamo ad aggiungere un evento relativo al click sul pulsante. 

$Button1.Add_Click(
 {
  $Label3.Text =  (get-item  $ComboBox1.selectedItem).LastWriteTime 
 }
)

L'istruzione
$Label3.Text =  (get-item  $ComboBox1.selectedItem).LastWriteTime 
rileva la data di modifica della directory selezionata all'interno della combobox e la visualizza attraverso la Label3.

L'intero script può essere scaricato dal seguente link
DOWNLOAD Form2.ps1

Eseguendo lo script, l'output sarà simile a quello mostrato in FIG 3.
PowerShell, Visualizzare la data di modifica di una data cartella attraverso il Form
FIG 3 - PowerShell, Visualizzare la data di modifica di una data cartella attraverso il Form


In modo analogo possono essere inseriti ulteriori elementi all'interno del Form come:
- CheckBox
- ChekedListBox
- ContextMenu
- DateTimePicker
- GroupBox
- HScrollBar
- ListBox
- ListView
- Menu
- PictureBox
- ProgressBar
- RadioButton
- TabControl
- TextBox
- TrackBar
- TreeView
- VScrollBar


Per creare in maniera semplice Form accattivanti per script in PowerShell, è possibile usare l'editor online https://poshgui.com/Editor. Tale editor, attraverso una semplice interfaccia grafica, consente di progettare/realizzare una GUI per i propri script PowerShell anche a chi è poco pratico e scaricare il codice sorgente.
POSHGUI, Editor online GUI PowerShell
FIG 4 - POSHGUI, Editor online GUI PowerShell