PowerShell–Azure ‘Az’ Module

January 1, 2019

A few weeks ago there was a new Module released for Azure called, Azure PowerShell ‘Az’ Module version 1.0

Az runs on Windows PowerShell 5.1 and PowerShell Core (cross-platform)

It can be used side-by-side the existing AzureRM Module.

But new features will only be released in the Az module.

To install the new module run this command using Admin priviliges.

Install -Module -Name Az

image

To see if the installation was successful run this command

Get-Module -ListAvailable "Az*"

image

To list all the commands run this command

Get-Command -Name *Az*

image

The connection method has been changed compared to what you are used to.

The Get-Credential cmdlet is replaced with Connect-AzAccount

Once executed you will see this reply

image

Go to the URL https://microsoft.com/devicelogin and fill in the code you got using this command

Connect-AzAccount

image

For more info see here

How to migrate scripts from AzureRM to Az see here

Enjoy !!

Advertisements

Office 365 – Retrieve User Password Expiration Date

December 4, 2018

Sometimes it will be handy to scan your O365 User base on next Password Expiration Date.

This is done using PowerShell, like this.

First connect to your tenant and execute this script :

CLS

$cred = Get-Credential "your.credentials@company.com"

Connect-MsolService -Credential $cred

$domain = Get-MsolDomain | where {$_.IsDefault -eq $true}

$PasswordPolicy = Get-MsolPasswordPolicy -DomainName $domain.Name

$Account = "Account.ToCheck@company.com" # Change HERE !!

$UserPrincipal  = Get-MsolUser -UserPrincipalName $Account

$UserPrincipal | fl PasswordNeverExpires

$PasswordExpirationDate = $UserPrincipal.LastPasswordChangeTimestamp.AddDays($PasswordPolicy.ValidityPeriod)

Write-host "Password will Expire on : $PasswordExpirationDate"

$StartDate = (GET-DATE)
$DaysLeft = NEW-TIMESPAN -Start $StartDate -End $PasswordExpirationDate
$DaysLeft = [math]::Floor($DaysLeft.TotalDays)

Write-host "Password will Expire in # Days : $DaysLeft"

$UserPrincipal | select DisplayName, LastPasswordChangeTimeStamp,@{Name=”PasswordAge”;Expression={((Get-Date).ToUniversalTime())-$_.LastPasswordChangeTimeStamp}} | sort-object PasswordAge -desc

image

If you want to change the Password Policy to NEVER EXPIRE use this codereset

Set-MsolUser -UserPrincipalName $Account -PasswordNeverExpires $true

If you want to RESET the Password, use this code

Set-MsolUserPassword -UserPrincipalName $Account -NewPassword "PassWord"

Enjoy !


Windows 2016 – Hyper-V CheckPoints Disk Space

December 4, 2018

Once you create VM checkpoints in Hyper-V it might start consuming a lot a disk space afterwards.

image

Because it will write data to the AVHDX files.

You can use PowerShell to investigate the current disk size.

Get-VM YourVM | Select-Object VMId | Get-VHD | Select-Object –Property path,computername,vhdtype,
@{label=’Size(GB)’;expression={$_.filesize/1gb –as [int]}}

image

As you can see the VHD Type is saying DIFFERENCING.

That is because you have a checkpoint pending. And this is NOT recommended in a production environment.

There are some tricky scenario’s where deleting checkpoints can corrupt your VM.

See here for more info

Enjoy !


PowerShell – Accessing Power BI Desktop Data and more…

November 18, 2018

Recently I got interested in getting data out of a Power BI Data Model to push into an SQL database.

On my way I discovered a lot of interesting techniques and Tools for Power BI Desktop.

1. First of all you need to know that Power BI Desktop actually is a small Web Server running an SSAS Mini Cube.

2. Next you need to prepare PowerShell to access the PBI Cube.

Solution :

In order to start you first need to start PBI Desktop and open a PBIX file you created before.

Once started you need to find out on which Random Port is was started.

There are 4 way to get the job done.

1. Install Dax Studio which you need to have, no question about this !

    Even if you are not using it for getting the Random Port…

Look in the bottom right corner :

image

2. Command line tool NETSTAT

   Run NETSTAT –b command and look for Power BI

image

In this case it was Port 60520

3. Look for the msmdsrv.port.txt file.

Once PBI is started it will create some folders and files.

You can find those here :

%LocalAppData%\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\

image

If you have multiple PBIX files open you will see more Random created subfolders.

Go to the random created folder and next to the Data Subfolder.

Open the msmdsrv.port.txt file to get the Port number.

image

4. Using the Tabular Editor

But it needs some dependent MS AS AMO Libraries

image

image

Now that you know how to get access to the Web Server Port.

PowerShell 32 Bit

You can now test PowerShell connection to the Power BI Desktop you have open.

But you first need a Connection String to be used in PowerShell

FIRST USE the 32 Bit PowerShell if you are using a 32 Bit Office installation.

Later in this post I will explain how to get it running in a 64Bit PS even if you have a 32 Bit Office installed.

I suggest that you use EXCEL for this to copy and paste it Winking smile

Go to Data and choose From Analysis Services.

image

Follow these steps :

image

image

image

image

Copy it from here :

image

You can also get the Catalog GUID from the folder name where you could find the Port number.

image

Run this PowerShell Script, it uses a DMV Query to get hold of the PBI Cube Properties

CLS

$Port = "60520"
$Catalog = "cff5b9a8-2f87-416c-97fd-8eccd5962d51"

$Query = 'Select * from $SYSTEM.DISCOVER_PROPERTIES'

$connectionString = "Provider=MSOLAP;Integrated Security=SSPI;Persist Security Info=True;Data Source=localhost:$Port;Initial Catalog=$Catalog"
 
$connection = New-Object -TypeName System.Data.OleDb.OleDbConnection

$connection.ConnectionString = $connectionString
$command = $connection.CreateCommand()
$command.CommandText = $query
$adapter = New-Object -TypeName System.Data.OleDb.OleDbDataAdapter $command
$dataset = New-Object -TypeName System.Data.DataSet
$adapter.Fill($dataset)

$dataset.Tables[0] | Format-Table # export-csv $filename -notypeinformation
   
$connection.Close() 

image

To list data from a Table use the EVALUATE command

$Query = 'EVALUATE Tickets'

image


PowerShell 64 Bit

If you are running a 32 Bit Office, you need to install the OLAP Drivers for 64 bit

(will be done when you install DAX Studio).

clip_image002

Or manually register the MSOLAP.DLL from the Power BI install folder.

image

Tools :

Power Pivot :

You can connect to a Power BI Desktop model using Power Pivot for example.

image

image

Dax Studio :

You can run commands directly against your Power BI Desktop.

Use DAX Commands

image

Or use a DMV Query.

image

For more info on DMV Queries see here

Power BI Helper :

image

More Tools you can find here

Enjoy !


Windows Server 2016 – HP iLO PowerShell and more…

November 9, 2018

image

image

HPE Integrated Lights-Out (iLO),

HPE Onboard Administrator (OA) for HPE BladeSystem Enclosures and

System BIOS of HPE ProLiant servers, this set of PowerShell utilities

 

image

We will only use iLO at this moment, because this is the most valuable.

It is a proprietary embedded server management technology of HP.

iLO makes it possible to perform activities on an server from a remote location. Even if the server OS is not responding.

 

1. Download the PowerShell Module

See here at the moment we are at version 2.1

image

 

2. Load the PS Module

Check the version

 

ClS

import-module "C:\Program Files (x86)\Hewlett Packard Enterprise\PowerShell\Modules\HPEiLOCmdlets\HPEiLOCmdlets.psd1"

Get-Module -ListAvailable "HPEiLO*"

 

image

List the Cmdlets

Get-Command -Module "HPEiLOCmdlets"

 

image

 

Update the PS Module if needed

Update-HPEiLOModuleVersion

 

Search for iLO servers in your network using a range or subnet

$IPRange = Read-host " Enter the IP Range of HPOA ( 10.0.0.1-25) "

Find-HPEiLO $IPRange

image

Now you are ready to run some cmdlets.

 

Let’s check the power of the server:

Get-HPEiLOServerPower -Connection $connection

image

 

Let’s check the Temperature Sensors

$Ret = Get-HPEiLOTemperature -Connection $connection

$Ret.Temperature | Out-GridView

 

image

 

3. iLO commandline Tools

The HP management utillity called hponcfg.exe is installed here.

 

image

iLO config Export Example :

Command :

clip_image002

hponcfg.exe /w c:\Temp\iloconfig.txt

 

image

 

You can use the is config file to make changes to your iLO configuration, like resetting your Password etc.

 

hponcfg /f your_script_name.txt

 

Enjoy !


PowerBI – Using FreshDesk Web Services API

November 7, 2018

We started exploring the use of the FreshDesk cloud-based customer support platform.

Which is one of the modules of the FreshWorks Suite.

You can start off with a free subscription, which is good enough to start building you BI tool.

image

Once you are happy you can switch over to a paid subscription giving you extra features.

image

One of them is extensive reporting,

After exploring the Power BI integration. I found out that all of the third party solution provided did not work Sad smile

And one if the solutions required that you have a Power BI Pro licence…

 

SOLUTION :

So I ended up making my own Power BI Dashboard using the FreshDesk REST Web Services API.

See here for the API documentation : https://developers.freshdesk.com/api/

 

The Web Service API looks very straight forward and works with any REST compatible application.

 

Implementing this in Power BI, was challenging.

But as you can see here, you can do all you need in your Free Power BI Desktop too.

So this will save you some licenses money too Winking smile

 

You can start off with a free subscription, which is good enough to start building your BI Dashboards.

 

image

 

image

 

Shows that Power BI is the right marriage for the 2 platforms, O365 and FreshDesk Winking smile

 

In case you need to run this as offline data source or want to schedule reports.

You can use PowerShell to extract the data, and use this as a data source.

 

This will save you quite some money uplifting your subscription.

image

Example :

If you have 25 Agents and you need to schedule reports. Your subscription is $19 / user / month more expansive.

This is a burden of an additional $5,000 subscription cost.

 

Other paid service provider is FreshInsights / Radiare

image

 

PowerShell

If you run the Invoke-WebRequest command against your URI in Powershell.

Like this :

$Data = Invoke-WebRequest -uri $URL -Headers $Headers -Method GET -ContentType application/json 

 

image

You can see in the response header information the API Version and the remaining calls you have

In this case 2996 out of 3000 per hour !

This is a limit set by Freshdesk to reduce the maximum API calls per hour.

 

Steps to get started using Power BI :

1. create a free trial subscription

2. Copy your Web Service API Key

image

3. Open Power BI and do a Get DATA Web Data

image

image

Paste in the web service URL for Tickets for example.

4. Connect to FreshDesk using the API Key and password

image

5. Next built your Queries and transformations to extract the data

image

6. Build your Visuals and Measures

image

 

An extra bonus is that you can incorporate this in your SharePoint site.

No license needed see here on how to.

image

Need to get started building your own Dashboard, drop a message here.


Visual Studio Code – Solution Explorer .Net Core

July 31, 2018

If you don’t want to run all the command line command of DotNet Core like here.

You can start using the Visual Studio Code for .NET Core with the VSCode Solution Explorer

image

https://marketplace.visualstudio.com/items?itemName=fernandoescolar.vscode-solution-explorer

image

 

Install and Reload

image

 

image

Go to menu VIEW => EXPLORER

image

Create a new Project file from the START page

image

You can see the command it ran, in the Debug window.

image

 

Next it it ask you to open up a TEMPLATE file in the bottom right corner

image

Click YES

It will open the TEMPLATE Window to choose from :

image

It that did not open the Template window you can trigger it manually here.

Right click on the Solution file => Add New Project

image

Follow the questions asked and it will create a new Project from the Template and Programming Language chosen.

Again the commands show up in the Debug Window

image

As you can see it created nicely the new .Net Core Project

image

 

Benefit of this extension is that you don’t need to run all the command manually.

And you don’t need to install a ton of software like Visual Studio on your machine …. Smile

image

You can also add .NET Core Test Explorer Extension to VS Code for Unit testing

image

More extensive info you can find over here

Enjoy !