Category Archives: Powershell

Microsoft Azure: connettiti alle macchine virtuali dovunque e da qualsiasi device con PowerShell Web Access

connettersi alle macchine virtuali su Azure dovunque, in qualsiasi momento e con qualsiasi dispositivo con PowerShell Web Access

Vuoi gestire le tue Virtual Machine su Azure dal tuo Samsung Galaxy o iPhone?
Introdotta con Windows Server 2012, PowerShell Web Access è una nuova funzionalità di Windows Server che ti permette di amministrare il tuo Windows Server da un’interfaccia web-based. Una volta installata, potrai accedere a PowerShell da qualsiasi dispositivo, anche dal tuo cellulare.

Preoccupato per la sicurezza? Basta seguire le giuste indicazioni ed impostare il tutto nel modo corretto.
In questo articolo vediamo come installare PowerShell Web Access su una macchina virtuale in esecuzione su Azure.
Il motto è: “Connettersi dovunque, in qualsiasi momento e da qualsiasi dispositivo”.

Installare PowerShell Web Access su una VM in Azure
Prima di tutto, iniziamo installando PowerShell Web Access.
Entra nel portale di Azure e clicca su Virtual Machines. Scegli la tua VM, e con il tasto destro, seleziona la voce Connect.
ATTENZIONE: se il pulsante è inattivo, dovrai abilitare il Remote Desktop all’interno del Network Security Group (Inbound Rules).

Nella sessione Azure Remote Desktop, apri Windows PowerShell.
Posizionati tre linee più in basso per installare PowerShell Web Access.

1 Install-Windowsfeature WindowsPowerShellWebaccess-IncludeManagementTools
installare PowerShell Web Access

In questo scenario, il sistema dovrebbe creare un certificato, con scadenza a 90 giorni.

1 Install-PswaWebApplication -UseTestCertificate
installare PowerShell Web Access

Per concludere, dobbiamo creare una regola di autorizzazione.

1 Add-PswaAuthorizationRule -UserName * -ComputerName * -ConfigurationName *

installare PowerShell Web Access

Il simbolo * sta ad indicare che l’accesso può avvenire per ogni utente e da ogni computer.
Qui il processo è stato semplificato: in un vero ambiente ti raccomandiamo di restringere l’accesso permettendo solo ad utenti e computer affidabili di accedere a PowerShell Web Access.

Il prossimo step è creare una Inbound Rule che permetta l’accesso a PowerShell Web Access, il che significa che dobbiamo permettere https (443).

Creare una regola Azure Inbound Rule per HTTPS
L’accesso a PSWA viene stabilito attraverso HTTPS. Perciò, se non l’hai già configurato, dovrai abilitare l’accesso HTTPS.

Torna ora al portale Azure. Nella dashboard, clicca su Network Security Group.

installare PowerShell Web Access

Clicca su Inbound Security Rules e su Add.

installare PowerShell Web Access

Abilita la porta 443. Presta attenzione ad origine (Source) e destinazione (Destination).
Come detto in precedenza, qui il processo è stato semplificato. In un ambiente di produzione, dovresti ragionare a fondo sugli utenti a cui concedere l’accesso: puoi, ad esempio, limitarlo a specifici indirizzi IP.

installare PowerShell Web Access e limitare l'accesso a specifici indirizzi IP

A questo punto, clicca su OK.

Connettiti alla tua Sessione PowerShell Web Access
Aprite il browser che preferite e scrivete.

https://servername/pswa
o
https://IPAddress/pswa

Connettersi alla Sessione PowerShell Web Access

Inserisci il tuo username, password ed il nome del server che vuoi collegare.

Connettersi alla Sessione PowerShell Web Access

Se tutto è stato impostato nella maniera corretta, sarai dentro.

Connettersi alla Sessione PowerShell Web Access

Ovviamente, non è importante il browser o il dispositivo che stai utilizzando.
Da adesso in poi potrai connetteri al server dal tuo dispositivo mobile, sia esso uno smartphone o un iPad.

Connettersi alla Sessione PowerShell Web Access da iPad

Script PowerShell per scaricare le foto e le slide di Microsoft Ignite

Download Microsoft Ignite

Tra il 26 ed il 30 Settembre 2016 si è svolto ad Atlanta Microsoft Ignite. Tutte le sessioni sono state registrate e si possono visualizzare su Channel9 o Youtube.
Ma se volessimo scaricare tutto il materiale per vederlo in modalità offline?

Ecco allora uno script PowerShell scritto da Vlad Catrinescu che ci permette di scaricare facilmente i video e le slides di Microsoft Ignite.

Punti di forza dello script:
• Scarica tutti i video e le slides di Microsoft Ignite 2016 Sessioni e riporta le descrizioni su file di testo
• Raggruppa le sessioni in cartelle
• Verifica che non ci siano errori causati da nomi di file illegali.
• In caso di interruzzione dello script, alla successiva esecuzione riparte da dove si è interrotto
• Possibilità di filtrare le sessioni per parole chiave inserite nel titolo
• Possibilità di scegliere tra video HD, o di qualità inferiore.

Download Microsoft Ignite 2016 Video Sessions

Per scaricare questo fantastico script visitate questo post

Azure AD Module – This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded

Se avviando il Modulo PowerShell Windows Azure Active Directory compare il seguente errore:

PowerShell Azure AD

Import-Module : Could not load file or assembly ‘file:///C:\Windows\system32\WindowsPowerShell\v1.0\Modules\MSOnline\Microsoft.Online.Administration.Automation.PSModule.dll’ or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded.

At line:1 char:14

Import-Module <<<< MSOnline
CategoryInfo : InvalidOperation: (:) [Import-Module], BadImageFormatException
FullyQualifiedErrorId : FormatXmlUpateException,Microsoft.PowerShell.Commands.ImportModuleCommand

possiamo risolvere la problematica installando Windows Management Framework 3.0 scaricabile da questo link: https://www.microsoft.com/en-us/download/details.aspx?id=34595

Invio mail tramite Office365 via Powershell

Per testare il sistema SMTP di Office365 è possibile usare powershell per spedire una mail.
Di seguito i cmdlets che permettono di autenticarsi a Office365 e spedire una mail con tanto di allegato:

$secpasswd = ConvertTo-SecureString “InsertPasswordHere” -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential (“MyEmail@domain.com”, $secpasswd)

Send-MailMessage -To "simon@domain.com" -Cc "simon@otherdomain.com" -Attachments "d:\logs\log1.txt","d:\logs\log2.txt","d:\logs\log3.log" -SmtpServer "smtp.office365.com" -Credential $mycreds -UseSsl "Backup Notification" -Port "587" -Body "This is an automatically generated message.
Your server backup has been successful.
Please remember to swap your hard drives when you return to the office for the continuing safety of your data
Best regards
Your Support Bot" -From "support@domain.com" -BodyAsHtml

Script PowerShell per il backup dei database MySql

Dopo aver creato vari siti Joomla e WordPress su Microsoft Azure sfruttando i DB gratuiti di ClearDb, abbiamo attivato una VM (ovviamente su Azure) con MySQL server dove abbiamo spostato i database potendo così superare il limite di 20Mb e delle 4 connessioni.
Per mettere in sicurezza i database abbiamo creato il seguente script PowerShell:

cls

Function bkmysql ($x)
{

$server = "127.0.0.1"
$user = "xxx"
$password = "xxx"
$backupFolder = "F:\MYSQL\Backups\"
$dbName = $x
$MySQLDumpPath = "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqldump.exe"
$limit = (Get-Date).AddDays(-7) # file rentention period.

#--- Format timestamp for the filename
$timestamp = Get-Date -format yyyyMMdd
#Write-Host $timestamp

write-host "Backing up database: " $dbName

#--- Set backup filename
$filename = $dbName + "_" + $timestamp + ".sql"
$fullPath = $backupFolder + "" + $filename

#--- Invoke backup Command.
cmd /c " ""$MySQLDumpPath"" -u $user --password=$password $dbname > $fullPath "
If (test-path($fullPath))
{
write-host "Backup created."
}

#--- Check if 7z is present. Alias for 7-zip. May need to change path below.
if (-not (test-path "C:\Program Files\7-Zip\7z.exe")) {throw "C:\Program Files\7-Zip\7z.exe required"}
set-alias sz "C:\Program Files\7-Zip\7z.exe"

$zipfile = $backupFolder + $dbName + "_" + $timestamp + '.zip'
$from = $fullPath

sz a -tzip $zipfile $from

remove-item "$from"

#--- Delete Files
Get-ChildItem -Path $backupFolder -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force
}

bkmysql db1
bkmysql db2
bkmysql dbx

Lo script esegue il backup dei database, ne esegue la compressione e cancella i vecchi backup più vecchi di una certa data impostabile tramite variabile.