martedì 9 aprile 2019

PowerShell: Visualizzare lo stato dei servizi di Windows

Per visualizzare i servizi di Windows tramite Powershell si può utilizzare il cmdlet Get-Service


Sintassi

Get-Service [[-Name] <String[]>] [-DependentServices] [-RequiredServices] [-Include <String[]>] [-Exclude <String[]>]

Get-Service [-DependentServices] [-RequiredServices] -DisplayName <String[]> [-Include <String[]>] [-Exclude <String[]>]

Get-Service [-DependentServices] [-RequiredServices] [-Include <String[]>] [-Exclude <String[]>] [-InputObject <ServiceController[]>]



Parametri


-DependentServices
Visualizza solo i servizi che dipendono dal servizio specificato.

-DisplayName
Permette di specificare, come un array di stringhe, il nome o i nomi dei servizi da ricercare. Sono consentiti i caratteri Wildcards.

-Exclude
Permette di specificare, come un array di stringhe, il nome o i nomi dei servizi da escludere dall'operazione. Sono consentiti i caratteri Wildcards.

-Include
Permette di specificare, come un array di stringhe, il nome o i nomi dei servizi da includere nell'operazione. Sono consentiti i caratteri Wildcards.

-InputObject
Specifica gli oggetti ServiceController che rappresentano i servizi da visualizzare. 

-Name
Specifica i nomi dei servizi da ricercare. Sono consentiti i caratteri Wildcards.

-RequiredServices
Mostra i servizi da cui dipende il servizio specificato.



Esempi


Esempio 1
Get-Service
Visualizza tutti i servizi sul computer:  stato, nome servizio e display name.

Esempio 2
Get-Service "LanMan*" 
Visualizza tutti i servizi presenti sulla postazione il cui nome inizia per "LanMan".

Esempio 3
Get-Service -Displayname "*rete*"
Visualizza tutti i servizi presenti sulla postazione il cui display name contiene la parola "rete".
PowerShell, Get-Service visualizzazione servizi con un particolare display name
FIG 1 - PowerShell, Get-Service visualizzazione servizi con un particolare display name

Esempio 4
Get-Service | Where-Object {$_.Status -eq "Stopped"}
Visualizza tutti i servizi che sono arrestati (in stato Stopped).

Esempio 5
Get-Service | Where-Object {$_.Status -eq "Running"}
Visualizza l'elenco dei servizi attivi (in stato Running).

Esempio 6
Get-Service | Sort-Object status
Elenca i servizi ordinandoli per il campo Status crescente. Attenzione, non si tratta di ordine alfabetico infatti i servizi in stato Stopped vengono visualizzati prima di quelli che sono in stato Running. Questo accade perché il campo Status è un'enumerazione: Stopped ha valore 1 mentre Running ha valore 4.

Esempio 7
"LanMan*" | Get-Service
Il comando visualizza tutti i servizi presenti sulla postazione il cui nome inizia per "LanMan" come visto per l'Esempio 2. Questo esempio dimostra che è possibile passare il nome del servizio a Get-Service tramite il pipe.

Esempio 8
Get-Service -Name "win*" -Exclude "WinRM"
Visualizza tutti i servizi presenti sulla postazione il cui nome inizia per "win" ad esclusione del servizio WinRM.

Esempio 9
Get-Service | Where-Object {$_.DependentServices} |  Format-List -Property Name, DependentServices, @{ Label="NoOfDependentServices"; Expression={$_.dependentservices.count} }
Il comando visualizza, per ciascun servizio presente sulla postazione, il nome dei servizi dipendenti e il loro numero.
PowerShell, Get-Service visualizzazione servizi e relative dipendenze
FIG 2 - PowerShell, Get-Service visualizzazione servizi e relative dipendenze

Esempio 10
Get-Service "WinRM" -RequiredServices
Il comando visualizza i servizi da cui dipende WinRM.





lunedì 8 aprile 2019

PowerShell: Disabilitare temporaneamente le schede di rete attive

Chi lavora nel campo IT può trovarsi nella situazione di essere connesso ad un computer da remoto (ad esempio tramite desktop remoto) e doverlo scollegare/ricollegare alla rete. Disabilitando manualmente la scheda di rete tramite GUI, la connessione verrebbe bruscamente terminata impedendo la riconnessione al computer.
Un modo semplice per evitare di essere tagliati fuori in maniera permanente consiste nel disabilitare temporaneamente le schede di rete connesse tramite il seguente comando PowerShell

$nic = Get-WmiObject Win32_NetworkAdapter | Where-Object {($_.NetEnabled -eq $true) -and ($_.PhysicalAdapter -eq $true) -and (($_.AdapterTypeID -eq 0) -or ($_.AdapterTypeID -eq 9))};$nic.disable();$nic.enable()

Il comando agisce su tutte le connessioni di rete attive (sia connessioni Wi-Fi che wired) e provvede a disattivarle e a riattivarle subito dopo.


PowerShell, Disabilita/Abilita connessioni di rete
FIG 1 - PowerShell, Disabilita/Abilita connessioni di rete




venerdì 5 aprile 2019

MS Word: Recuperare le immagini da un file .docx

Le applicazioni del pacchetto MS Office utilizzano la tecnologia Office Open Xml per il salvataggio dei documenti e ciò si traduce nell'estensione .docx per quanto riguarda i documenti di MS Word. Tale tecnologia si basa sul linguaggio XML: il testo, la formattazione e i metadati vengono salvati in singoli file che è possibile visionare tramite un comune editor di testo come Blocco Note. Un file .docx non è altro che un archivio compresso contenente i diversi file che insieme costituiscono il documento. Per visualizzare i file contenuti nell'archivio basta rinominare l'estensione .docx in .zip ed estrarre il contenuto.
Rinominare l'estensione .docx in .zip
FIG 1 - Rinominare l'estensione .docx in .zip

Ogni archivio è costituito da 3 cartelle: _rels, docProps e word.
  • _rels
    Contenente i metadati relativi alle connessioni che intercorrono tra i file dell'archivio.
  • docProps
    Cartella che contiene le proprietà del documento.
  • word
    La cartella word ospita i contenuti veri e propri del documento comprese le immagini che sono memorizzate all'interno di una sottocartella generalmente chiamata media.
Cartelle contenute all'interno del file docx
FIG 2 - Cartelle contenute all'interno del file docx
All'interno della cartella word è presente la cartella media che contiene le immagini del documento
FIG 3 - All'interno della cartella word è presente la cartella media che contiene le immagini del documento


Dunque per estrarre le immagini da un file .docx basta modificare l'estensione in .zip e navigare nella struttura dell'archivio fino a trovare e salvare i file delle immagini. Tale trucco può essere utile anche per recuperare parte dei contenuti di un file .docx corrotto e non apribile tramite MS Word.


Immagine contenuta all'interno del documento docx nella cartella word\media
FIG 4 - Immagine contenuta all'interno del documento docx nella cartella word\media



giovedì 4 aprile 2019

Google Chrome: Aumentare il numero di suggerimenti mostrati dal completamento automatico

Quando nella barra di Google Chrome si inizia a digitare un indirizzo o una parola da ricercare, la funzione di autocompletamento visualizza da 4 a 6 suggerimenti. Per modificare tale comportamento e aumentare il numero di suggerimenti visualizzati:
  • Nella barra di indirizzi di Chrome digitare chrome://flags seguito da invio;
  • Ricercare la voce Omnibox UI Max Autocomplete Matches e cliccare sul relativo pulsante presente sulla destra per modificare il numero di suggerimenti visualizzati (da 3 a 12) oppure disabilitare/abilitare tale funzione;
  • Riavviare Chrome manualmente o cliccando sul pulsante RELAUNCH NOW che apparirà in basso a destra.
Chrome, Omnibox UI Max Autocomplete Matches
FIG 1 - Chrome, Omnibox UI Max Autocomplete Matches




mercoledì 3 aprile 2019

Windows Quick Tip: Gestione nomi utente e password archiviati

Quando il computer si connette ad un dispositivo della propria rete locale che richiede user e password, Windows tenta di accedervi utilizzando le credenziali con cui l'utente ha eseguito il logon al sistema. Se tali credenziali non funzionano, Windows tenta di reperirle tra quelle memorizzate localmente e, nel caso in cui non vengano trovate o non risultino valide, il sistema operativo richiederà all'utente di inserirle tramite un'apposita finestra di dialogo.
Se, dopo aver inserito le credenziali, viene selezionata la casella memorizza credenziali presente nella stessa finestra, queste verranno memorizzate e archiviate localmente e riutilizzate da Windows per i futuri accessi alla risorsa.

Per visualizzare l'archivio delle user e password memorizzate localmente, dalla finestra di dialogo Esegui (WIN+R) digitare il comando
rundll32.exe keymgr.dll, KRShowKeyMgr seguito da invio.
Windows, Gestione nomi utente e password archiviati
FIG 1 - Windows, Gestione nomi utente e password archiviati

Dalla finestra Gestione nomi utente e password archiviati è possibile effettuare/ripristinare un backup delle credenziali memorizzate, modificarle, eliminarle o aggiungerne di nuove.





martedì 2 aprile 2019

Windows Quick Tip: Disinstallare/Installare un aggiornamento da riga di comando tramite WUSA

Nell'articolo PowerShell: Visualizzare  gli hotfix installati sul pc locale o su un pc remoto è stato mostrato come elencare gli hotfix/aggiornamenti installati sul computer. Per disinstallare/installare un particolare aggiornamento sul computer è possibile utilizzare, da riga di comando, WUSA (Windows Update Standalone Installer) il Programma di installazione Windows Update autonomo.

Il file Wusa.exe si trova nella cartella %windir%\System32 e può essere utilizzato sia per disinstallare un'hotfix/aggiornamento sia per installare pacchetti di aggiornamento MSU


Sintassi


wusa /extract: [/log:]
wusa [/quiet] [/norestart | /warnrestart: | /promptrestart | /forcerestart] [/log:]
wusa / uninstall  < | /kb:> [/quiet] [/norestart | /warnrestart: | /promptrestart | /forcerestart ][/log:]



Parametri


/?, /h, /help
Visualizzano la guida.

/quiet
Tramite tale parametro WUSA.exe viene eseguito in modalità silente (non interattiva).

/norestart
Impedisce a Wusa.exe di eseguire il riavvio del computer. L'opzione /norestart viene ignorata se l'opzione /quiet non è presente. 

/uninstall
Disinstalla il pacchetto o il numero KB specificato.

/kb
Specifica il pacchetto da disinstallare tramite il relativo numero KB. Può essere passato solo insieme all'opzione /uninstall.

/extract
Wusa.exe estrae il contenuto del pacchetto in una cartella di destinazione.

/warnrestart
Quando questa opzione viene combinata con l'opzione /quiet, Wusa.exe visualizza una richiesta all'utente prima di eseguire un riavvio per le operazioni di installazione e disinstallazione.


/forcerestart
Quando questa opzione viene combinata con l'opzione /quiet, Wusa.exe chiude in modo forzato l'applicazione e quindi esegue un riavvio.




Esempi


Esempio 1
wusa.exe /uninstall /kb:4489899 /quiet /norestart
Disinstalla il pacchetto KB4489899 in maniera silente e senza riavviare il sistema.
Windows, Disinstallare un'aggiornamento tramite wusa.exe
FIG 1 - Windows, Disinstallare un'aggiornamento tramite wusa.exe

Esempio 2 
wusa.exe Windows6.0-KB928439-x86.msu /quiet /norestart
Installa il pacchetto Windows6.0-KB928439-x86.msu in maniera silente e senza riavviare il sistema.

Esempio 3
wusa.exe /uninstall /kb:4489899 /quiet /forcerestart
Disinstalla il pacchetto KB4489899 in maniera silente e forza il riavvio del sistema al termine della disinstallazione.




lunedì 1 aprile 2019

PowerShell: Visualizzare gli hotfix installati sul pc locale o su un pc remoto

Con il termine hotfix si intende un singolo pacchetto cumulativo, composto da uno o più file, che include delle informazioni per risolvere un bug o un problema di sicurezza in un determinato prodotto software. Un hotfix, dunque, non è altro che una sorta di aggiornamento rapido rilasciato per rimediare ad un problema software il più velocemente possibile. Per visualizzare gli hotfix installati localmente o su un computer remoto è possibile utilizzare il cmdlet Get-HotFix.

Il cmdlet consente di visualizzare tutti gli hotfix/aggiornamenti installati sul computer locale o su computer remoti tramite Windows Update, Microsoft Update, Windows Server Update Service oppure aggiornamenti installati manualmente dagli utenti.


Sintassi


Get-HotFix [[-Id] <String[]>] [-Description <String[]>] [-ComputerName <String[]>] [-Credential <PSCredential>] [<CommonParameters>]




Parametri


-ComputerName
Il parametro consente di indicare un computer remoto. Se il parametro non viene specificato, il cmdlet agisce sul computer locale. Al parametro può essere passato il nome NetBIOS, l'indirizzo IP oppure il FQDN (Fully Qualified Domain Name).

-Credential
Per default il cmdlet viene eseguito con le credenziali dell'account che lancia il comando. Attraverso il parametro -Credential è possibile specificare un'account diverso.

-Description
Consente di ricercare un hotfix in base a una o più parole contenute nella sua descrizione. Sono consentiti caratteri Wildcards. 

-ID
In alternativa al parametro -Description, consente di ricercare un hotfix tramite il proprio ID. Il parametro non consente caratteri Wildcards. Se i parametri -Description e -ID non vengono specificati, la ricerca restituirà tutti gli hotfix.



Esempi


Esempio 1
Get-HotFix
Restituisce tutti gli hotfix/aggiornamenti installati sul computer locale.
PowerShell, Get-HotFix
FIG 1 - PowerShell, Get-HotFix

Esempio 2
Get-HotFix -Description "Security*" -ComputerName "Server01", "Server02"
Visualizza tutti gli hotfix la cui descrizione inizia con la parola Security installati sui server Server01 e Server02.

Esempio 3
Get-Content "ElencoWKS.txt" | ForEach { if (!(Get-HotFix -Id "KB4489899" -ComputerName $_)) { Add-Content $_ -Path "WKS-senza-KB4489899.txt" }}
Per ogni computer elencato all'interno del file ElencoWKS.txt viene verificato se ha installato aggiornamento KB4489899 e, in caso negativo, il nome della postazione viene aggiunto all'elenco contenuto nel file WKS-senza-KB4489899.txt.

Esempio 4
(Get-HotFix | sort installedon)[-1]
Il comando restituisce l'ultimo aggiornamento installato sul computer locale: ordina tutti gli hotfix per data di installazione quindi seleziona dall'array l'ultimo item (l'hotfix più recente).

Esempio 5
Get-Hotfix | Where-Object { $_.HotfixID -like "KB448*" } | Sort-Object InstalledOn
Restituisce tutti gli hotfix che hanno l'ID che inizia per KB448 ordinandoli per data di installazione.
PowerShell, Get-HotFix ricerca di una KB tra gli aggiornamenti installati
FIG 2 - PowerShell, Get-HotFix ricerca di una KB tra gli aggiornamenti installati