$theTitle=wp_title(" - ", false); if($theTitle != "") { ?>
About Virtualization, VDI, SBC, Application Compatibility and anything else I feel like
20 Dec // php the_time('Y') ?>
I have been working with Microsoft’s Desktop App Converter a lot recently. Even though there’s an option to autosign the resulting package with the -Sign
switch I prefer to sign APPX packages myself using signtool.
The reason is that I can send UWP packages to testers for sideloading without requiring them to import the auto generated certificate (which is different on each (re)build).
However I always forget the exact path to signtool.exe (this comes with the Windows SDK).
The Windows 10 SDK is installed by default in C:\Program Files (x86)\Windows Kits\10
.
Signtool.exe will be in the folder<sdkpath>\bin\<version>\<platform>\signtool.exe
.
As there are multiple version of Windows 10 there are multiple version of the SDK and you can install those concurrently.
But then I found the PowerShell cmdlet Resolve-Path which “Resolves the wildcard characters in a path, and displays the path contents”.
This does exactly what I need:
Wow, Resolve-Path is a perfect example of the many hidden gems in PowerShell!
So I decided to wrap signtool.exe in a PowerShell cmdlet as PowerShell also makes it easy to locate the correct code signing certificate from the certificate store. (more…)
4 Apr // php the_time('Y') ?>
As you may heard, the API’s returning the Operating System version have changed, started with Windows 8.1 and Server 2012 R2.
The reason for this change is Application Compatibility but let’s take a little closer look into this why.
As an application developer there may be a need to check the version of the OS you’re running on. A typical example is when you are using an API that only works on a specific Windows version (and up). Or the other round, you’re not supporting an older version of Windows (say Windows XP as an example).
A common error in such version checks is to check for a specific Windows version but forget to take new (not yet released) versions into account.
13 Mar // php the_time('Y') ?>
Just a very quick post (more like a note to self) but I wanted to split a string with the $ sign in PowerShell:
1 | 'one$two$three$four$five' -split '$' |
Took me a little while to realize that this doesn’t work as the split operator in Windows PowerShell uses a regular expression in the delimiter, rather than a simple character.
The easy fix is to Escape the $ sign with a backslash:
1 | 'one$two$three$four$five' -split '\$' |
Or alternatively use the SimpleMatch option:
1 | 'one$two$three$four$five' -split '$', 0, "SimpleMatch" |
The 0 represents the “return all” value of the Max-substrings parameter. You can use options, such as SimpleMatch, only when the Max-substrings value is specified.
14 Oct // php the_time('Y') ?>
Recently support for NPAPI has been removed from Google Chrome. While understandable from a security point of view it does mean that some plugins no longer work.
A good example is VMware’s Client Integration Plugin where we’ve lost the ability to upload an ovf template. While VMware has published a fix for vCenter (see this kb), it has not been fixed for vCloud Director:
5 Oct // php the_time('Y') ?>
In versions prior to 6.0 VMware supplied the VCSA (vCenter Server Appliance) as an OVF template that could be imported directly.
Starting with version 6.0 the installation process has changed and now consist of an .iso file containing a custom, HTML based, installer. Vladan Seget has a nice blog post where he describes the installation.
This installation process is annoying, it needs a separate client (Windows) machine to run the installer on, requires the Client Integration Plugin (which doesn’t appear to run well on chrome now that support for npapi/dpapi has been removed):
But even worse is that we cannot import VCSA 6.0 in vCloud Director. Even converting the OVF inside the iso file doesn’t help because vCloud directory lacks support for Deployment Options.
28 Jan // php the_time('Y') ?>
The Citrix ShareFile Sync application is quite limited in functionality, one of those limitations is that you can only synchronize to a single (one) local folder.
As Helge Klein wrote in his excellent article "Configuring Citrix ShareFile Sync from PowerShell" this is simply a GUI restriction and not a restriction in the actual ShareFile sync engine.
Helge describes that you can easily do this in PowerShell with the following example:
1 2 3 | Add-SyncJob -ApplicationId 1 -ApplicationName "PowerShell" -Account helgeklein.sharefile.com -RemoteFolderName "foc86c19-d904-434a-9d67-xxxxxxxxxxxx" -LocalFolderPath "D:\Daten\Sync to ShareFile" -AuthType 4 -UserName xxxxxx@helgeklein.com -SyncDirection 2 -Password "MY SHAREFILE PASSWORD" |
While the command was accepted, nothing was synchronized.
29 Jul // php the_time('Y') ?>
This morning Aaron Parker was wondering if Hash Tables could be used to work with ini files:
I thought it was a great idea because in Hash Tables you can use the . operator to get or set a Hash Table entry. But I wondered what to do with sections in ini files. Then I got the idea to use nested Hash Tables for that.
The result is two functions, one to read an ini file into a nested Hash Table and one function to write it back to an ini file.
22 Jul // php the_time('Y') ?>
In a PowerShell script I needed to sort a hash table by byte value (not alphabetically, lowercase parameters will be listed after uppercase ones). An example for this requirement is the Amazon Product Advertising API.
Consider the following hashtable as an example:
1 2 3 4 5 | $params = @{} $params.Add("AssociateTag", "dummy") $params.Add("AWSAccessKeyId", "AKIAIOSFODNN7EXAMPLE") $params.Add("IdType", "0679722769") $params.Add("Operation", "ItemLookup") |
If we use the Sort-Object to order the list (note that we need to use the GetEnumerator method):
1 | $params.GetEnumerator() | Sort-Object Name |
We will get the following result:
1 2 3 4 5 6 | Name Value ---- ----- AssociateTag dummy AWSAccessKeyId AKIAIOSFODNN7EXAMPLE IdType 0679722769 Operation ItemLookup |
If you use the -CaseSensitive
switch the resulting order will remain the same.
18 Jul // php the_time('Y') ?>
To get the best performance out of Virtual Desktops it is essential that the power configuration in the system BIOS and the HyperVisor are configured for maximum performance.
Many people have blogged about the importance of these settings like, Andrew Wood, Helge Klein and Didier Van Hoye. So I will not go into details again.
But how do you check from a Virtual Machine if you are actually running at full clock speed or not?
I have written a PowerShell script to do just that (requires at least PowerShell v3).
Here are some screenshots:
Running with "High Performance profile":
Running with "Balanced" power profile:
5 Apr // php the_time('Y') ?>
For an upcoming blog post I needed to decrypt some data using the rc4 algorithm. I wanted to do this with PowerShell but sadly PowerShell and the .NET framework have no functions for it.
So I needed to implement it (download at the bottom of the post):