mercoledì 24 agosto 2022

IDRAC - Gestione tramite powershell

POWERSHELL for IDRAC

E' possibile gestire le nuove versioni di IDRAC tramite powershell. La cosa diventa utile nel momento in cui si vuole operare da un unico strumento tramite script, diversamente e' molto piu conveniente utilizzare una console ssh

I moduli IDRAC per powershell vanno installati usando questi comandi:

Find-Module *idrac* |ogv        

Find-Module *idrac* |Install-Module    

#Restituisce lo stato di IDRAC

Set-PowerControlREDFISH -idrac_ip 1.2.3.4 -idrac_username root -idrac_password xxx -get_power_state_only y

Set-PowerControlREDFISH -idrac_ip 1.2.3.4 -idrac_username root -idrac_password xxx -power_request_value On

EXAMPLE WITH AUTH TOKEN

Set-PowerControlREDFISH -idrac_ip 1.2.3.4 get_power_state_only y -x_auth_token 5bd9cc9a8727ec366a9cef5bc83b2708

REFERENCE

https://www.dell.com/support/kbdoc/it-it/000178045/redfish-api-with-dell-integrated-remote-access-controller?dgc=SM&cid=243900&lid=spr5873265198&RefID=dtw22_sm5873265198&linkId=138750710

https://dl.dell.com/manuals/common/dell-emc-poweredge-server-mgmt-idrac-api.pdf

https://github.com/dell/DellPEWSMANTools

https://dl.dell.com/manuals/common/dell-emc-poweredge-server-mgmt-idrac-api.pdf


WSUS - Forzare rilevazione client

 Ciao,


spesso mi capita di non voler aspettare che WSUS rilevi un client. PEr forzare il rilevamento utilizzo questa procedura, che per adesso mi ha sempre dato molte soddisfazione :)

Verifica impostazioni WSUS

regedit hKLM\Software\Policies\Microsoft\Windows\Windows Update\WUSERVER

Forzare rilevamento del client da parte del wsus

Da eseguire sul client

$updateSession = new-object -com "Microsoft.Update.Session"

$Criteria="IsInstalled=0 and IsHidden=0"

$updates=$updateSession.CreateupdateSearcher().Search($criteria).Updates

wuauclt /reportnow


sabato 20 agosto 2022

Installazione e configurazione di OpenSSH su Windows

=========================================================================


=====Installazione - metodo 1=====

# Impostazione local GPO

Computer Configuration\Administrative Templates\System

Specify settings for optional component installation and component repair: Enabled

ed abilitare il flag sull'opzione

Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)

# Aggiornamento policy

gpupdate /force

# Verifica dello stato dell'installazione

Get-WindowsCapability -Online | ? name -like "openssh*"

# Installazione OpenSSH server

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0


=====Installazione - metodo 2=====

# Download OpenSSH server 

## Set network connection protocol to TLS 1.2

## Define the OpenSSH latest release url

 $url = 'https://github.com/PowerShell/Win32-OpenSSH/releases/latest/'

## Create a web request to retrieve the latest release download link

 $request = [System.Net.WebRequest]::Create($url)

 $request.AllowAutoRedirect=$false

 $response=$request.GetResponse()

 $source = $([String]$response.GetResponseHeader("Location")).Replace('tag','download') + '/OpenSSH-Win64.zip'

## Download the latest OpenSSH for Windows package to the current working directory

 $webClient = [System.Net.WebClient]::new()

 $webClient.DownloadFile($source, (Get-Location).Path + '\OpenSSH-Win64.zip')

# Verifica la presenza del file ZIP 

Get-ChildItem *.zip

Estraggo 

# Extract the ZIP to a temporary location

 Expand-Archive -Path .\OpenSSH-Win64.zip -DestinationPath ($env:temp) -Force

# Move the extracted ZIP contents from the temporary location to C:\Program Files\OpenSSH\

 Move-Item "$($env:temp)\OpenSSH-Win64" -Destination "C:\Program Files\OpenSSH\" -Force

# Unblock the files in C:\Program Files\OpenSSH\

 Get-ChildItem -Path "C:\Program Files\OpenSSH\" | Unblock-File

Installo OpenSSH 

& 'C:\Program Files\OpenSSH\install-sshd.ps1'

=========================================================================


Imposto il servizio 

## changes the sshd service's startup type from manual to automatic.

 Set-Service sshd -StartupType Automatic

## starts the sshd service.

 Start-Service sshd


#Aggiungo le regole di firewall

New-NetFirewallRule -Name sshd -DisplayName 'Allow SSH' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

oppure

# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify

if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {

    Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."

    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

} else {

    Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."

}


# Imposto Powershell come console predefinita per i collegamenti in SSH

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force


# Verifico la connessione con password (client)

ssh administrator@1.2.3.4

ssh scpuser@1.2.3.4


# Creo la coppia di chiavi per l'autenticazione (sul client)

ssh-keygen -t ed25519


# Creo la cartella dentro cui copiare la chiave pubblica *.pub (sul server)

New-Item -Type Directory -Path "C:\key_to_add\"


# Accedo al server ssh con un utente NON amministratore di macchina


# Creo directory e file dove salvare le chiavi pubbliche per accedere senza password - user

New-Item -Type Directory -Path $env:USERPROFILE\.ssh\

New-Item -Type File -Path $env:USERPROFILE\.ssh\authorized_keys


# Creo il file dove salvare le chiavi pubbliche per accedere senza password - admin

New-Item -Type File -Path C:\ProgramData\ssh\administrators_authorized_keys


# copio il file .pub sul server e la importo nel file delle chiavi (powershell come admin)

$authorizedKey = Get-Content -Path "C:\key_to_add\id_ed25519.pub"

Add-Content -Force -Path $env:USERPROFILE\.ssh\authorized_keys -Value "$authorizedKey"

Add-Content -Force -Path C:\ProgramData\ssh\administrators_authorized_keys -Value "$authorizedKey"


# Imposto i permessi del file copiandoli da un altro

get-acl C:\ProgramData\ssh\ssh_host_dsa_key | set-acl C:\ProgramData\ssh\administrators_authorized_keys


oppure


icacls.exe "C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"


# Verifico la connessione senza password (client)

ssh administrator@1.2.3.4

ssh scpuser@1.2.3.4


# verifico la copia dei file da remoto

scp administrator@1.2.3.4:'c:\sshtest\*.txt' .

scp administrator@1.2.3.4:'c:\sshtest\*.txt' C:\testw10\


N.B. attenzione, se sto eseguendo la powershell come admin potrebbe non funzionare.


# modifica sshdconfig aggiungendo quanto segue.

queste istruzioni limitano gli host da cui e possible accedere e consentono solo l'autenticazione tramite chiavi

=========================================================================#PasswordAuthentication yes

PasswordAuthentication no

ChrootDirectory C:\SSHTest

PermitTunnel no

#AllowAgentForwarding yes

AllowAgentForwarding no

#AllowTcpForwarding yes

AllowTcpForwarding no

GatewayPorts no


#AllowUsers scpuser@1.2.3.6 administrator@1.2.3.6

AllowUsers scpuser@1.2.3.6

#AllowUsers scpuser@1.2.3.6 administrator@1.2.3.6 scpuser@1.2.3.6 administrator@1.2.3.6

#AllowUsers scpuser gippi\scpuser@1.2.3.6 dmz\scpuser@1.2.3.6 scpuser@dmz.local@1.2.3.6 scpuser@dom.local@1.2.*

#AllowUsers dmz\scpuser@1.2.3.6 scpuser@dmz.local@1.2.3.6

AllowUsers dmz\scpuser@1.2.3.6

DenyGroups Administrators

DenyGroups Administrators


Match user scpuser

ChrootDirectory C:\SSHTest

# ForceCommand internal-sftp

PermitTunnel no

AllowAgentForwarding no

AllowTcpForwarding no

GatewayPorts no


#Match Group administrators

# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

# ChrootDirectory C:\SSHTest

# PermitTunnel no

# AllowAgentForwarding no

# AllowTcpForwarding no

# GatewayPorts no


# Match Group SSHUsers

# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

# ChrootDirectory C:\SSHTest

# # ForceCommand internal-sftp

# PermitTunnel no

# AllowAgentForwarding no

# AllowTcpForwarding no

# GatewayPorts no

=========================================================================


N.B.

i permessi processati nel seguente ordine:

DenyUsers

AllowUsers

DenyGroups

AllowGroups


# restart servizio

get-service -name sshd | restart-service


# verifica dell'accesso e della copia dei file (sul client)

scp scpuser@1.2.3.4:'*.txt' C:\sshtest\


# impostazione del servizio ssh-agent (sul client)

set-service ssh-agent StartupType 'Automatic'

Start-Service ssh-agent

ssh-add "C:\Users\user\.ssh\id_ed25519" (eseguire con l'utente che deve effettuare la copia)


# Creazione archivio protetto da password della cartella C:\Users\user\.ssh\

prima di procedere alla rimozione procedere alla creazione di un archivio protetto che contiene priv key, pub key e known_hosts. salvare il file in un posto sicuro


# Cancellazione chiave privata (solo dopo aver impostato l'agent)

remove-item "C:\Users\user\.ssh\id_ed25519"


REFERENCE

https://docs.microsoft.com/it-it/windows-server/administration/openssh/openssh_overview

https://github.com/powershell/win32-openssh/wiki

https://adamtheautomator.com/openssh-windows/

https://techietown.info/2017/05/restrict-ssh-access-for-users-from-specific-ip-address/

http://woshub.com/using-ssh-key-based-authentication-on-windows/

https://www.concurrency.com/blog/may-2019/key-based-authentication-for-openssh-on-windows

https://social.technet.microsoft.com/Forums/en-US/251804c1-883e-4ec8-a378-352dabbe87dd/openssh-server-install-failed-contact-your-administrator-to-get-this-feature?forum=ws2019

https://thesysadminchannel.com/solved-add-windowscapability-failed-error-code-0x800f0954-rsat-fix/

https://bobcares.com/blog/install-and-configure-openssh-on-windows/

https://winscp.net/eng/docs/guide_windows_openssh_server

https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_server_configuration

https://docs.microsoft.com/en-us/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui


Installazione OpenSSH su Windows Server

Windows Server 2019 e Windows 10 tra le APP includono anche un server OpenSSH

Questo server consente il trasferimento sicuro di file da un server ad un'altro usando il protocollo SSH.

La porta utilizzata e' la 22.

Aprire powershell e digitare il seguente comando per verificare se e' gia installato

Get-WindowsCapability -Online | ? name -like "openssh*"

Eseguire il seguente comando per installare il server SSH

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Il primo problema che ho incontrato e' stata l'installazione. Se nella rete locale e' bloccato l'accesso di 

Windows Update verso l'esterno anche l'installazione delle app ed il Microsoft store potrebbero essere 

impattati (quasi sicuramente lo saranno).


ERRORE RISCONTRATO

=========================================================================Add-WindowsCapability : Add-WindowsCapability failed. Error code = 0x800f0954

At line:1 char:1

+ Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : NotSpecified: (:) [Add-WindowsCapability], COMException

    + FullyQualifiedErrorId : Microsoft.Dism.Commands.AddWindowsCapabilityCommand

=========================================================================

E possibile verificare i log dell'ionstallazione qui:

C:\Windows\Logs\DISM\dism.log


Per risolvere ho dovuto modificare le impostazioni delle policy locali del server.

Computer Configuration\Administrative Templates\System

Specify settings for optional component installation and component repair: Enabled

ed abilitare il flag sull'opzione

Download repair content and optional features directly from Windows Update instead of Windows Server Update Services (WSUS)

Attendere un attimo per dare il tempo alla policy di venire elaborata e quindi rieseguire l'installazione

Get-WindowsCapability -Online | ? name -like "openssh*"

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

Se tutto ha funzionato correttamente vedremo questi 2 servizi installati in Windows:

OpenSSH Authentication Agent

OpenSSH SSH Server

Perfetto. Siamo riusciti ad installare OpenSSH.
Adesso non rimane che configurarlo e collegarsi per verificarne il funzionamento
I passaggi successi sono configurare il server e verificarne il funzionamento.

venerdì 19 agosto 2022

Installazione componenti di Windows

 Molto spesso nelle reti aziendali gli aggiornamenti sono distribuiti internamente, bloccando l'accesso a Windows Update. Questa e' una situazione sana per diversi motivi: occupazione di banda, gestione degli aggiornamenti. Bloccare l'aggiornamento a Windows Update, purtroppo porta anche ad alcuni disservizi. Si porta a malfunzionamenti di Windows Store (che salvo rare eccezioni non serve) e all'impossibilita di installare alcuni componenti di Windows come RSAT, o nel mio caso OPENSSH server (potrei aggirare scaricando ed installando manualmente il tutto).

Ad ogni modo ho bisogno di sbloccare la possibilita del sistema in questione di scaricare i componenti opzionali di Windows. Ho fatto in questo modo:

gpedit.msc - computer - Administrative template - System - Specify setting for optional component installation and component repair = enable

Flag sulla voce: Download repair content and optional ...

quindi eseguire il comando

gpupdate /force per aggiornare le policy.

Nel mio caso ha funzionato senza riavvio

 

giovedì 4 agosto 2022

Teams - impossibile accedere - CAA20002 AADSTS1002016 - errore TLS

Ciao a tutti,

non riuscivo ad accedere a Teams, e Word mi chiedeva di rieffettuare l'accesso con il mio account.

Anche se un po scettico ho provato a seguire il consiglio dell'articolo riportato in fondo. La cosa che mi ha sbalordito di piu e' che ha funzionato!!!

Errore TLS - CAA20002 AADSTS1002016

Risoluzione:

pannello di controllo - opzioni internet - impostazioni avanzate - ripristina impostazioni avanzate

Credo che siano state reimpostate le impostazioni TLS.

========================================================

Hello friend, my name is Lucas and I'm from Brazil but I know how to help you. Go to "Control Panel" then "Internet Options", then click the "Advanced" tab, then click "Restore Advanced Settings", click "Apply" and then "OK". Hope this helps !

========================================================

REFERENCE

https://community.spiceworks.com/topic/2458811-teams-error-caa20002


mercoledì 3 agosto 2022

Powershell - Matrici Array

In powershell e' molto importante saper maneggiare matrici ed array. Un'altra cosa molto importante e' capire se si sta lavorando con degli oggetti o con dei valori. I primi sono dotati di proprieta che e' possibile interrogare e modificare. I secondi sono oggetti molto piu semplici. Lavorando con ImportExcel ho acquisito un intero foglio di lavoro in una singola variabile. A questo punto dovevo capire come maneggiarla. 

Importare il conenuto del foglio VpnUsers in una variabile

$test = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15

$test2 = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers


Visualizzo il contenuto delle variabili. Sembrerebbero degli arrays (vedo un simbolo @)

write-host $test

write-host $test2

Verifico il tipo esatto di variabile 

$test.gettype()

$test2.gettype()

$test.gettype() | fl

$test2.gettype() | fl


Verificare i tipi di elementi di una matrice

$test |get-member


Contare gli elementi dell'arrays

Se il risultato mi dice che ho 14 elementi, significa che l'array ha gli elementi da [0 a 13] valorizzati. L'elemento [14] non e' valorizzato

$test.count


Cosa contiene il primo elemento della matrice

$test[0]

Cosa contengono il primo ed il tredicesimo elemento

$test[0,12]


Ruotare i valori della matrice

Per utilizzare gli elementi, probabilmente dovro ruotarli, con un ciclo foreach o simile


$test = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers

$test | ForEach-Object {"Item: [$PSItem]"}


foreach ( $node in $test ) {

"Item: [$node]"

}



Matrici di oggetti


Matrici oggetti

Le matrici possono anche contenere degli oggetti, come elementi.


Esempio

$data = @(

    [pscustomobject]@{FirstName='Kevin';LastName='Marquette'}

    [pscustomobject]@{FirstName='John'; LastName='Doe'}

)


Esempio

$processList = Get-Process


La caratteristica principale degli oggetti e che essi hanno delle proprieta

ESEMPIO


$temp[0]  - mi restituisce il contenuto del singolo elemento

$test[0].givenname - mi restisce il valore della colonna givenname per il primo record


Elencare il contenuto del campo Surname di tutti gli elementi dell'array

$test | ForEach-Object {$_.Surname}


In alcuni casi potrebbe essere necessario le proprieta estese

$test | Select-Object -ExpandProperty LastName


Filtrare il contenuto di un'array


Vengono restituiti tutti gli elementi con Marco nel givenname

$test | Where-Object {$_.givenname -eq 'Marco'}

$data | Where FirstName -eq Kevin


REFERENCE

https://docs.microsoft.com/it-it/powershell/scripting/learn/deep-dives/overview?view=powershell-7.2

https://docs.microsoft.com/it-it/powershell/scripting/learn/deep-dives/everything-about-arrays?view=powershell-7.2


Powershell - importexcel

Mi e' capitato di dover lavorare con il modulo powershell ImportExcel. Questi sono alcuni degli appunti che mi sono segnato. 

get-services | Export-excel -now

Crea il file 

get-services | Export-excel c:\temp\testdemo.xlsx

Crea il file e lo apre

get-services | Export-excel c:\temp\testdemo.xlsx -show

Crea il file e lo apre, impostando filtri sulle colonne ed autosize

get-services | Export-excel c:\temp\testdemo.xlsx -show -autosize -autofilter

Cancellare un file 

rm test.xlsx -ErrorAction Ignore

Usare la formattazione condizionale

$data = get-service | Select Status, Name, DisplayName, StartType

$data | Export-Excel test.xlsx -Show -Autosize

rm test.xlsx -ErrorAction Ignore

$text1 = New-ConditionalText stop

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $text1

$text2 = New-ConditionalText runn Blue Cyan

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $text1, $Text2

$text3 = New-ConditionalText svc Wheat Green

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalText $Text1, $Text2, $$Text3

$data = get-process | Where Company | Select Company, Name, PM, Handles, *mem*

$cfmt = New-ConditionalFormattingIconSet -range "C:C" -ConditionalFormat ThreeIconSet - IconType Arrows

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalFormat $cfmt

$ctext = New-ConditionalText Microsoft Wheat Green

rm test.xlsx -ErrorAction Ignore

$data | Export-Excel test.xlsx -Show -Autosize -ConditionalFormat $cfmt -ConditionalText $ctext

Importare i valori dal foglio di lavoro

import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15

DEMO

1 - Compilare un file  excel

ps excel -ErrorAction ignore | kill

$xl =  New-Object -ComObject excel.application

$xl.visible =  $True

$wb = $xl.workbooks.add()

$ws = $wb.worksheets["Sheet1"]

$ws.Cells[1,1].value = "ID"

$ws.Cells[1,2].value = "Product"

$ws.Cells[1,3].value = "Quantity"

$ws.Cells[1,4].value = "QPrice"

$ws.Cells[1,5].value = "Value"

$ws.Cells[2,1].value = 12001

$ws.Cells[2,2].value = "Nails"

$ws.Cells[2,3].value = 37

$ws.Cells[2,4].value = 3,99

$ws.Cells[2,5].formula = "=C2*D2"

$ws.Cells[3,1].value = 12002

$ws.Cells[3,2].value = "Hammer"

$ws.Cells[3,3].value = 5

$ws.Cells[3,4].value = 12,10

$ws.Cells[3,5].formula = "=C3*D3"

$ws.Cells[4,1].value = 12003

$ws.Cells[4,2].value = "Saw"

$ws.Cells[4,3].value = 12

$ws.Cells[4,4].value = 15,37

$ws.Cells[4,5].formula = "=C4*D4"

2 - creare un file excel con contenuto

#Hello World

"Hello World" | Export-Excel

3 - Creare una colonna con intestazione Data ed inserire hello world come primo valore

[PSCustomObject]@{Data="Hello World"} | Export-Excel

4 - chiudere il processo di excel e rimuovere eventuali file creati per test

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

5 - esportare tutti i processi in excel

get-process |export-excel '.\demo.xlsx'

invoke-item .\demo.xlsx (si apre solo se excel e' installato)

6 - esportare solo alcune proprieta dei processi in excel

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

get-process | select company, pm, handles | export-excel '.\demo.xlsx' -show

7 - importare dati da un csv ed esportarle in excel

ps excel -ErrorAction Ignore

rm '.\demo.xlsx' -ErrorAction Ignore

import-csv data.csv | Export-Excel test.xlsx -show -TableName Itemms -AutoSize

8 - importare dati da un file excel in una variabile per poi elaborarli

$UserA = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers

9 - importare dati da un file excel, solo alcune colonne, in una variabile per poi elaborarli

$UserB = import-excel .\elencoUtenti.xlsx -WorksheetName VpnUsers -ImportColumns @(1,2,3,4,5,6,7,8,9,10,11,12) -startrow 1 -endrow 15


Powershell - Lavorare con i moduli - ImportExcel

Powershell gallery e' il repository di Microsoft per script moduli aggiuntivi powershell.

E' possibile eseguire diversi comandi direttamente da powershell per esplorare cosa e' disponibile e per importarlo

Attualmente sono alla ricerca di un modulo powershell  che permetta di interfacciarsi ad excel senza che sia installato sul pc/server stesso.

Sopra trovate i riferimenti del modulo  che ho trovato.


Visualizzare l'elenco dei moduli installati

Get-InstalledModule

Cercare moduli powershell per excel

Find-Module *excel*


Ricerco tutte le versioni disponibili di un modulo specifico

Find-Module importexcel -allversions

PS C:\Script\Azure>Find-Module importexcel

Version    Name                                Repository           Description

-------    ----                                ----------           -----------

7.8.0      ImportExcel                         PSGallery            PowerShell module to import/export Excel spreads...


Installazione di un modulo

Find-Module importexcel | Install-Module

oppure

install-module ImportExcel


Verificare quali comandi il modulo mette a disposizione

get-command -module ImportExcel


N.B. 
Uno degli utilizzi del modulo ImportExcel e' quello di poter utilizzare file Excel senza che questo sia installato.

REFERENCE

https://www.powershellgallery.com/packages/ImportExcel/7.4.1

https://www.youtube.com/watch?v=U3Ne_yX4tYo&list=PL5uoqS92stXioZw-u-ze_NtvSo0k0K0kq

https://github.com/dfinke/ImportExcel

https://www.youtube.com/watch?v=4Xw7r6436w0


POWERSHELLGET

Puo capitare di dover installare dei moduli in powershell. Per fare questo ci viene in aiuto PowershellGet, che soprattutto nelle prome versioni di powershell richiede un po di preparazione. Questi sono un po di appunti che mi sono preso la prima volta che ho dovuto utilizzarlo.

prereq net framework 4.5 e superiori

Necessario da powershell 5.1 e precedenti

Abilita TLS 1.2

[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12

Per funzionare richiede che sia installati il NuGet provider

Install-PackageProvider -Name NuGet -Force

Installare powershellGet

Install-Module PowerShellGet -AllowClobber -Force

Registrare il repository Powershell gallery come repository attendibile

Set-PSRepository -Name PSGallery -InstallationPolicy Trusted

REFERENCE

https://docs.microsoft.com/it-it/nuget/what-is-nuget

https://docs.microsoft.com/it-it/powershell/scripting/gallery/installing-psget?view=powershell-7.2


Windows update notification

Puo capitare che ci siano programmi o procedure automatizzate che sono disturbate  da banner e messaggi a schermo, dio cui Windows 10 e le ultime versioni di Windows 10 sono ricche. Nel mio caso specifico mi riferisco al banner degli aggiornamenti pronti da installare di Windows 10.

I banner (NAG screen) di Windows viene periodicamente attivato da un processo schedulato presente in Task Scheduler - Microsoft - Windows - UpdateOrchestrator - USO_UxBroker.

La soluzione piu semplice e' ovviamente quella di disattivare questo task. Esiste una piccola complicazione nel farlo. Il task gira nel contesto del LocalSysytem e quindi occorre usare qualche tool come psexec, ad esempio. Nel mio caso, pr evitare di far scattare mille allarmi di sicurezza per attivita pericolose o sospette ho preferito lasciar perdere.

La soluzione alternativa che ho trovato e che nel mio caso sta funzionando e' stata quella di schedulare l'esecuzione di un batch:

C:\Windows\System32\taskkill.exe /im MusNotification.exe /f

C:\Windows\System32\taskkill.exe /im MusNotifyIcon.exe /f

net stop UALSVC && net start UALSVC

Che sta funzionando piuttosto bene. In poarticolare e' stato risolutivo il riavvio del servizio "User Access Logging Service", che resetta tutte le notifiche.

lunedì 1 agosto 2022

Powershell - profilo

E' possibile personalizzare il profilo con cui si avvia powershell. Il motivo piu comune per farlo e' quello di includere delle funzioni, per poterle richiamare piu velocemente. 

Per farlo, avviare powershell, eseguire il seguente comando, e nel file che si apre includere il codice per personalizzarla.

notepad $profile