PowerShell Remoting
Inviato: 07/07/2024, 21:21
PowerShell Remoting è una funzionalità potente che consente di eseguire comandi su computer remoti all'interno di una rete. In questo articolo, vedremo alcuni esempi pratici di script PowerShell per utilizzare PowerShell Remoting e gestire computer remoti.
1. Abilitare PowerShell Remoting
Prima di poter utilizzare PowerShell Remoting, è necessario abilitarlo sui computer remoti. Ecco come abilitare PowerShell Remoting.
2. Eseguire Comandi Remoti su un Singolo Computer
Questo script esegue un comando remoto su un singolo computer specificato.
3. Eseguire Comandi Remoti su Più Computer
Questo script esegue un comando remoto su più computer specificati.
4. Copiare File su un Computer Remoto
Questo script copia un file dal computer locale a un computer remoto.
5. Ottenere Informazioni sul Sistema Remoto
Questo script raccoglie informazioni sul sistema di un computer remoto.
Assicurati di eseguire questi script con i permessi appropriati e di configurare correttamente i computer remoti per PowerShell Remoting. Puoi anche programmare l'esecuzione automatica di questi script utilizzando Task Scheduler su Windows.

Prima di poter utilizzare PowerShell Remoting, è necessario abilitarlo sui computer remoti. Ecco come abilitare PowerShell Remoting.
Codice: Seleziona tutto
# Abilita PowerShell Remoting
Enable-PSRemoting -Force
# Configura il firewall per consentire il traffico PowerShell Remoting
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any -Action Allow
Write-Output "PowerShell Remoting abilitato."

Questo script esegue un comando remoto su un singolo computer specificato.
Codice: Seleziona tutto
# Specifica il nome del computer remoto e le credenziali
$remoteComputer = "NomeComputerRemoto"
$cred = Get-Credential
# Esegui un comando remoto
Invoke-Command -ComputerName $remoteComputer -Credential $cred -ScriptBlock {
# Comando da eseguire sul computer remoto
Get-Process
}
Write-Output "Comando remoto eseguito su $remoteComputer."

Questo script esegue un comando remoto su più computer specificati.
Codice: Seleziona tutto
# Specifica i nomi dei computer remoti e le credenziali
$remoteComputers = @("NomeComputerRemoto1", "NomeComputerRemoto2", "NomeComputerRemoto3")
$cred = Get-Credential
# Esegui un comando remoto su ciascun computer
Invoke-Command -ComputerName $remoteComputers -Credential $cred -ScriptBlock {
# Comando da eseguire sui computer remoti
Get-Service
}
Write-Output "Comando remoto eseguito su tutti i computer specificati."

Questo script copia un file dal computer locale a un computer remoto.
Codice: Seleziona tutto
# Specifica il nome del computer remoto, le credenziali, e i percorsi del file
$remoteComputer = "NomeComputerRemoto"
$cred = Get-Credential
$localFilePath = "C:\Percorso\Del\File.txt"
$remoteFilePath = "C:\Percorso\Remoto\File.txt"
# Copia il file sul computer remoto
Copy-Item -Path $localFilePath -Destination "\\$remoteComputer\C$\Percorso\Remoto\" -Credential $cred
Write-Output "File copiato su $remoteComputer."

Questo script raccoglie informazioni sul sistema di un computer remoto.
Codice: Seleziona tutto
# Specifica il nome del computer remoto e le credenziali
$remoteComputer = "NomeComputerRemoto"
$cred = Get-Credential
# Ottieni informazioni sul sistema remoto
Invoke-Command -ComputerName $remoteComputer -Credential $cred -ScriptBlock {
Get-ComputerInfo
}
Write-Output "Informazioni sul sistema ottenute da $remoteComputer."