Azure: come rimanere aggiornati

Il mondo di Azure è in continua e veloce evoluzione e rimanere aggiornati sulle ultime novità non sempre è semplice.

In questo articolo, alcuni suggerimenti per come non perdere nessuna novità sul cloud targato Microsoft.

Tutte le novità e aggiornamenti vengono pubblicati sul sito Azure Updates. Iscrivendosi ai feed RSS si può rimanere costantemente aggiornati.

Azure Heat Maps è uno strumento scritto da non di Microsoft che visualizza gli ultimi aggiornamenti in maniera grafica ed avere una panoramica immediata delle ultime novità. E’ possibile filtrare gli aggiornamenti per tecnologia, paese e altro.

Schermata di Azure Heat Map

Un altro metodo per rimanere aggiornati è quello di seguire sui social come LinkedIn le pagine ufficiali.

Troubleshooting: Azure Application Gateway e “Inbound Anomaly Score Exceeded”

Scenario:
In Azure, un Application Gateway gestisce gli accessi ad un sito web.
Provando ad accedere al sito dall’esterno, la pagina non viene visualizzata correttamente

Soluzione:
Andando ad analizzare i log dell’Application Gateway (vedere il seguente link per abilitare la diagnostica: https://docs.microsoft.com/en-us/azure/application-gateway/application-gateway-diagnostics) è presente questo evento:

[…]
"ruleSetType": "OWASP",
"ruleSetVersion": "3.0",
"ruleId": "0",
"ruleGroup": "Default",
"message": "Mandatory rule. Cannot be disabled. Inbound Anomaly Score Exceeded (Total Score: 5)",
"action": "Blocked",
"site": "Global",
[…]


Generalmente, questo evento è generato quando la richiesta è stata bloccata da una o più cause. Il problema è quindi da ricercare nei log precedenti.

Powershell: script autenticazione su Azure CSP con scelta customer e subscription

Lo script sotto esegue l’autenticazioni su sottoscrizioni Azure di tipo CSP e la selezione della sottoscrizione da utilizzare tramite due menù di scelta.

<#
Requirement:
Powershell 5.1
Module: 
- Partner Center
- Az
#>

Import-Module PartnerCenter

Connect-PartnerCenter  
# Select customer
$customer = Get-PartnerCustomer | Out-GridView -Title "Select the partner and click OK" -PassThru

Login-Azaccount -TenantId $customer.CustomerId

# Select subscription
$Subscription = Get-AzSubscription | Out-GridView -Title "Select the Subscription and click OK" -PassThru
Select-AzSubscription -SubscriptionId $Subscription.Id -TenantId $Subscription.TenantId

Volendo, è possibile memorizzare le credenziali per evitare che vengano richieste due volte tramite il cmdlet “get-credential”. Nel momento in cui sto scrivendo, parrebbe che il comando “connect-partnercenter” generi un errore nel passaggio delle variabili (nonostante il fatto che l’autenticazione si concluda comunque con successo).

Disclaimer: nessuna garanzia è fornita con questo script. Lo scrivente non è responsabile di qualunque danno possa eventualmente derivarne – lo utilizzate a vostro rischio.

DPM (o Azure Backup Server): leggere il file di log FailedFilesLog.txt

In caso di errore ID 32538, il DPM generera un log in \?\Volume{VolumeGUID}\someID.
Il volume è posizionato in
– per il server Azure Backup
C:\Program Files\Microsoft Azure Backup Server\DPM\DPM\Volumes\Replica
– Per il DPM “classico”
C: \Program Files\Microsoft DPM\DPM\Volumes\Replica\servername\File System

Se si prova ad accedere al volume, può dare un errore di “access deny”

Per poter quindi aprire il file:

  • scariacre il tool PSEXEC (www.sysinternals.com)
  • da una command line con privilegi amministrativi eseguire il comando “psexec64 -I -d -s c:\windows\explorer.exe
  • dalla nuova finestra, accedere al file FailedFilesLog.txt

Enterprise Vault: could not load file or assembly kvs.enterprisevault.interop.evpstapi

Scenario.
Server con installata la console di Enterprise Vault.
Script per l’esportazione degli archivi in PST (requisito: da avviare in Poweshell 23 bit)
Verifica se il modulo è di Etnerprise Vault è installato
if (!(Get-Module "enterprisevault")) {import-module enterprisevault}
$exportTOpst = import-csv "C:\temp\test.csv" -Delimiter ";"
foreach ($archive in $exportTOpst){
Write-Host -ForegroundColor Magenta "Dearchiviazione dell'archivio "$archive.ArchiveName
Export-EVArchive -ArchiveId $archive.archiveID -Format PST -OutputDirectory D:\Temp -MaxPSTSizeMB 51200
}

Problema
Durante l’esecuzione dello script, viene generato l’errore “could not load file or assembly kvs.enterprisevault.interop.evpstapi”

Soluzione
Copiare nella directory di installazione di Enterprice Valut (p.e. C:\Program Files (x86)\Enterprise Vault) il file KVS.EnterpriseVault.Interop.EVPstApi.dll (presente nel server EV) e riavviare i servizi di EV

Hyper-V 2016: The cluster request in not valid for this object (error 0x800713b8)

In un cluster di test basato su Windows 2016 stavo configurando un CSV. Entrambi i nodi del cluster erano configurati anche come Domain Controler.
Al momento di aggiungere il disco CSV viene notificato dal sistema che l’operazione fallisce con il messaggio sotto riportato:

Error code 0x800713b8: The cluster request in not valid for this object

Mentre fino a Windows 2012 R2 si poteva configurare un nodo di un cluster anche come Domain Controller, pur se altamente sconsigliato, in Windows 2016 questo non è più possibile.

Occorre disinstallare il ruolo da DC e configurare successivamente il disco come CSV. Nel mio caso ho dovuto anche distruggere il cluster e rifarlo.

Powershell: script per configurare la scheda di rete in DHCP o con IP statico

Script per configurare la scheda di rete in DHCP o con IP statico. Permette di scegliere quale scheda di rete configurare.

function show-menu-DHCP-or-static
{
    cls
    Write-Host "Press '1' DHCP"
    Write-Host "Press '2' Static"
}

function DHCP {
    $IPtype = "IPv4"
    $interface = $adapter | Get-NetIPInterface -AddressFamily $IPtype

    If ($interface.Dhcp -eq "Disabled") {
        # Remove existing gateway
        Write-Host "Removing existing gateway"
        If (($interface | Get-NetIPConfiguration).Ipv4DefaultGateway) {
            $interface | Remove-NetRoute -Confirm:$false
        }

        # Enable DHCP
        Write-Host "Enabling DHCP on interface"
        $interface | Set-NetIPInterface -DHCP Enabled

        # Configure the  DNS Servers automatically
        Write-Host "Enabling automatic DNS"
        $interface | Set-DnsClientServerAddress -ResetServerAddresses
    }
}

function Static-IP {
    #Variable
    $IP = Read-Host "IP Address"
    $CIDR = Read-Host "CIDR"
    $GW = Read-Host "Gateway"
    $DNS = Read-Host "DNS"
    $IPtype = "IPv4"

        # Remove any existing IP, gateway from our ipv4 adapter
    If (($adapter | Get-NetIPConfiguration).IPv4Address.IPAddress) {
        Write-Host "Removing existing IP"
        $adapter | Remove-NetIPAddress -AddressFamily $IPType -Confirm:$false
    }

    If (($adapter | Get-NetIPConfiguration).Ipv4DefaultGateway) {
        Write-Host "Removing existing gateway"
        $adapter | Remove-NetRoute -AddressFamily $IPType -Confirm:$false
    }

    # Configure the IP address and default gateway
    Write-Host "Configuring new IP"

    $adapter | New-NetIPAddress -AddressFamily $IPType -IPAddress $IP -PrefixLength $CIDR -DefaultGateway $GW

    # Configure the DNS client server IP addresses
    Write-Host "Configuring new gateway"
    $adapter | Set-DnsClientServerAddress -ServerAddresses $DNS
}

#Selection NIC
$nic = Get-NetAdapter | select name

For ($i = 0; $i -lt $nic.Length; $i++){
    $str = ($i + 1).ToString();
    $str = $str + " - ";
    $str = $str + $nic[$i].name;
    Write-Host($str);
}

$response = Read-Host "Type the network number";

$SelectedNic = $nic[$response-1].name;

$adapter = Get-NetAdapter | Where-Object {$_.Name -eq $SelectedNic}
###

#DHCP or Static
show-menu-DHCP-or-static
$Input = Read-Host "Please make a selection"
switch ($input) {
    '1' {
        $Type = 'DHCP'
        DHCP
    }
    '2' {
        $Type = 'Static'
        Static-IP
    }
}

Disclaimer: nessuna garanzia è fornita con questo script. Lo scrivente non è responsabile di qualunque danno possa eventualmente derivarne – lo utilizzate a vostro rischio.

OneNote non presente nelle installazioni di Office 365 e Office 2019

Microsoft ha deciso di non distribuire più di default OneNote con Office 365 e Office 2019.

I workaround indicati sono 2:

Maggiori info:

https://docs.microsoft.com/en-us/deployoffice/deployment-guide-onenote

https://support.office.com/en-us/article/onenote-2016-is-missing-after-installing-office-2019-or-office-365-1844ba87-7248-4bd8-a735-66a52f98e6e5

Hyper-V 2016: come condividere dischi virtuali tra Virtual Machine

In Hyper-V 2016 è stata introdotta una nuova features per poter condividere i dischi virtuali, ovvero i VHD Set (VHDS).

A differenza dei dischi VHD e VHDX condivisi che limitano alcune operazioni, con i VHD Set sono supportate le operazioni come la live migration, resizing “a caldo”, snapshot. Per più informazioni rimando alla documentazione ufficiale: https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v/manage/create-vhdset-file

Creazione e configurazione di un VHDS:
– Dalla console di gestione di Hyper-V, “New” – Hard Disk…”
– Come formato del disco scegliete VHD Set e completare il wizard.

Error applying shared driver

NOTA. Per evitare l’errore “The storage where the virtual hard disk is located does not support virtual hard disk sharing”, il vhds deve essere salvato in una LUN\volume che sia condivisa (per esempio un CSV).

– Dalla configurazione della VM alla quale si deve attestare il disco, “Scsi Controller – Shared Drive” e cliccare su Add.
– Specificare il path di dove risiede il VHDS e cliccare su OK.

Windows 10: impostare uno sfondo diverso per ogni monitor

Chi usa più monitor potrebbe voler impostare uno sfondo diverso per ciascuno di questi.

Per poterlo fare:

  1. Andare nella schermata di personalizzazione del monitor facendo o premendo il tasto destro del mouse sul desktop e cliccare su “Personalizza” oppure tramite il comando control /name Microsoft.Personalization /page pageWallpaper
  2. Cliccare col tasto destro del mouse sullo sfondo che si vuole impostare e selezionare il monitor al quale lo si vuole configurare