PowerShell Day

Ok! Ci siamo!!! Grazie al team di #DotNetLombardia e #MicrosoftItalia abbiamo organizzato il #PowerShellDay!

Vi aspettiamo numerosi! Per registarvi all’evento e per le informazioni logistiche visitate questo link: http://powershellday.eventbrite.com

Buono scripting a tutti!!! ūüôā

Disinstallazione massiva di software con PowerShell

Questa sera mi sono trovato nella condizione di dover disinstallare parecchi componenti installati erroneamente con il modulo Web Platform di IIS. Come disinstallarle velocemente? Un semplice comando di PowerShell può aiutare!

 

(Get-WmiObject
-Class
Win32_Product
-Filter
“Name like ‘%SoftwareName%'”).Uninstall()

Quasi tutte le applicazioni installate (sia chiaro!!! Sostituite SoftwareName col nome di ci√≤ che vorreste disinstallare!!!) che contenessero la parola chiave indicata sono stati rimossi, quelli restanti avevano una procedura di disinstallazione non “automatizzabile”; risultato: ho disinstallato a mano solo 5 applicazioni rispetto alle 29 presenti!!! Grande risultato!

Buono scripting e buona notte a tutti!!!

Categorie:PowerShell

Impostare il DNS aging and scavenging con PowerShell

Capita abbastanza spesso di trovare, nelle zone del DNS Server, dei record vecchi o non pi√Ļ in essere. Mantenere pulite le registrazioni del DNS Server √® sicuramente un’attivit√† importante che sovente non viene effettuata quindi per supportarci in questo compito abbiamo a disposizione, per il DNS Server presente da Windows Server, due parametri, uno che valutano la vecchiaia dei record e l’altro che regola la periodicit√† dell’azione di pulizia.

PowerShell mette a disposizione i cmdlets necessari per impostare questi parametri: Set-DnsServerScavenging e Set-DnsServerZoneAging.

Set-DnsServerScavenging -ScavengingState $true -RefreshInterval 7.00:00:00| `

-ApplyOnAllZones

Innanzi tutto utiliziamo Set-DnsServerScavenging per abilitare la pulizia dei record vecchi, usando il parametro -ApplyOnAllZones potremo propagare il settaggio a tutte le zone registrate sul DNS Server. Il parametro -RefreshInterval ammette come input il periodo da considerare espresso nel formato “giorni.ore:minuti:secondi“. Dopo aver abilitato la pulizia automatica dovremo andare a specificare, zona per zona, il periodo dopo il quale i record vanno considerati vecchi.

Get-DnsServerZone | `
¬†¬†¬†¬†Where-Object {$_.IsAutoCreated -eq $False -and $_.ZoneName -ne ‘TrustAnchors’} | `
    Set-DnsServerZoneAging -Aging $true -RefreshInterval 7.00:00:00

Usando Set-DnsServerZoneAging possiamo specificare il periodo desiderato, seguendo la stessa convenzione di Set-DnsServerScaverging, lo andremo ad imputare. Per impostare il valore per tutte le zone è necessario leggerle, per questo possiamo usare il cmdlet Get-DnsServerZone. Siccome non è possibile applicare queste impostazioni alle zone autocreate vanno escluse con un filtro.

Al seguente link troverete lo script con i comandi: DNSAgingScavenging.ps1.

Buono scripting a tutti!!! J

Lo sport cede il passo alla violenza…un’altra volta…

Ho giocato a calcio, ho praticato sport, mi √® stato insegnato che la cosa pi√Ļ importante √® divertirsi “tutti insieme”‚Ķ Questo ed altri insegnamenti li ho imparati sia dai miei genitori sia dai dirigenti che nel tempo mi hanno accompagnato, ma nessuno mi ha mai detto che “odiare” l’avversario o la tifoseria avversaria fosse qualcosa di “giusto”, anzi, il rispetto era (ed √® ) posto davanti a tutto!!!

http://www.gussagonews.it/bomba-carta-gussago-calcio-rivendicazione-odio-bg-gennaio-2016/

Il fatto accaduto ieri √® l’ennesima dimostrazione che lo sport, per taluni, √® divertimento odio e violenza. Che insegnamento possono trarre i bambini da questi gesti compiuti dagli adulti??? Che esempio √® mai questo???

Mi pare che il buon senso sia andato perduto… non ci sono state persone ferite (o peggio), il colpo lo accusa lo sport ed i principi che porta con sé…

Icona ‚ÄúAlimentazione‚ÄĚ oppure ‚ÄúOpzioni risparmio energia‚ÄĚ?

Ad alcune persone non piacciono le novit√† della veste grafica di Windows 10, specie per quanto inerente le icone di sistema ed il centro notifiche. Personalmente mi piace il nuovo look, per chi invece amasse lo stile vintage, specie per la gestione delle opzioni di risparmio energia, aggiungendo un semplice valore al registro di sistema render√† nuovamente l’icona “batteria” identica al buon Windows 7.

Per impostare il valore è sufficiente eseguire PowerShell con privilegi amministrativi e digitare il seguente cmdlet:

 

New-ItemProperty
-Path
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\ImmersiveShell `


-Name
UseWin32BatteryFlyout
-PropertyType
DWORD
-Value
1
-Force

 

Se al posto di impostare “1” mettessimo uno “0” allora forzeremmo la nuova visualizzazione..

Vi ricordo che la variazione dei valori del registro di Sistema è un azione a Vostro rischio e pericolo, né lo scrivente né Microsoft risponderanno di eventuali problem e/o malfunzionamenti e/o danni ai vostri Sistemi operative.

Buono scripting a tutti!!! Che PowerShelll sia con Voi!!!

Categorie:IT/TLC, PowerShell, Windows

Azure PowerShell a WPC2015

Il countdown √® iniziato!!! Marted√¨ inizia la 22^ edizione di WPC! Vi aspetto per la mia sessione “Hybrid Cluod con Azure PowerShell”!!!

Non mancate a questo importante evento, saranno presenti numerosi speaker di alto livello che presenteranno argomenti molto interessanti.

Aggiornamento forzato di GPO da remoto con PowerShell

Uno degli aspetti pi√Ļ delicati nella gestione delle infrastrutture di dominio sono le Group Policy. Tutti gli amministratori di rete hanno implementato almeno 8 impostazioni mediante le GPO (Group Policy Objects), per intenderci, quelli legati alla scadenza delle password ed il blocco degli account. Pochi, invece, implementano GPO complesse ed ancor meno sfruttano l’applicazione di regole alle OU (Organizational Units) per impostazioni granulari di regole; tutti per√≤ hanno l’esigenza di propagare le GPO ai destinatari. Come noto le GPO possono essere per utente o per computer, vengono applicate all’avvio del pc ed all’accesso dell’utente, vengono rinfrescate periodicamente (tipicamente ogni 120 minuti), alcune possono essere recepite dopo un paio di riavvii‚Ķe noi stiamo ad aspettare! Noioso, direi! Possiamo far in modo che le GPO su una specifica macchina vengano aggiornate anzi tempo? CERTO! Tra i vari comandi presenti sui nostri pc √® disponibile GUPUDATE, un eseguibile che ci permette di aggiornare le GPO per la nostra macchina, ma risulta poco adatto per l’esecuzione su altre macchine; con PowerShell, invece, abbiamo la possibilit√† di effettuare l’aggiornamento delle GPO di macchine remote con uno sforzo minimo utilizzando il cmdlet Invoke-GPUpdate.

L’utilizzo di questo cmdlet √® molto semplice, specificando il parametro -Computer seguito dal nome del computer (o dall’elenco dei nomi di computers separati da virgola) verr√† eseguito remotamente l’aggiornamento delle GPO. Ovviamente √® disponibile il parametro -Force per imporre l’esecuzione forzata dell’aggiornamento ed √® possibile specificare, col parametro -Target, su quale gruppo d’impostazioni agire (Computer oppure Users).

Siccome PowerShell √® uno strumento di gestione ed automazione risulta pi√Ļ interessante leggere le macchine a cui applicare l’aggiornamento delle GPO direttamente da Active Directory Domain Services. Utilizzando il cmdlet Get-ADComputer potremo ottenere l’elenco delle macchine e quindi passando in pipe il risultato far eseguire l’operazione mediante il ciclo foreach. Purtroppo Invoke-GPUpdate non ammette il passaggio di parametri in pipe, quindi siamo obbligati ad utilizzare foreach per scandire ogni oggetto estratto da Get-ADComputer.

Cos√¨ facendo chiederemo al sistema di leggere tutte le macchine da AD DS e riapplicare le GPO. Ovviamente in una piccola realt√† questo √® sicuramente fattibile in tempi ragionevoli ma in realt√† molto estese potrebbe essere abbastanza impegnativo eseguire questa sequenza di cmdlets! Per questo motivo, specie su realt√† geograficamente distribuite o molto articolate (in particolare con la struttura delle GPO) sarebbe idoneo applicare un filtro per la lettura dei sistemi da AD DS, per applicare questa limitazione alla ricerca va specificato il parametro -SearchBase al cmdlet Get-ADComputer. Il valore del parametro deve essere imputato in formato LDAP, come nel sottostante esempio (occhio all’accento grave!!!!).

Per far s√¨ che le GPO vengano rilette mediante Invoke-GPUpdate √® necessario ricordarsi di abilitare sulle macchine Windows Remote Management (WinRM), mediante l’esecuzione del cmdlet Enable-PSRemoting, e che le porte del firewall siano aperte per garantire l’accesso al servizio WinRM.

Per comodit√† potrete accedere al file DistribuzioneGPO.ps1 per copiare i cmdlets proposti in questo post. Attenzione alla versione di PowerShell che state utilizzando! √ą necessario utilizzare almeno la versione 3 (quindi da Windows Server 2012/Windows 8 in poi).

Buono scripting a tutti!!! J

%d blogger hanno fatto clic su Mi Piace per questo: