PowerShell Linux to Windows integration (encoding problem)

In my life I try to be on the edge of IT technology and if I find something interesting I try to be in touch with it. I’m a big fan of UNIX based systems and impressed by their reliability and flexibility. That is why I love Linux and Mac OS.

I realize that Windows is the third major system, it’s still alive and used in most of companies around the world. Windows 7 looks better protected and much more reliable. So, I studied it  and looked the new technologies it offered. The weak points in Windows were the reliability, security, virus protection and command line interface. I’m a big enthusiast of CLI (command line interface) on Linux systems and this article is dedicated to that.

The first time I heard about Windows PowerShell I said “Wow, that is crazy”. What a great idea, make the command line shell in Windows really powerful. I won’t compare it to UNIX bash here. It is clear that PowerShell gives system administrators the ability to automate their job and a way to control the Windows systems through slow network connections. That is great.

In addition to my CLI interests, I’m a big enthusiast of OS integration. I’ll explain what I mean. Usually in companies I’ve been at, there are offices with Windows 7 desktop computers and laptops. Some have Windows Servers or Linux. The companies who do design, advertisement, computer graphics, post-production or TV have all three systems in their network. That means: Mac OS, Linux, Windows 7 and even Windows XP.  Control and integration is a problem. I’m looking for technology which can help. PowerShell and SSH  may make this happen.

Until now, Windows 7 didn’t have SSH  out of the box. It uses an outdated telnet' for console connections. Thanks to @ShayLevy for the tip on the PowerShell SSH Server from /n Software. It looks great for these types of integration. Plus, they have a free version with a one connection limit.

The problem I faced - we have a Russian version of Windows 7. That means if I try to connect it with SSH  from Linux I get a question mark in PowerShell replies.

The problem is different locales. The Linux box has modern UTF-8, the Windows have their own WIN-1251 for the Russian language. So, PowerShell Server from /n Software translates the reply incorrectly encoded.

I solved this by tweaking the registry for PowerShell Server.

First, I need to make a new string parameter in HKEY_LOCAL_MACHINE ➜ SOFTWARE ➜ PowerShellInside  ➜ PowerShellServer’. The WireEncoding' should be set to UTF-8′.

Then I run PowerShell server as a Windows Service, restart it, and connect through SSH again. It now works with the correct Russian responses.

Happy Holidays 🙂


About the author: Dmitri Guslinsky

Dimitri is a Technical director in a media company, a gratudate in mechanical engineering for the airspace industry, a Microsoft MCP. He has been programming since 1984 and has been doing network administration since 1998. Dimitri's interests include Mac OS Cocoa programming, AppleScript, Java, Python, Perl, Bash and PowerShell. He writes a blog and you can also find him on Twitter.

Related Posts