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

lunedì 18 dicembre 2023

Windows 11: Installazione degli Strumenti di amministrazione remota del server tramite PowerShell

Nell'articolo precedente abbiamo visto come installare gli strumenti di amministrazione remota del server (RSAT) in Windows 11 (Pro o Enterprise) tramite le Funzionalità aggiuntive.
In questo articolo vedremo come eseguire l'operazione tramite PowerShell.
 
Il seguente comando PowerShell elenca i componenti RSAT che è possibile installare sul computer. Il campo State indica se il modulo è già stato installato (Installed) oppure non presente (NotPresent)
 Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property DisplayName, State  
Elenco strumenti di amministrazione remota del server (RSAT)
FIG 1 - Elenco strumenti di amministrazione remota del server (RSAT)

Per installare uno specifico strumento di amministrazione remota del server è possibile utilizzare il cmdlet Add-WindowsCapability, prima però, è necessario conoscere il nome del modulo da installare. Per individuare il nome del modulo da installare è possibile utilizzare il seguente comando PowerShell (il nome è evidenziato nel campo Name).
 Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property Name, DisplayName, State |fl  
 
Elenco nomi funzionalità
FIG 2 - Elenco nomi funzionalità

Per installare uno strumento di amministrazione remota del server basterà eseguire il comando
Add-WindowsCapability –online –Name <nome_modulo>
Ad esempio, per installare strumenti per Server DHCP il comando sarà
 Add-WindowsCapability –online –Name Rsat.DHCP.Tools~~~~0.0.1.0  
Add-WindowsCapability
FIG 3 - Add-WindowsCapability

Alcuni componenti RSAT possono richiedere un riavvio dopo l'installazione.
 
I componenti RSAT non fanno parte dell'immagine di Windows e sono disponibili come funzionalità su richiesta. Ciò significa che il computer deve essere collegato a Internet per poter installare gli strumenti di amministrazione remota del server. Windows scarica e installa i file binari RSAT dai server di Microsoft Update.
 
Per installare solo gli Strumenti di amministrazione remota del server non ancora installati, è possibile eseguire il seguente comando
 Get-WindowsCapability -Name RSAT* -Online | where State -EQ NotPresent | Add-WindowsCapability –Online  

 
In tabella l'elenco degli Strumenti di amministrazione remota del server disponibili in 
Windows 11 22H2.
 
Name DisplayName
Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di Active Directory Domain Services e Lightweight Directory Services
Rsat.AzureStack.HCI.Management.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: modulo PowerShell per Azure Stack HCI
Rsat.BitLocker.Recovery.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: utilità di amministrazione di Crittografia unità BitLocker
Rsat.CertificateServices.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di Servizi certificati Active Directory
Rsat.DHCP.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti per Server DHCP
Rsat.Dns.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti per Server DNS
Rsat.FailoverCluster.Management.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti per Clustering di failover
Rsat.FileServices.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti per Servizi file
Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di gestione di criteri di gruppo
Rsat.IPAM.Client.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: client di Gestione indirizzi IP
Rsat.LLDP.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti LLDP Data Center Bridging
Rsat.NetworkController.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di gestione del Controller di rete
Rsat.NetworkLoadBalancing.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti per Bilanciamento carico di rete
Rsat.RemoteAccess.Management.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di Gestione Accesso remoto
Rsat.RemoteDesktop.Services.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti Servizi Desktop remoto
Rsat.ServerManager.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: Server Manager
Rsat.StorageMigrationService.Management.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di gestione del servizio di migrazione dello spazio di archiviazione
Rsat.StorageReplica.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: modulo di Replica archiviazione per Windows PowerShell
Rsat.SystemInsights.Management.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: modulo System Insights per Windows PowerShell
Rsat.VolumeActivation.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di attivazione di contratti multilicenza
Rsat.WSUS.Tools~~~~0.0.1.0
Strumenti di amministrazione remota del server: strumenti di Windows Server Update Services



Per disinstallare gli strumenti di amministrazione remota del server, si utilizza il cmdlet Remove-WindowsCapability. Ad esempio, per rimuovere  gli strumenti di Active Directory Domain Services e Lightweight Directory Services il comando da eseguire sarà
 Remove-WindowsCapability -Online -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0  
Per disinstallare tutti gli strumenti di amministrazione remota del server installati basterà eseguire il comando
 Get-WindowsCapability -Name RSAT* -Online | where State -EQ Installed | Remove-WindowsCapability –Online  


Installazione tramite Deployment Image Servicing and Management 

Gli strumenti di amministrazione remota del server possono anche essere installati tramite Deployment Image Servicing and Management (DISM.exe). Ad esempio
 DISM.exe /Online /add-capability /CapabilityName:Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 /CapabilityName:Rsat.DHCP.Tools~~~~0.0.1.0  
 
 

Errore 0x800f0954 durante l'installazione

Se il computer Windows è configurato per ricevere gli aggiornamenti da un server di aggiornamento locale (WSUS) o da SCCM (Configuration Manager) SUP, è possibile che venga visualizzato un messaggio di errore quando si tenta di installare RSAT utilizzando la GUI, Add-WindowsCapability o DISM: Errore 0x800f0954.
 
In questo caso, Windows tenta di scaricare il pacchetto RSAT dal server di aggiornamento locale e restituisce l'errore 0x800f0954.
 
Per ignorare WSUS locale durante l'installazione di funzionalità aggiuntive di Windows e di Features On Demand (compreso RSAT), è necessario attivare un'opzione dei Criteri di gruppo:
  • Avviare l'editor Criteri di gruppo locali (gpedit.msc) oppure, nel caso di Windows Server, avviare Gestione Criteri di gruppo (gpmc.msc).
  • Accedere a Configurazione computer->Modelli amministrativi->Sistema.
  • Abilitare la policy Specifica le impostazioni per l'installazione e il ripristino dei componenti facoltativi e selezionare l'opzione Scarica il contenuto di ripristino e le funzionalità facoltative direttamente da Windows Update invece che da Windows Server Update Services (WSUS).
    Specifica le impostazioni per l'installazione e il ripristino dei componenti facoltativi
    FIG 4 - Specifica le impostazioni per l'installazione e il ripristino dei componenti facoltativi

  • Salvare le modifiche e forzare l'update delle policy con il comando gpupdate /force
  • Riavviare il servizio Windows Update eseguendo i comandi net stop wuauserv e net start wuauserv
Dopo questa modifica, l'installazione di RSAT tramite PowerShell o DISM dovrebbe essere completata senza errori.
 

Errore 0x8024002e  durante l'installazione

La connessione a Microsoft Update durante il recupero dei componenti RSAT potrebbe essere bloccata da alcune impostazioni del registro di Windows. In tal caso, durante l'installazione di RSAT, verrà visualizzato il codice di errore 0x8024002e.
Per forzare il download dei componenti RSAT da Microsoft Update bisogna intervenire sul registro di sistema:
  • Avviare l'Editor del Registro di sistema e posizionarsi su
    HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
  • Assegnare il valore 0 ai seguenti parametri DWORD
    DoNotConnectToWindowsUpdateInternetLocations 
    DisableWindowsUpdateAccess
  • Riavviare il servizio wuauserv tramite i comandi net stop wuauserv e net start wuauserv




domenica 3 dicembre 2023

PowerShell: Impedire il blocco del computer o l'attivazione screensaver a seguito inattività

Dopo un periodo di inattività, Windows provvede ad attivare lo screensaver e/o a bloccare il computer. Tale comportamento può essere personalizzato tramite le impostazioni del sistema operativo tuttavia, in alcuni contesti, potrebbe essere utile disporre di uno script PowerShell che faccia credere a Windows che il sistema sia in uso e impedire il blocco o la visualizzazione dello screensaver. Si pensi ad esempio ai PC aziendali per i quali l'accesso alle impostazioni è inibito all'utente, oppure per un attività temporanea da eseguire sul pc e (per pigrizia) non si intendono modificare le impostazioni del sistema.
PowerShell

In questi casi possiamo utilizzare il metodo SendKeys per simulare la pressione di un tasto da parte dell'utente. Uno semplice script potrebbe essere il seguente
 # Crea un oggetto Wscript.Shell che consente di accedere alla shell di Windows  
 $WShell = New-Object -com "Wscript.Shell"  
 # Ciclo infinito. Per interromperlo premere CTRL+C o chiudere la finestra  
 while ($true)  
 {  
  # Simula la pressione del tasto Bloc Scorr   
  # Il tasto viene premuto 2 volte per riportare lo stato di Bloc Scorr a quello iniziale  
  $WShell.SendKeys("{SCROLLLOCK}")  
  Start-Sleep -Milliseconds 100  
  $WShell.SendKeys("{SCROLLLOCK}")  
  # Attendo 5 minuti  
  Start-Sleep -Seconds 300  
 }   
Per specificare i caratteri che non vengono visualizzati quando si preme un tasto, come INVIO o TAB, e i tasti che rappresentano azioni anziché caratteri, è possibile  utilizzare i codici della seguente tabella.
Tasto Codice
BACKSPACE
{BACKSPACE}, {BS}, {BKSP}
PAUSA
{BREAK}
CAPS LOCK
{CAPSLOCK}
CANC
{DELETE}, {DEL}
FRECCIA GIU'
{DOWN}
FINE
{END}
INVIO
{ENTER}, ~
ESC
{ESC}
HELP
{HELP}
HOME
{HOME}
INS
{INSERT}, {INS}
FRECCIA SX
{LEFT}
BLOC NUM
{NUMLOCK}
PAG GIU'
{PGDN}
PAG SU'
{PGUP}
STAMP
{PRTSC}
FRECCIA DX
{RIGHT}
BLOC SCORR
{SCROLLLOCK}
TAB
{TAB}
FRECCIA SU'
{UP}
F1
{F1}
F2
{F2}
F3
{F3}
F4
{F4}
F5
{F5}
F6
{F6}
F7
{F7}
F8
{F8}
F9
{F9}
F10
{F10}
F11
{F11}
F12
{F12}
F13
{F13}
F14
{F14}
F15
{F15}
F16
{F16}
+
{ADD}
-
{SUBTRACT}
*
{MULTIPLY}
/
{DIVIDE}


Per specificare i tasti combinati con qualsiasi combinazione dei tasti MAIUSC, CTRL e ALT, far precedere il codice del tasto da uno o più dei seguenti codici.
Tasto Codice
SHIFT
+
CTRL
^
ALT
%




venerdì 1 dicembre 2023

PowerShell: Muovere il puntatore del mouse

Tramite PowerShell è possibile muovere il puntatore del mouse utilizzando l'assembly System.Windows.Forms, che contiene le classi per gestire la finestra grafica.

PowerShell


Un semplice script che muove il mouse ogni 30 secondi è il seguente

 Add-Type -AssemblyName System.Windows.Forms  
 # Ciclo infinito che aggiorna la posizione del mouse ogni 30 secondi finchè non viene premuto CTRL+C o chiusa la finestra  
 while ($true)  
 {  
  # Rileva la posizione attuale del mouse  
  $Pos = [System.Windows.Forms.Cursor]::Position  
  # Creo le nuove coordinate del puntatore aggiungendo un pixel e facendo in modo da non uscire dallo schermo (% 500)  
  $x = ($pos.X % 500) + 1  
  $y = ($pos.Y % 500) + 1  
  # Posiziona il puntatore del mouse nelle nuove coordinate  
  [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)  
  # Attende 30 secondi  
  Start-Sleep -Seconds 30  
 }  
Nello script, per evitare che il mouse finisca fuori dallo schermo, è stato adottato un piccolo espediente: il valore delle coordinate viene diviso per 500 e viene prelevato il resto della divisione (che sarà sicuramente inferiore a 500).

Per muovere il cursore in maniera randomica sullo schermo si può utilizzare il seguente script
 Add-Type -AssemblyName System.Windows.Forms  
   
 # Rileva la risoluzione del monitor principale  
 $WindowSize = [System.Windows.Forms.Screen]::GetWorkingArea(0)  
 $MaxWidth = $WindowSize.Width  
 $MaxHeight = $WindowSize.Height  
   
 #Esegue un loop e aggiorna la posizione del mouse finché non viene premuto CTRL + C o viene chiusa la finestra  
 while ($true)  
 {  
   # Genera randomincamente le nuove coordinale tenendo conto della risoluzione  
   $x = (Get-Random -Minimum 0 -Maximum $MaxWidth)  
   $y = (Get-Random -Minimum 0 -Maximum $MaxHeight)  
   Write-Host "`rNew position: x:$($x),y:$($y)  " -NoNewLine  
   # Posiziona il cursore nelle nuove coordinate  
   [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($x, $y)  
   # Attende 30 secondi  
   Start-Sleep -Seconds 30  
 }  
Per chi stesse pensando di utilizzare questo metodo per evitare che Windows vada in stand-by in caso di inattività, dovrà pensare ad una soluzione alternativa. Il movimento del mouse tramite PowerShell, infatti, non è sufficiente affinché il sistema venga considerato "attivo" e Windows provvederà comunque a visualizzare lo screensaver, oscurare/bloccare lo schermo o attivare il risparmio energetico dopo un periodo di inattività.
Per fare in modo che Windows rilevi che il pc sia utilizzato è necessario un input da parte dell'utente e non solo il movimento del mouse. Per simulare l'input da parte dell'utente, ad esempio la pressione di un tasto, si può utilizzare il metodo SendKeys che illustrerò in un altro articolo.




giovedì 19 ottobre 2023

Windows Server 2022: Installazione di IP Address Management

In un'organizzazione di piccole dimensioni, la gestione dei server DNS (Domain Name System) e DHCP (Dynamic Host Configuration Protocol) non rappresenta un grosso problema; potrebbe bastare un solo server o una manciata di server. Nelle grandi organizzazioni la gestione di numerosi server DNS e DHCP è più complessa e risulta difficile tenere traccia di tutte le zone e gli ambiti. In questi casi Microsoft ci viene incontro fornendoci una nuova funzionalità nota come IPAM (IP Address Management).

IPAM combina la gestione dei servizi di rete come il DNS e il DHCP in un'unica applicazione, in modo da poter gestire sia l'infrastruttura DNS che quella DHCP da una console di gestione centrale.

Uno degli aspetti più interessanti di IPAM è che è in grado di indicare quando una sottorete viene utilizzata in modo intensivo. In questo modo è possibile tenere traccia di quando è necessario aggiungere altre sottoreti per evitare che gli utenti o i sistemi rimangano senza indirizzi IP utilizzabili.

In questo articolo verrà illustrato solo come installare IPAM. La configurazione e la gestione verranno mostrati in articoli successivi.

Prerequisiti

Prima di procedere con l'installazione di IPAM bisogna considerare i seguenti requisiti:
  • IPAM non può essere installato sui controller di dominio.
  • IPAM non dovrebbe essere installato su un server DHCP o DNS perché può causare problemi di rilevamento.
  • IPAM deve essere installato su un sistema unito al dominio.
  • IPAM è incentrato su Microsoft. Non è possibile gestire prodotti di terze parti come BIND su Linux.

Una volta verificato che i requisiti sopra riportati siano soddisfatti, si può passare all'installazione di IPAM.

Installazione di IPAM tramite GUI

Da Server Manager, nella sezione Dashboard, cliccare sul link Aggiungi ruoli e funzionalità (in alternativa cliccare sul menu Gestione e selezionare Aggiungi ruoli e funzionalità).
Server Manager
FIG 1 - Server Manager
Verrà avviato il Wizard Aggiunta guidata ruoli e funzionalità che ci guiderà nell'installazione della funzionalità. Nella finestra Prima di iniziare vengono fornite alcune informazioni preliminari sull'installazione/rimozione dei ruoli e funzionalità. Cliccare su Avanti.
Aggiunta guidata ruoli e funzionalità, Prima di iniziare
FIG 2 - Aggiunta guidata ruoli e funzionalità, Prima di iniziare
Nella pagina Selezione tipo di installazione è possibile scegliere tra installare ruoli e funzionalità su un server oppure installare una specifica risorsa sull'infrastruttura VDI. Lasciare selezionata l'opzione Installazione basata su ruoli o basata su funzionalità e cliccare su Avanti per proseguire.  
Selezione tipo di installazione
FIG 3 - Selezione tipo di installazione

Nella pagina Selezione server di destinazione cliccare su Avanti.
Selezione server di destinazione
FIG 4 - Selezione server di destinazione

Nella schermata Selezione ruoli server cliccare su Avanti.

Selezione ruoli server
FIG 5 - Selezione ruoli server

Scorrere l'elenco delle funzionalità mostrate nella finestra Selezione funzionalità e selezionare Server di Gestione indirizzi IP. Come indicato dalla descrizione:
Gestione indirizzi IP fornisce un framework centrale per la gestione dello spazio di indirizzi IP e dei server di infrastruttura corrispondenti, come DHCP e DNS. Oltre a supportare l'individuazione automatizzata dei server di infrastruttura in una foresta Active Directory, Gestione indirizzi IP consente di gestire lo spazio di indirizzi IPv4 e IPv6 statici e dinamici, registra le tendenze relative all'utilizzo degli indirizzi IP e supporta il monitoraggio e la gestione dei servizi DNS e DHCP nella rete.
Selezione funzionalità
FIG 6 - Selezione funzionalità
Si aprirà una nuova finestra di dialogo che mostra l'elenco di ulteriori funzionalità che verranno installate per il corretto funzionamento di Server di Gestione indirizzi IP. Cliccare su Aggiungi funzionalità.
Funzionalità necessarie per Server di Gestione indirizzi IP
FIG 7 - Funzionalità necessarie per Server di Gestione indirizzi IP

Si ritorna alla schermata precedente e, questa volta, la funzionalità Server di Gestione IP risulta selezionata. Cliccare su Avanti per proseguire.
Selezione funzionalità
FIG 8 - Selezione funzionalità

Nella schermata Conferma selezioni per l'installazione, viene mostrato un resoconto di quello che verrà installato. Se si desidera che il server si riavvii automaticamente, se necessario, a seguito dell'installazione della funzionalità è possibile selezionare la casella di controllo Riavvia automaticamente il server di destinazione se necessario. Cliccare su Installa per procedere con l'installazione di IPAM.
Conferma selezioni per l'installazione
FIG 9 - Conferma selezioni per l'installazione

Al termine dell'installazione cliccare su Chiudi per chiudere la finestra del Wizard.
Stato installazione
FIG 10 - Stato installazione


Installazione di IPAM tramite PowerShell

Per l'installazione di IPAM da PowerShell, aprire una finestra Windows PowerShell (amministratore) ed eseguire il seguente comando
 Install-WindowsFeature –Name IPAM -Restart  
Il parametro -Restart provvederà a riavviare il server al termine dell'installazione se necessario.
PowerShell, installazione di IPAM
FIG 11 - PowerShell, installazione di IPAM




lunedì 16 ottobre 2023

PowerShell: Aggiungere una workstation ad un dominio

Per aggiungere un server o una workstation ad un dominio tramite PowerShell, è possibile utilizzare il cmdlet Add-Computer. Il cmdlet lo abbiamo già incontrato nell'articolo Windows Server 2022: Aggiungere il server ad un dominio (Join)  e in questo articolo verrà illustrato più dettagliatamente e lo utilizzeremo per aggiungere una workstation Windows 11 al nostro dominio.

Il cmdlet Add-Computer può essere utilizzato per aggiungere il computer locale o i computer remoti a un dominio o a un gruppo di lavoro oppure per spostarli da un dominio a un altro. 
È possibile usare i parametri di questo cmdlet per specificare un'unità organizzativa e il controller di dominio o per eseguire un join non sicuro. Per ottenere i risultati del comando, si utilizzano i parametri Verbose e PassThru .

Sintassi

Add-Computer
   [-ComputerName <String[]>]
   [-LocalCredential <PSCredential>]
   [-UnjoinDomainCredential <PSCredential>]
   -Credential <PSCredential>
   [-DomainName] <String>
   [-OUPath <String>]
   [-Server <String>]
   [-Unsecure]
   [-Options <JoinOptions>]
   [-Restart]
   [-PassThru]
   [-NewName <String>]
   [-Force]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]
   
Add-Computer
   [-ComputerName <String[]>]
   [-LocalCredential <PSCredential>]
   [-Credential <PSCredential>]
   [-WorkgroupName] <String>
   [-Restart]
   [-PassThru]
   [-NewName <String>]
   [-Force]
   [-WhatIf]
   [-Confirm]
   [<CommonParameters>]  


Parametri

-ComputerName
Specifica i computer da aggiungere a un dominio o un gruppo di lavoro. Il valore predefinito è il computer locale. Al parametro può essere passato il nome NetBIOS, un indirizzo IP (Internet Protocol) o un nome di dominio completo di ogni computer remoto. Per specificare il computer locale, digitare il nome del computer, un punto (.) o "localhost".
Questo parametro non si basa sulla comunicazione remota di Windows PowerShell. È possibile utilizzare il parametro ComputerName di Add-Computer anche se il computer non è configurato per eseguire comandi remoti.  

-Confirm
Richiede conferma prima di eseguire il cmdlet.

-Credential
Specifica un account utente che dispone dell'autorizzazione per aggiungere computer a un nuovo dominio. Il valore predefinito è l'utente corrente.
Digitare un nome utente, ad esempio "User01" o "Domain01\User01" o immettere un oggetto PSCredential , ad esempio quello generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesta una password.
Per specificare un account utente autorizzato a rimuovere il computer dal dominio corrente, usare il parametro UnjoinDomainCredential. Per specificare un account utente autorizzato a connettersi a un computer remoto, usare il parametro LocalCredential.

-DomainName
Specifica il dominio a cui vengono aggiunti i computer. Questo parametro è obbligatorio quando si aggiunge il computer a un dominio.

-Force
Elimina la richiesta di conferma dell'utente. Senza questo parametro, Add-Computer è necessario confermare l'aggiunta di ogni computer.

-LocalCredential
Specifica un account utente autorizzato a connettersi ai computer specificati dal parametro ComputerName . Il valore predefinito è l'utente corrente.
Digitare un nome utente, ad esempio "User01" o "Domain01\User01" o immettere un oggetto PSCredential , ad esempio quello generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesta una password.
Per specificare un account utente con l'autorizzazione per aggiungere i computer a un nuovo dominio, usare il parametro Credential . Per specificare un account utente autorizzato a rimuovere i computer dal dominio corrente, usare il parametro UnjoinDomainCredential.

-NewName
Specifica un nuovo nome per il computer nel nuovo dominio. Questo parametro è valido solo quando un computer viene aggiunto o spostato.

-Options
Specifica le opzioni avanzate per l'operazione Add-Computer di join. Immettere uno o più valori delimitati da virgole in una stringa.
I valori validi per questo parametro sono:
  • AccountCreate: crea un account di dominio. Il Add-Computer cmdlet crea automaticamente un account di dominio quando aggiunge un computer a un dominio. Questa opzione è inclusa per completezza.
  • Win9XUpgrade: indica che l'operazione di join fa parte di un aggiornamento del sistema operativo Windows.
  • UnsecuredJoin: esegue un join non protetto. Per richiedere un join non protetto, usare il parametro Unsecure o questa opzione. Se si vuole passare una password del computer, è necessario usare questa opzione in combinazione con PasswordPass l'opzione .
  • PasswordPass: imposta la password del computer sul valore del parametro Credential(DomainCredential) dopo l'esecuzione di un join non protetto. Questa opzione indica anche che il valore del parametro Credential (DomainCredential) è una password del computer, non una password utente. Questa opzione è valida solo quando viene specificata l'opzione UnsecuredJoin . Quando si usa questa opzione, le credenziali fornite al -Credential parametro devono avere un nome utente Null.
  • JoinWithNewName: rinomina il nome del computer nel nuovo dominio con il nome specificato dal parametro NewName. Quando si usa il parametro NewName, questa opzione viene impostata automaticamente. Questa opzione è progettata per essere usata con il cmdlet Rename-Computer. Se si utilizza il Rename-Computer cmdlet per rinominare il computer, ma non riavviare il computer per rendere effettiva la modifica, è possibile utilizzare questo parametro per aggiungere il computer a un dominio con il nuovo nome.
  • JoinReadOnly: usa un account computer esistente per aggiungere il computer a un controller di dominio di sola lettura. L'account computer deve essere aggiunto all'elenco consentito per i criteri di replica delle password e la password dell'account deve essere replicata nel controller di dominio di sola lettura prima dell'operazione di aggiunta.
  • InstallInvoke: imposta i flag di creazione (0x2) ed eliminazione (0x4) del parametro FJoinOptions del metodo JoinDomainOrWorkgroup . Per altre informazioni sul metodo JoinDomainOrWorkgroup , vedere Metodo JoinDomainOrWorkgroup della classe Win32_ComputerSystem. Per altre informazioni su queste opzioni, vedere Funzione NetJoinDomain.

-OUPath
Specifica un'unità organizzativa per l'account di dominio. Immettere il nome distinto completo dell'unità organizzativa racchiuso tra virgolette. Il valore predefinito è l'unità organizzativa predefinita per gli oggetti computer del dominio.

-PassThru
Restituisce un oggetto che rappresenta l'elemento in uso. Per impostazione predefinita, il cmdlet non genera alcun output.

-Restart
Riavvia i computer aggiunti al dominio o al gruppo di lavoro. Spesso è necessario un riavvio per rendere effettiva la modifica.

-Server
Specifica il nome di un controller di dominio che aggiunge il computer al dominio. Immettere il nome in formato NomeDominio\NomeComputer. Per impostazione predefinita, non viene specificato alcun controller di dominio.

-UnjoinDomainCredential
Specifica un account utente che dispone dell'autorizzazione per rimuovere computer dal dominio corrente. Il valore predefinito è l'utente corrente.
Digitare un nome utente, ad esempio "User01" o "Domain01\User01" o immettere un oggetto PSCredential , ad esempio quello generato dal Get-Credential cmdlet. Se si digita un nome utente, viene richiesta una password.
Usare questo parametro quando si spostano computer in un dominio diverso. Per specificare un account utente con l'autorizzazione per l'aggiunta al nuovo dominio, usare il parametro Credential . Per specificare un account utente autorizzato a connettersi a un computer remoto, usare il parametro LocalCredential.

-Unsecure
Esegue un join non sicuro al dominio specificato.

-WhatIf
Mostra gli effetti dell'esecuzione del cmdlet. Il cmdlet non viene eseguito.

-WorkgroupName
Specifica il nome di un gruppo di lavoro a cui vengono aggiunti i computer. Il valore predefinito è "WORKGROUP".


Esempi

Esempio 1
Add-Computer -DomainName mycompany.local -Restart
Questo comando aggiunge il computer locale al dominio mycompany.local e riavvia il computer per rendere effettiva la modifica.

Esempio 2
Add-Computer -WorkgroupName WORKGROUP1
Questo comando aggiunge il computer locale al gruppo di lavoro Workgroup1.

Esempio 3
Add-Computer -DomainName mycompany.local -Server mycompany.local\ServerDC2 -PassThru -Verbose
Questo comando aggiunge il computer locale al dominio mycompany.local tramite il controller di dominio mycompany.local\ServerDC2.
Il comando usa i parametri PassThru e Verbose per ottenere informazioni dettagliate sui risultati del comando.

Esempio 4 
Add-Computer -DomainName mycompany.local -OUPath "OU=Direzione,DC=mycompany,DC=local"
Questo comando aggiunge il computer locale al dominio Domain02. Usa il parametro OUPath per specificare l'unità organizzativa per i nuovi account.

Esempio 5
Add-Computer -ComputerName Server01 -LocalCredential Server01\Admin01 -DomainName Domain02 -Credential Domain02\Admin02 -Restart -Force
Questo comando aggiunge il computer Server01 al dominio Domain02. Usa il parametro LocalCredential per specificare un account utente autorizzato a connettersi al computer Server01. Usa il parametro Credential per specificare un account utente con l'autorizzazione per aggiungere computer al dominio. Usa il parametro Restart per riavviare il computer al termine dell'operazione di join e il parametro Force per eliminare i messaggi di conferma dell'utente.

Esempio 6
Add-Computer -ComputerName Server01, Server02, localhost -DomainName Domain02 -LocalCredential Domain01\User01 -UnjoinDomainCredential Domain01\Admin01 -Credential Domain02\Admin01 -Restart
Questo comando sposta i computer Server01 e Server02 e il computer locale, da Domain01 a Domain02.
Usa il parametro LocalCredential per specificare un account utente autorizzato a connettersi ai tre computer interessati. Usa il parametro UnjoinDomainCredential per specificare un account utente autorizzato a annullare la partecipazione dei computer dal dominio Domain01 e al parametro Credential per specificare un account utente che abbia l'autorizzazione per aggiungere i computer al dominio Domain02. Usa il parametro Restart per riavviare tutti e tre i computer al termine dello spostamento.

Esempio 7
Add-Computer -ComputerName Server01 -DomainName Domain02 -NewName Server044 -Credential Domain02\Admin01 -Restart
Questo comando sposta il computer Server01 nel dominio Domain02 e modifica il nome del computer in Server044.
Il comando usa le credenziali dell'utente corrente per connettersi al computer Server01 e separarsi dal dominio corrente. Usa il parametro Credential per specificare un account utente con l'autorizzazione per aggiungere il computer al dominio Domain02.

Esempio 8
Add-Computer -ComputerName (Get-Content Servers.txt) -DomainName Domain02 -Credential Domain02\Admin02 -Options Win9xUpgrade  -Restart
Questo comando aggiunge i computer elencati nel Servers.txt file al dominio Domain02. Usa il parametro Options per specificare l'opzione Win9xUpgrade . Il parametro Restart riavvia tutti i computer appena aggiunti al termine dell'operazione di join.

Esempio 9
 New-ADComputer -Name "Server02" -AccountPassword (ConvertTo-SecureString -String 'TempJoinPA$$' -AsPlainText -Force)  
 $joinCred = New-Object pscredential -ArgumentList ([pscustomobject]@{  
   UserName = $null  
   Password = (ConvertTo-SecureString -String 'TempJoinPA$$' -AsPlainText -Force)[0]  
 })  
 Add-Computer -Domain "Domain03" -Options UnsecuredJoin,PasswordPass -Credential $joinCred  

Questa combinazione di comandi crea un nuovo account computer con un nome predefinito e una password di aggiunta temporanea in un dominio usando un computer aggiunto a un dominio esistente. Quindi separatamente, un computer con il nome predefinito unisce il dominio usando solo il nome del computer e la password di aggiunta temporanea. La password predefinita viene usata solo per supportare l'operazione di join e viene sostituita come parte delle normali procedure di account computer dopo che il computer ha completato l'aggiunta.


Aggiungere una workstation Windows 11 al dominio

Prima di poter procedere alla join al dominio della workstation è opportuno assicurarsi che il server sia raggiungibile come indicato nell'articolo Windows Server 2022: Aggiungere una workstation al dominio (join al dominio).
Dalla workstation, avviare PowerShell come amministratore ed eseguire il comando
Add-Computer -DomainName mycompany.local -NewName PCDIR003 -Restart
Verranno richieste le credenziali di un account abilitato all'inserimento del computer al dominio. 
Add-Computer, Aggiungere il computer al dominio
FIG 1 - Add-Computer, Aggiungere il computer al dominio

Una volta specificate le credenziali e cliccato su OK, dopo qualche secondo il computer verrà aggiunto al dominio con il nome specificato dal parametro -NewName.
Utenti e computer di Active Directory
FIG 2 - Utenti e computer di Active Directory






martedì 3 ottobre 2023

PowerShell: Visualizzare l'elenco dei controller di dominio

Per ottenere un elenco di tutti i controller di dominio è possibile utilizzare il cmdlet PowerShell Get-AdDomainController .

Il cmdlet Get-ADDomainController permette di visualizzare l'elenco dei controller di dominio anche in base ai parametri specificati. È possibile ottenere l'elenco dei controller di dominio impostando i parametri Identity, Filter o Discover. 

Il parametro Identity specifica il controller di dominio da visualizzare. È possibile identificare un controller di dominio tramite GUID, indirizzo IPV4, indirizzo IPV6 globale o nome host DNS. Un controller di dominio può essere identificato anche in base al nome dell'oggetto server che rappresenta il controller di dominio, al nome distinto dell'oggetto impostazioni NTDS o dell'oggetto server, al GUID dell'oggetto impostazioni NTDS o dell'oggetto server sotto la partizione di configurazione o al nome distinto dell'oggetto computer che rappresenta il controller di dominio.

Per cercare e recuperare più di un controller di dominio, si utilizza il parametro Filter. Tale parametro utilizza il linguaggio di espressione di Windows PowerShell per scrivere stringhe di query per Active Directory. La sintassi di Windows PowerShell Expression Language fornisce un ricco supporto per la conversione dei tipi di valore ricevuti dal parametro Filter. 

Per visualizzare un controller di dominio utilizzando il meccanismo di scoperta di DCLocator, si utilizza il parametro Discover. È possibile fornire criteri di ricerca impostando parametri quali Service, SiteName, DomainName, NextClosestSite, AvoidSelf e ForceDiscove


Sintassi

Get-ADDomainController
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   [[-Identity] <ADDomainController>]
   [-Server <String>]
   [<CommonParameters>]


Get-ADDomainController
   [-AuthType <ADAuthType>]
   [-AvoidSelf]
   [-Discover]
   [-DomainName <String>]
   [-ForceDiscover]
   [-MinimumDirectoryServiceVersion <ADMinimumDirectoryServiceVersion>]
   [-NextClosestSite]
   [-Service <ADDiscoverableService[]>]
   [-SiteName <String>]
   [-Writable]
   [<CommonParameters>]


Get-ADDomainController
   [-AuthType <ADAuthType>]
   [-Credential <PSCredential>]
   -Filter <String>
   [-Server <String>]
   [<CommonParameters>]


Parametri

-AuthType 
Specifica il metodo di autenticazione. I valori accettati dal parametro sono:
  • Negotiate oppure 0 (default)
  • Basic oppure 1
-AvoidSelf
Specifica di non restituire il computer corrente come controller di dominio. Se il computer corrente non è un controller di dominio, questo parametro viene ignorato. È possibile specificare questo parametro quando si desidera ottenere il nome di un altro controller di dominio nel dominio.

-Credential
Specifica le credenziali dell'account utente con cui eseguire il comando. Se omesso viene considerato l'utente corrente che sta eseguendo il comando. Al parametro può essere passato il nome dell'account, come ad es. "utente01" o "Dominio\utente01" oppure può essere passato un'oggetto PSCredential generato dal cmdlet Get-Credential. Se viene specificato un'account utente verrà richiesto di inserire la password all'esecuzione del comando.

-Discover
Specifica di restituire un controller di dominio rilevabile che soddisfa le condizioni specificate dai parametri del cmdlet.

-DomainName
Specifica il dominio da cercare. Il cmdlet individua un controller di dominio rilevabile in questo dominio. Specificare il dominio utilizzando il nome NetBIOS o il FQDN del dominio.

-Filter
Specifica una stringa di query che recupera gli oggetti di Active Directory. Questa stringa utilizza la sintassi di Windows PowerShell Expression Language. La sintassi di Windows PowerShell Expression Language fornisce un ricco supporto per la conversione dei tipi di valore ricevuti dal parametro Filter. La sintassi utilizza una rappresentazione in-order, il che significa che l'operatore è collocato tra l'operando e il valore.

-ForceDiscover
Indica che il cmdlet deve cancellare tutte le informazioni del controller di dominio memorizzate nella cache ed eseguire un nuovo rilevamento. Se questo parametro non è specificato, il cmdlet può restituire informazioni sul controller di dominio memorizzate nella cache.

-Identity
Specifica un oggetto controller di dominio di Active Directory fornendo uno dei seguenti valori 
  • Distinguished name
  • GUID (objectGUID)
  • Security identifier (objectSid)
  • Security Account Manager account name (SAMAccountName) 

-MinimumDirectoryServiceVersion
Specifica il primo sistema operativo che il controller di dominio può avere, in modo che venga restituito dal cmdlet quando si ottiene un controller di dominio usando il parametro Discover. I valori accettabili per questo parametro sono:
  • Windows2000 oppure 1
  • Windows2008 oppure 2

-NextClosestSite
Specifica di restituire un controller di dominio nel sito più vicino quando non viene trovato un controller di dominio nel sito che contiene il client. Il sito più vicino è quello con il costo di collegamento più basso rispetto al sito corrente. I costi tra i siti si basano su fattori quali la larghezza di banda e la vicinanza fisica.

-Server
Specifica l'istanza di Active Directory Domain Services a cui connettersi, fornendo uno dei seguenti valori per un nome di dominio o un server di directory corrispondente. Il servizio può essere uno dei seguenti: Active Directory Lightweight Domain Services, Active Directory Domain Services o Active Directory snapshot instance.

L'istanza di Active Directory Domain Services può essere specificata in uno dei seguenti modi:
Valori del nome di dominio:
  • Nome di dominio completamente qualificato
  • Nome NetBIOS

Valori del server di directory:
  • Nome completo del server di directory
  • Nome NetBIOS
  • Nome e porta del server di directory completamente qualificati

-Service
Specifica i tipi di controller di dominio da ottenere. È possibile specificare più di un tipo utilizzando un elenco separato da virgole. I valori accettabili per questo parametro sono:
  • PrimaryDC oppure 1
  • GlobalCatalog oppure 2
  • KDC oppure 3
  • TimeService oppure 4
  • ReliableTimeService oppure 5
  • ADWS oppure 6

-SiteName
Specifica il nome di un sito in cui cercare il controller di dominio.Se questo parametro non è impostato, il cmdlet cerca i controller di dominio nello stesso sito del client.Il nome del sito è definito dalla proprietà Name dell'oggetto site.

-Writable
Specifica se si tratta di un controller di dominio scrivibile.


Esempi


Esempio 1
Get-ADDomainController 
Elenca i domain controller presenti nel dominio
Get-ADDomainController
FIG 1 - Get-ADDomainController


Esempio 2
Get-ADDomainController -Discover -Service "GlobalCatalog"
Questo comando visualizza un Global Catalog nella foresta corrente usando il parametro Discover.
Get-ADDomainController, GlobalCatalog
FIG 2 - Get-ADDomainController, GlobalCatalog

Esempio 3
Get-ADDomainController -Discover -Domain "mycompany.local"
Elenca i controller di dominio disponibili nel dominio specificato e utilizzando il parametro Discovery.

Esempio 4
Get-ADDomainController -Identity "ServerDC2"
Visualizza le informazioni di un controller di dominio utilizzando il suo nome NetBIOS.

Esempio 5
Get-ADDomainController -Discover -Domain "mycompany.local" -Service "PrimaryDC","TimeService"
Questo comando consente di ottenere il controller di dominio primario utilizzando Discover e di assicurarsi che sia pubblicizzato come server temporale.