Mai come in questo periodo, dopo la scoperta della vulnerabilità CVE-2020-1472 (c.d. Zerologon), capita sempre più spesso di avere la necessità di conoscere l’esatto OS dei propri servers.
Continua a leggere Verifica versione sistemi operativi dei servers di un dominio
Archivi tag: powershell
Spegnimento programmato PC della rete
Un cliente mi ha chiesto di spegnere ogni sera, ad orari programmati, i PC del suo dominio Continua a leggere Spegnimento programmato PC della rete
Usare la Exchange Management Shell in remoto su Office 365
Può capitare di voler usare i comandi Powershell che normalmente utilizzate nella gestione del vostro Exchange “on premise” anche nella versione in cloud. Ma come si accede con powershell ad Office365?
Continua a leggere Usare la Exchange Management Shell in remoto su Office 365
Come ottenere rapidamente con Powershell la lista degli utenti di un dominio ed i relativi indirizzi e-mail di Exchange
In Active Directory vengono registrati tutti i dati degli utenti compresi gli indirizzi e-mail.
Quindi in un domain controller possiamo recuperare sia i nomi degli utenti, l’account ed anche l’indirizzo e-mail. Continua a leggere Come ottenere rapidamente con Powershell la lista degli utenti di un dominio ed i relativi indirizzi e-mail di Exchange
Disabilitare e subito riabilitare scheda di rete con Powershell
Quando siete connessi ad un computer con desktop remoto potreste avere la necessità di staccare un attimo il “cavo di rete”, ma essendo connessi da remoto l’operazione porterebbe solo alla vostra disconnessione senza possibilità di riconnettersi. Ma allora come fare? Continua a leggere Disabilitare e subito riabilitare scheda di rete con Powershell
Come comandare un Powershell remoto sui PC del dominio?
Anzitutto bisognerà avere sul server l’utilità PsExec. Segui il link al precedente post di Sistemisti Senior per sapere come fare per scaricarlo. Ricordarsi di copiare il file PsExec.exe nella cartella %WINDIR%\SYSTEM32 (oppure di aggiungere il percorso alla variabile PATH).
Creare quindi il seguente file .bat
@echo off title Sessione CMD su computer locale set TESTATA= cls ^&echo. ^&echo ATTIVA E LANCIA UNA PSSESSION SU UN PC REMOTO ^&echo ============================================= ^&echo. ^&echo. ^&echo. %TESTATA% echo ATTENZIONE: per uscire digitare exit al primo prompt ed exit(1) al secondo echo. echo. set /P NOMEPC=Inserire il nome del PC remoto: title Sessione CMD su computer remoto %TESTATA% echo Avvio PSEXEC sul computer remoto per eventuale echo attivazione delle sessioni remote di PowerShell echo. echo. psexec \\%NOMEPC% -s winrm.cmd quickconfig -q echo %errorlevel% IF %ERRORLEVEL% GEQ 1 echo ************** ERRORE! **************** && pause color 1f title Sessione PowerShell su computer remoto %TESTATA% echo Avvio Powershell su PC %NOMEPC% echo. echo. C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -noexit " & {New-PSSession -ComputerName %NOMEPC% |Enter-PsSession}" color Goto Fine :FINE
Otterrete una bella schermata come questa:
Ricordarsi che:
Per uscire dalla sessione remota di Powershell digitare “exit” o “Exit-PsSession” come nell’esempio:
[NOME-PC_REMOTO]: PS C:\Users\admin\Documents> Exit-PSSession
Per uscire dalla sessione locale di Powershell e tornare nel prompt dei comandi digitare “exit(1)” come nell’esempio:
PS C:\Windows\system32> exit(1)
Inventario programmi installati sui PC di un dominio
Ecco come fare:
Create il seguente file con estensione ps1:
$IPconnectedcomputers=Get-WmiObject -class Win32_ServerConnection -computername localhost -namespace root\CIMV2| where-object {$_.computername -like "*.*.*.*"} | select-object computername -unique # o in alternativa se volete controllare solo determinati PC # $IPconnectedcomputers = @("PC129","PC179","PC120","PC144","PC37","PC182","PC002","PC156","PC20") $TimestampReport=get-date -Format yyyyMMdd $ReportSavePath=[environment]::getfolderpath("mydocuments")+"\Report\"+$TimestampReport new-item $ReportSavePath -type directory -erroraction silentlycontinue foreach($ip in $IPconnectedcomputers){ if ((test-connection $ip.computername -Count 1 -erroraction silentlycontinue).statuscode -eq 0) { #$pc=($ip.computername).Insert(0, "\\") $pc=[System.Net.Dns]::GetHostEntry($ip.computername).HostName write-host Collegamento a $pc gwmi win32_product -ComputerName $pc -erroraction silentlycontinue | select-object vendor,caption,version,__SERVER|Export-Csv -NoTypeInformation -force "$ReportSavePath\$PC.txt" write-host Fine connessione con $pc } else { write-host Collegamento a $ip IMPOSSIBILE! } } write-host Elaborazione terminata write-host premi un tasto per continuare... read-host
Lanciatelo ed otterete dopo qualche minuto (dipende dal numero dei PC/servers presenti nel dominio) questo risultato:
Saranno elencati tutti i vendors dei programmi ed i relativi programmi e versioni installate.
In un prossimo post spiegherò anche come disinstallare da remoto, con Powershell, i programmi invididuati.
N.B.
E’ necessario che gli script Powershell siano resi eseguibili (di default lo sono solo quelli firmati).
Per bypassare il problema e rendere eseguibili anche quelli non firmati lanciate Powershell come amministratore (tenete premuto Ctrl-Shift mentre cliccate sul relativo collegamento) e scrivete:
Set-ExecutionPolicy -ExecutionPolicy bypass
Trovare il numero della settimana corrente con powershell
Spesso capita di voler svolgere una determinata azione a seconda che il numero della settimana sia pari o dispari, ad esempio voglio fare una copia di alcuni files una settimana in un disco e una settimana in un altro.
In soccorso arriva Powershell. Con esso possiamo stabilire il numero della settimana corrente e di conseguenza capire se è pari o dispari, per poi disporre un’azione da eseguire.
Ad esempio volete lanciare un programma se la settimana corrente è dispari:
if((get-date -uformat %W)% 2 -eq 0) {write "Pari. Non faccio niente!" } else {write "Dispari. Procedo con le azioni previste..." ...azione da eseguire }
Oppure voglio connettere una LUN iScsi per le settimane pari ed un’altra per le settimane dispari:
write Disconnetto tutte le sessioni iScsi... (iscsicli reporttargetmappings|findstr /i "sess").substring(30,33)| foreach-object -process {invoke-command{iscsicli logouttarget $_}} if((get-date -uformat %W)% 2 -eq 0) {write "Settimana pari. Attivo la LUN pari" iscsicli qlogintarget iqn.1992-04.com.emc:storage.LUN-PARI } else {write "Settimana dispari. Attivo la LUN dispari" iscsicli qlogintarget iqn.1992-04.com.emc:storage.LUN-DISP }
Pingare un intervallo di indirizzi (con Powershell)
Come fare per pingare un range di indirizzi senza installare alcun programma di ip scanning? Semplice con Powershell.
Continua a leggere Pingare un intervallo di indirizzi (con Powershell)
Interrogare facilmente le classi del .Net framework con Powershell
Lo sapevate che è possibile interrogare (ma anche impostare) una classe del .Net Framework da Powershell in modo rapido? Eccone alcuni esempi. Continua a leggere Interrogare facilmente le classi del .Net framework con Powershell
Andare alla cartella desktop con Powershell
Come arrivare alla cartella desktop con powershell? Un semplice comando!
Continua a leggere Andare alla cartella desktop con Powershell
Visualizzare il product key di Windows con powershell o wsh
Per visualizzare il Product Key inserito all’atto dell’attivazione del sistema operativo è possibile usare uno script Powershell (o WSH per i computer con XP/2003). Ecco come fare.
Continua a leggere Visualizzare il product key di Windows con powershell o wsh
Gestire le policy di Windows Server con Powershell
Vuoi abilitare Powershell all’utilizzo dei cmdlets delle policies?
Continua a leggere Gestire le policy di Windows Server con Powershell
Cancellare i log file di IIS con powershell
Come fare per cancellare il log di IIS che il sistema non rimuove mai?
La soluzione più rapida con Powershell.
Continua a leggere Cancellare i log file di IIS con powershell
Devi effettuare l'accesso per postare un commento.