Category Archives: Scripting

PowerShell: Friday Script Blitz 3

 224edi

Intro

Happy 2018!!! In my current position I’m getting to do a lot of PowerShell scripting. Typically these are quick scripts for maintenance or finding information about our Citrix environment. I’m posting several here to share.

NOTE: These scripts were written against a XenApp 7.9/PVS 7.15 environment

get-pvsPersonalityStrings.ps1

If you have to maintain unique personality strings on your provisioned devices, then this script will help. It spits out all the strings in a PVS farm. I wrote this script due to a requirement with Symantec AV that expects to see a unique hardware ID for servers connecting to it. One way to do this in provisioned environments is with a startup script. See How to prepare Symantec Endpoint Protection clients on virtual disks for use with Citrix Provisioning Server for more info.

Get it from GitHub

set-pvsPersonalityString.ps1

The companion script for above. This script will set the Personality String for a PVS Device. It can take an input or generate one automatically. It assumes a 32 character hexadecimal string.

Get it from GitHub

Thanks for reading,
Alain

Advertisements

PowerShell – Add PowerShell to Context Menu

holiday-hacks
Here’s a holiday hack for PowerShell. If you would like the ability to right-click on a directory and have PowerShell open to that directory here’s what you do…

  1. Open the registry on the system you want to do this on (regedit.exe)
  2. Navigate to HKEY_CLASSES_ROOT\directory\shell

Image 001

  1. Right-click and create a new key called PowerShellPrompt

Image 002

  1. Rename the Default Data to “PoSH Here” or something similar. This is what will display in the context menu when you right-click

Image 003Image 004

  1. Right-click on the PowerShellPrompt key and create a new key. Name it Command

Image 005

  1. Change the Default data to the following command-line
powershell.exe -noprofile start-process  powershell.exe -verb runas -argumentlist "{ -noprofile -noexit cd %1}

Image 006

  1. Now, when you right-click on a directory, An elevated PowerShell prompt will open at that directory

Image 009

  1. If you want to load your profile when this prompt opens, remove the second “-noprofile” from the command-line
powershell.exe -noprofile start-process  powershell.exe -verb runas -argumentlist "{ -noexit cd %1}"
  1. If you want to have an Icon show up in the Context menu add the following String value to the PowerShellPrompt key

Image 011Image 012
Thanks for reading,
Alain

Visual Studio Code: PowerShell Profile

1uqcgx

Intro

Microsoft has released a terrific open source, multi-platform code editor called Visual Studio Code. If you want to get started with VS Code, I would recommend watching the videos provided here and then watch this excellent video about replacing PowerShell ISE with Visual Studio Code by Mike Robbins.

What about the PowerShell profile?

While Visual Studio Code can use PowerShell as its terminal, it does not use any previously setup PowerShell profile. In order to create a VS Code PowerShell profile (or VSCPP for short), select the Terminal (make sure it says PowerShell Integrated in the drop down on the right) and type $profile.

VSCode1

In order to create this file, you can type PS>notepad $profile in the terminal. This will open notepad and let you create the file. You can add whatever settings you prefer to in PowerShell. Once you save the profile, hit F1 or Ctrl+Shift+P to bring up the Command Palette and type Reload Window.

VSCode2

When the reload completes, create a new PowerShell file in VS Code and you should see the Terminal switch to PowerShell Integrated and load your newly created VSCPP (this assumes you have installed the PowerShell extension into VS Code).

VSCode3

NOTE: The PowerShell version that is installed as an extension into VS Code, has its own version.

VSCode4

If you have modules, scripts, or functions that have a dependency on a certain version of PowerShell, you will have to change, comment, or remove the dependency in order to use them in Visual Studio Code.

Happy Scripting!
Alain