Powershell – recuperare informazioni dischi

Piccolo script per recuperare le seguenti informazioni sui dischi:

  • Nome
  • Etichetta
  • Allocation Unit Size
  • Dimensionamento
  • Spazio libero

 

Get-CimInstance -ClassName Win32_Volume | Select-Object Name, Label, BlockSize, @{n='Size (Gb)' ;e={"{0:n2}" -f ($_.capacity/1gb)}},@{n='FreeSpace (Gb)';e={"{0:n2}" -f ($_.freespace/1gb)}} | ft -AutoSize

L’output sarà similare a questo:

Configurare una Virtual Machine con Windows Nano Server in Hyper-V

Requisiti: ISO Windows Server 2016

Montare la ISO. Per comodità, l’ho scompattata sul disco locale nel percorso: c:\NanoServer\Files

All’interno della directory locale C:\NanoServer, oltre al contenuto della ISO, ho copiato i moduli Powershell.

NanoServer Folder

NanoServer Folder

 

 

 

Da Powershell:

#Preparazione area di lavoro
cd C:\NanoServer
Import-Module .\NanoServerImageGenerator.psm1
#Creazione del VHDX
New-NanoServerImage -MediaPath .\Files -BasePath .\Base -TargetPath .\Images\NanoServer.vhdx -MaxSize 20GB -DeploymentType Guest -Edition Datacenter -ComputerName "NanoServer"

Dove:

  • MediaPath: percorso di dove sono memorizzati i file di Windows Server 2016
  • BasePath: Percorso dove vengono memorizzati i dati temporanei
  • TargetPath: percorso dove verrà memorizzato il disco creato. VHD per VM di Generazione 1, VHDX per VM di Generazione 2
  • MaxSize: dimensione massima del disco. Nel caso non venga inizializzato questo valore, il valore di default è 4 GB.
  • DeplymentType: Guest per macchine virtuali, Host per macchine fisiche
  • Edition: Standard o Datacenter
  • ComputerName: nome della macchina

Per l’elenco completo dei parametri, fare riferimento alla TechNet: https://technet.microsoft.com/itpro/powershell/windows/nanoserverimagegenerator/new-nanoserverimage

Collegare il disco in una nuova macchina virtuale Hyper-V e avviarla.

NanoServer in Hyper-V

NanoServer in Hyper-V

 

Internet Explorer 11 e ADFS: This page can’t be displayed

Provando ad accedere a SharePoint online con autenticazione tramite ADFS, Internet Explorer 11 risponde “This page can’t be displayed” al momento di caricare la pagine per l’autenticazione (in pratica, non riusciva a visualizzare la pagina https://<dominio>/adfs/ls/auth/…).

Tutto bene invece con gli altri browser (Chrome, Edge e Firefox).

Questo mi impediva di accedere a SharePoint online anche dalla suite Office (Excel e Word): al momento dell’autenticazione, la procedura terminava senza dare alcun errore… semplicemente si chiudeva la finestra.

Non sono servite le seguenti operazioni:
– Cancellazione file temporanei di IE
– Restore ai settaggi di default
– Eliminazione delle credenziali in Credential Manager

 

Ho risolto il problema andando a disattivare l’opzione “Enable Integrated Windows Authentication” nelle proprietà avanzate di Internet Explorer.

Riavviato Internet Explorer tutto ha funzionato correttamente.

Creare lista delle VM configurate in Azure Resource Manager con Powershell

Il seguente script esporta in un file CSV la lista e le configurazioni delle VM configurate in Azure Resource Manager.

Configurazioni esportate:

  • Nome macchina
  • Resource Group
  • Utenza amministratrice locale
  • Indirizzo IP
  • Informazioni dischi
$vms = get-azurermvm
$nics = get-azurermnetworkinterface | where VirtualMachine -NE $null 
$VMArray = @()

foreach($nic in $nics)
    {
        $vm = $vms | where-object -Property Id -EQ $nic.VirtualMachine.id
        $IPprv =  $nic.IpConfigurations | select-object -ExpandProperty PrivateIpAddress
        $AlMeth =  $nic.IpConfigurations | select-object -ExpandProperty PrivateIpAllocationMethod
        
        $VMArray += New-Object PSObject -Property @{`
        Name = $vm.Name;
        ResourceGroup = $vm.ResourceGroupName;
        AdminUserName = $vm.AdminUsername;
        PrivateIPAddress = $IPprv ;
        IPAllocation = $AlMeth;
        Location = $vm.Location;
        Size = $vm.HardwareProfile.VmSize;
        ImageSKU = $vm.StorageProfile.ImageReference.Sku;
        OSType = $vm.StorageProfile.OsDisk.OsType;
        DataDiskCount = $vm.StorageProfile.DataDisks.Count;
        DataDisks = $vm.StorageProfile.DataDisks;
        }
    

}
$VMArray | export-csv "AzureRMInventory.csv"

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

Creare una VM in Azure tramite Powershell e ARM

AzureIl seguente sript crea una Vitual Machine in Azure tramite Powershell e Azure Resource Manager (ARM).

Elementi creati dallo script
  • Resource Group
  • Availability Set
  • Virtual Network e subnet
  • Network interface e Public IP
Caratteristiche VM

Sistema Operativo: Windows Server 2012 R2 DataCenter
Size: Standard A1

Prerequisiti

Powershell v. 5
Modulo Azure 3.0.0 (Installazione e configurazione di Azure Powershell)

#Variable
$rgName = Read-Host -Prompt 'Resource Group name';
$locName = 'West Europe';

#Create Resource Group
New-AzureRmResourceGroup -Name $rgName -Location $locName ;

#Create Availability Set
$asName = Read-Host -Prompt 'Availability Set name'
New-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $asName -Location $locName -PlatformUpdateDomainCount 2 -PlatformFaultDomainCount 2
$AvID = (Get-AzureRmAvailabilitySet -ResourceGroupName $rgName -Name $AsName).id

#Create subnet
$newSubnetParams = @{
    'Name' = Read-Host -Prompt 'Subnet name'
    'AddressPrefix' = '10.0.0.0/24'
}
$subnet = New-AzureRmVirtualNetworkSubnetConfig @newSubnetParams

#Create VirtualNet
$newVNetParams = @{
    'Name' = Read-Host -Prompt 'Network Name'
    'ResourceGroupName' = $rgName
    'Location' = $locName
    'AddressPrefix' = '10.0.0.0/16'
}
$vNet = New-AzureRmVirtualNetwork @newVNetParams -Subnet $subnet

#Create Storage Account
$newStorageAcctParams = @{
    'Name' = Read-Host -Prompt 'Storage Account name (lowercase)' 
    'ResourceGroupName' = $rgName
    'Type' = 'Standard_LRS'
    'Location' = $locName
}
$storageAccount = New-AzureRmStorageAccount @newStorageAcctParams

#Create Public IP
$newPublicIpParams = @{
    'Name' = Read-Host -Prompt 'Label Public IP'
    'ResourceGroupName' = $rgName
    'AllocationMethod' = 'Dynamic' ## Dynamic or Static
    'DomainNameLabel' = Read-Host -Prompt 'DNS name'
    'Location' = $locName
}
$publicIp = New-AzureRmPublicIpAddress @newPublicIpParams

#Create NIC
$newVNicParams = @{
    'Name' = Read-Host -Prompt 'NIC Name'
    'ResourceGroupName' = $rgName
    'Location' = $locName
}
$vNic = New-AzureRmNetworkInterface @newVNicParams -SubnetId $vNet.Subnets[0].Id -PublicIpAddressId $publicIp.Id

#Config VM - General
$newConfigParams = @{
    'VMName' = Read-Host -Prompt 'VM name'
    'VMSize' = 'Standard_A1'
    'AvailabilitySetId' = $AvID
}
$vmConfig = New-AzureRmVMConfig @newConfigParams

#Config VM - Operating System
$newVmOsParams = @{
    'Windows' = $true
    'ComputerName' = $newConfigParams.VmName
    'Credential' = (Get-Credential -Message 'Type the name and password of the local administrator account.')
    'ProvisionVMAgent' = $true
    'EnableAutoUpdate' = $true
}
$vm = Set-AzureRmVMOperatingSystem @newVmOsParams -VM $vmConfig

#Config VM - Image
$newSourceImageParams = @{
    'PublisherName' = 'MicrosoftWindowsServer'
    'Version' = 'latest'
    'Skus' = '2012-R2-Datacenter'
}
 
$offer = Get-AzureRmVMImageOffer -Location $locName -PublisherName MicrosoftWindowsServer
$vm = Set-AzureRmVMSourceImage @newSourceImageParams -VM $vm -Offer $offer.Offer

#Attach NIC to VM
$vm = Add-AzureRmVMNetworkInterface -VM $vm -Id $vNic.Id

#Config VM - Disk
$Saname = $newStorageAcctParams.name
$VmName = $newConfigParams.VmName
$osDiskName = $vmName+'_os'
$osDiskUri = 'https://'+$saname+'.blob.core.windows.net/vhds/'+$osDiskName+'.vhd'
 
$newOsDiskParams = @{
    'Name' = $osDiskName
    'CreateOption' = 'fromImage'
}
 
$vm = Set-AzureRmVMOSDisk @newOsDiskParams -VM $vm -VhdUri $osDiskUri

#Create Vm
New-AzureRmVM -VM $vm -ResourceGroupName $rgName -Location $locName

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

Windows 10: error 0xc004f014

Durante l’upgrade da Windows 10 Home a Windows 10 Pro mi veniva generato l’errore 0xc004f014 nonostante abbia inserito il codice della versione Pro.

0xc004f014

Per risolvere il problema è possibile eseguire l’attiviazione tramite il comando “SLUI 4” (chiamando quindi il supporto tecnico) oppure:

  1. posizionarti su “Settings” -> “Activation”
  2. cliccare su “Change product key”
  3. Immettere il codice temporaneo “VK7JG-NPHTM-C97JM-9MPGT-3V66T
  4. Si aprirà la finestra per l’aggiornamento dell’edizione di Windows. Questa operazione può durare anche un paio di ore
  5. Al riavvio, avrete disponibile la versione Pro di Windows 10. Dalla scheramata delle attivazioni, inserite il codice che avete acquistato per attivare Windows

GeoSetter: The map can’t be found

EDIT 30/05/2019: parrebbe che da agosto del 2018 questa modifica non sia più funzionante.
Onestamente, essendo passato ad altro per la gestione del geotagging delle foto, non ho più utilizzato GeoSetter e quindi non ho nemmeno più seguito la vicenda.
Sul forum del programma hanno pubblicato un modo per riabilitare la funzionalità della mappa. Ecco il link: http://www.geosetter.de/mantis/view.php?id=1970

Dopo l’ultimo aggiornamento di GeoSetter, il programma non riesce più a visualizzare la cartina di Google Maps raccomandando invece di verificare la configurazione per la navigazione su internet. Nello specifico, il messaggio indica che non riesce a trovare la pagina web “http://www.friedemann-schmidt.com/geosetter/gmap21.html“.

Per risolvere il problema occorre modificare l’indirizzo web sopra indicato con “http://www.geosetter.de/map_google.html

GeoSetter - Map File

  1. Dal menù, File e Settings
  2. Posizionarsi sul tab Map
  3. Sostituire la stringa Map files con “http://www.geosetter.de/map_google.html
  4. Riavviare il programma

Maggiori informazioni al seguente link: http://www.geosetter.de/mantis/view.php?id=567

StorSimple 8k: Operazioni di Troublesooting e Recovery Mode

Oltre alle operazioni di Troubleshooting su StorSimple serie 8000 riportate al seguente Link, possono tornare utili i seguenti comandi eseguibili sullo StorSimple collegandosi in PowerShell o da cavo seriale.

  • Abilitare il ping sulle schede di rete
    Enable-HcsPing
  • Verificare lo stato delle schede di rete
    Get-NetAdapter
  • Verificare lo stato del sistema
    Get-HcsSystem
  • Network
    Test-Connection
    Trace-HcsRoute
  • Verificare le impostazioni di rete, la connettività e la registrazione dell’apparato su Azure
    Test-HcsmConnection
  • Verificare lo stato del sistema (System Information, Update disponibili, servizi, versione firmware, etc)
    Invoke-HcsDiagnostics

Nel caso che una delle controller di trovi in “Recovery Mode” (sul portale Azure vedrete la controller in stato “Off”), purtroppo c’è poco da fare se non aprire una chiamata al supporto Microsoft… Per quanto basti un semplice comando per riabilitare la controller (Exit-HcsRecoveryMode).

Può accadere che una controller levata dallo stato di “Recovery Mode” abbia il componente “Cluster” in stato critico (visibile sempre dal portale Azure).
Anche questo per ripristinarlo occorre l’intervento del supporto Microsoft.
Tramite il comando
Get-ClusterNode
viene mostrato lo stato dei nodi del cluster StorSimple.

Resume-ClusterNode

eseguito dalla controller in stato “Paused”, avvia il servizio cluster

Aggiornato il 21 febbraio 2017 con StorSimple aggiornato all’Update 4

Cluster Hyper-V: configurazione schede di rete

Dovendo spesso configurare o revisionare le configurazioni delle schede di rete di Cluster Hyper-V, ho trovato comodo un articolo presente sul portale WindowsServer.it che riassume le Best Practice. L’articolo è consultabile a questo LINK.

Riporto di seguito le tabelle riassuntive.

Configurazione delle comunicazioni inter-node cluster

Allow cluster network communicationAllow clients to connect
StorageNo-
ClusterSiNo
Live MigrationSiNo
ManagementSiSi
ProductionNo-

Servizi attivi sulle schede di rete

StorageDisabilitare il Client Microsoft per la condivisione file e stampanti
Disabilitare tutti i protocolli tranne IPv4, IPv6, eventuali protocolli del produttore
Se supportati abilitare i Jumbo Frames con valori tra 9000 e 9014
ClusterAbilitare il Client Microsoft per la condivisione file e stampanti per supportare l’utilizzo delle feature dell’SMB 3.0 (SMB multi-channel e SMB Direct)
Impostare tale rete per comunicazioni CSV
Se supportati abilitare i Jumbo Frames con valori tra 9000 e 9014
Live MigrationAbilitare il Client Microsoft per la condivisione file e stampanti per supportare l’utilizzo delle feature dell’SMB 3.0 (SMB Direct)
Se supportati abilitare i Jumbo Frames con valori tra 9000 e 9014
Management Abilitare il Client Microsoft per la condivisione file e stampanti per supportare l’utilizzo delle feature dell’SMB 3.0
ProductionRimozione Client Microsoft per la condivisione file e stampanti
Abilitare VMQ (Virtual Machine Queue)

NOTA: nel caso si utilizzino schede di rete Broadcom, è probabile che sia da disattivare il servizio VMQ (Virtual Machine Queue) per evitare lentezze sul network.

 

Hyper-V: Failed while adding virtual Ethernet switch connection

Provando ad associare una scheda di rete ad un Virtual Switch, può succedere che l’operazione fallisca col messaggio di errore:

Failed while adding virtual Ethernet switch connection. External Ethernet adapter ‘nome-scheda’ is already bound to the Microsoft Virtual Switch Protocol

already-bound

Andando a verificare le impostazione della scheda di rete, effettivamente è presente il protocollo “Hyper-V Extensible Virtual Switch“… anche se la scheda di rete non è associata ad alcun Virtual Switch.

Per modificare (in questo caso eliminare) il binding della scheda di rete esiste il tool NVSPbind scaricabile da QUI

Eliminata l’associazione col comando

NVSPbind /u “nome scheda di rete”

è possibile riassociarla ad un Virtual Switch