PowerShell Core – Power BI Gateway Management CmdLets

November 6, 2019

Keep in mind that these cmdlets are PowerShell CORE only !

First you need to check the availability of the PS CORE version on your system.

I had  6.1 preview 3 installed

image

So I opened the Cmd line using Admin privileges

Next started PWSH.exe

Next I run this command :

Install-Module -Name DataGateway

image

Next Check the available cmdlets

Get-Command -Module DataGateway*

image

Next I ran this command

Import-Module DataGateway

image

But it says my version of PS Core needs to be minimum 6.2.2 Sad smile

So first get an upgrade from here :

https://github.com/PowerShell/PowerShell

image

After upgrading your can check the version using

$PSVersionTable

image

Next run these commands again :

import-module DataGateway
import-module DataGateway.profile

image

No errors now Smile

Run this command to login :

Login-DataGateway

It opens the browser and return this message

image

image

Next run this command to get your Cluster ID

Get-DataGatewayCluster

Next check the Gateway Status like this

Get-DataGatewayClusterStatus

image

So far so good Smile 

Enjoy !!


Windows 10 – DotNet Development NO Visual Studio

October 16, 2018

Recently I needed to develop an VPN Builder for Windows 7 for the L2TP protocol.

To automate the VPN entries on the client and to hide the Private Shared Key for the user.

 

PowerShell can do this…  But does not support the cmdlet Add-VpnConnection onWindows 7

It is only available for Windows 10 Sad smile

 

SOLUTION :

1. Download the DotRas Library from the Nuget site

https://www.nuget.org/packages/DotRas.for.Win7/

image

Tip : Winking smile

When you have saved the .nupkg package you can just open this using 7-Zip

image

Extract the nice documentation file DotRas.chm that is included.

image

And extract the DotRas.dll (for your appropriate .Net version 2.0 or 4.0)

In my case I used the DotNet 2.0 version

 

2. VB.Net Source code

On the net you can find relevant source code to build your application for L2TP, if you want to have a head start.

https://blog.cjwdev.co.uk/2011/05/19/automate-creation-of-an-l2tp-vpn-with-pre-shared-key-and-automatically-use-windows-credentials/

And modify to your own needs ….

 

3. Compile your application

You can use the commandline compiler VBC.exe that is part of your local DotNet installation on any Windows machine.

Or you can use my Visual Studio Light wrapper  Smile

 

%systemroot%\Microsoft.NET\Framework\v2.0.50727\vbc.exe /nowarn /nologo /quiet /debug- /t:Winexe VPN_L2TP_Builder.vb /r:DotRas.dll -out:VPN_L2TP_Builder.exe -win32resource:VPN.res

 

As you can see I needed to reference the DotRas.dll Assembly and I used the custom Resources to assing a custom ICON and File Properties.

See here on how to build a custom Resource file using Resource Hacker

 

4. Result

image

 

As you can see we don’t need 10 ton of software, just to build a simple functional DotNet Application Smile

 

Some extra tips for L2TP errors here  Winking smile

 

TIP : 

To avoid an “appcrash” you need to make sure that you compile it on the same OS as where the .EXE is going to be used !

In this case it is Windows 7 !

 

Enjoy!


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 !


PowerShell Core – Installation on Windows 10 – Ubuntu WSL

July 4, 2018

Here you can find the correct installation instructions for Ubuntu 16 (and many more like Raspbian, …)

https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-powershell-core-on-linux?view=powershell-6

1. Open Bash on Windows 10

image

2. Install PowerShell Core

These are the commands needed to get it installed.

# Import the public repository GPG keys
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -

# Register the Microsoft Ubuntu repository
sudo curl -o /etc/apt/sources.list.d/microsoft.list https://packages.microsoft.com/config/ubuntu/16.04/prod.list

# Update the list of products
sudo apt-get update

# Install PowerShell
sudo apt-get install -y powershell

# Start PowerShell
pwsh

3. Installation process

It looks like this on Windows 10 – Bash

image

4. Test PowerShell

image

5. Let’s connect to O365 – Exchange Online

image

Get-Mailbox

image

Other Commands

Make sense work fine … Get-Service doesn’t work because it is a Windows Command Winking smile

image

All seems OK Smile

Enjoy !


PowerShell Core – How to install the Windows Compatibility Pack

July 3, 2018

First find the correct PowerShell Core Module

Find-Module -Name PSCoreWindowsCompat | ft -a 

 

As you can see it only runs on Windows x64 bit !

clip_image002

Keep in mind that this Windows Compatibility Pack is a Temporary solution from MS, and will not stay forever :

http://lunarfrog.com/blog/windows-compatibility-pack-net-core

Windows Compatibility Pack for .NET Core is not a permanent solution which will stay in codebase forever. Intention of the pack is to build a temporary bridge, allowing adoption of .NET Core to a greater extend. However, in the long term the goal stays the same – replace outdated APIs and features of .NET with newer .NET Standard-compatible alternatives.

You can download it before installing using this command

Save-Module -Name PSCoreWindowsCompat -Repository PSGallery -Path C:\Temp\ -Force 

 

Or install it directly

Install-Module -Name PSCoreWindowsCompat -Repository PSGallery -Verbose -Force 

 

As you can see it needs Administrator Privileges

clip_image004

 

Import the Module PSCoreWindowsCompat

Import-Module -Name PSCoreWindowsCompat 

 

You have to use the DotNet Classes instead of Cmdlets.

For instance the Compatibility pack contains the System.DirectoryServices so you can script against AD.

Like this :

$dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()

$root = $dom.GetDirectoryEntry()

$search = [System.DirectoryServices.DirectorySearcher]$root

$search.Filter = "(&(objectclass=user)(objectcategory=user))"

$search.SizeLimit = 3000

$result = $search.FindAll()

foreach ($user in $result){

$user.Properties.distinguishedname 

} 

Compared to Windows PowerShell

Get-ADUser -Filter * | select DistinguishedName 

 

But it works perfectly … Smile

image

 

For .Net Core Applications see here :

https://www.nuget.org/packages/Microsoft.Windows.Compatibility

Run this command :

dotnet add package Microsoft.Windows.Compatibility –version 2.0.0

Enjoy !


PowerShell Core – Running on Windows IoT using a RPI3

July 2, 2018

As mentioned on this post

I was planning to test PowerShell Core on Windows IoT running on an ARM platform using RPI3….

PS Core Version 6.x claims to be a cross platform Smile

It is still experimental as mentioned here :

https://docs.microsoft.com/en-us/powershell/scripting/setup/powershell-core-on-arm?view=powershell-6

So let’s take a look :

1. Download the correct ZIP

https://github.com/PowerShell/PowerShell/releases

Windows IoT running on RPI3 is a 32bit version (if you are using the free version)

image

2. Open the ZIP

This contains all the modules needed to run on your RPI3

image

Extract and copy all files over to your destination RPI3 folder.

 

image

For example c:\pscore

 

3. Setup Remoting on RPI3

Run this command and see PS notes :

You’ll get an error message and will be disconnected from the device because it has to restart WinRM

 

image

 

# Be sure to use the -PowerShellHome parameter otherwise it'll try to create a new
# endpoint with Windows PowerShell 5.1
.\Install-PowerShellRemoting.ps1 -PowerShellHome .
# You'll get an error message and will be disconnected from the device because it has to restart WinRM

 

4. Connect to the PS Core on your RPI3

# Be sure to use the -Configuration parameter.  If you omit it, you will connect to Windows PowerShell 5.1
Enter-PSSession -ComputerName <deviceIp> -Credential Administrator -Configuration powershell.6.0.2

image

 

5. How to run Windows PowerShell modules in PowerShell Core

Run these 2 commands to get access to the Windows PS modules

 

Install-Module WindowsPSModulePath -Force -Scope CurrentUser 

Add-WindowsPSModulePath

 

image

Or this way for a custom module

Import-Module "C:\Program Files (x86)\AutoIt3\AutoItX\AutoItX.psd1"
Get-Command *au3*

 

image

image

6. Test PS Core on your RPI3

image

All runs as expected Smile

 

But keep in mind that not all functions are supported (yet)

image

 

Even if it says so see help Sad smile

image

 

Running PowerShell Core on Linux or Mac see here to get started :

https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-powershell-core-on-linux?view=powershell-6

https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-powershell-core-on-macos?view=powershell-6

Enjoy !


PowerShell Core – Installing and Testing

July 2, 2018

PowerShell Core has reached version 6.1xxx at this moment …

 

Why do you need PS Core v6.1.x

https://blogs.msdn.microsoft.com/powershell/2018/01/10/powershell-core-6-0-generally-available-ga-and-supported/

https://docs.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-core-60?view=powershell-6

https://blogs.msdn.microsoft.com/powershell/2018/01/24/powershell-core-6-1-roadmap/

 

How to install

Since PS Core is a cross platform distribution, just pick the one you need Smile

https://github.com/PowerShell/PowerShell/releases

 

Download and run for a Windows 10 SxS installation

 

image

 

Select Open PS Core

or start is manually

image

Testing

In order to run PS Core you need to use the pwsh.exe commandline and not powershell.exe !

Check the PS Core version :

run pswh.exe –v

image

Or the famous command

$psversiontable

 

image

PowerShell core does not have all the modules of the full blown version available.

But it has already a lot… run

get.command 

it will list about 425 commands

image

 

If you need more :

Windows PowerShell Compatibility Pack

With the announcement of the Windows Compatibility Pack for .NET Core for .NET Core, PowerShell Core will regain some APIs that had been dropped in the transition to .NET Core.  This means we can re-enable some cmdlets that weren’t part of the PowerShell Core 6.0 release: WMI, EventLog, and PerfCounters.  In addition, some highly requested APIs will be available which means that some existing Windows PowerShell modules might just work in PowerShell Core 6.0.  This module will replace the WindowsPSModulePath module to add the Windows PowerShell $env:PSModulePath to PowerShell Core 6.0.  Finally, we can use this module to optionally add back some aliases that we removed from PowerShell Core 6.0 that exist in Windows PowerShell.

Example it allows you to run encrypted commands as well out of the box… Smile

image

 

For a full list of command line options run pwsh.exe /? (or –h or –help or …. Winking smile )

Most relevant are :

pwsh -NoExit -Command Get-Date

image

 

Some of the commands you need to run using Administrator privileges or you get this error :

image

pwsh -Command {Get-WinEvent -LogName security} or pwsh -command “& {Get-WinEvent -LogName security}”

image

 

You can run Windows PowerShell modules in PowerShell Core on Windows

 

Install-Module WindowsPSModulePath -Force -Scope CurrentUser 

Add-WindowsPSModulePath

 

Next episode I will test it the PS Core on an RPI3 running Windows IoT, see here

Enjoy!