
PowerShell is open sourced and is available on Linux - platz
https://azure.microsoft.com/en-us/blog/powershell-is-open-sourced-and-is-available-on-linux/
======
Analemma_
PowerShell is my guilty pleasure of the computing world. Once you've piped
strongly-typed objects around between your shell commands, text scraping seems
barbaric by comparison. The problem, of course, is that you can't use all that
power for much, since the pool of PS-compatible tools and utilities is much
shallower than it is for Unix shells. I'm really hoping this will help spur a
new wave of PowerShell-compatible tools.

Come to the dark side, we have (strongly-typed) cookies.

~~~
amenod
Is this really so useful in practice? I have never used PowerShell before (nor
do I have plans to do so in the near future), but I would imagine the downside
is complexity, both for user and especially for developers. With text you just
read and parse, while with objects you need to know the object type, its
fields,... Whatever happend, I hope text stays here (and I have a bad feeling
about it ever since I met systemd).

~~~
ksk
Could you elaborate on what the actual complexity is, rather than what you
imagine?

For a developer writing a tool, exposing an interface as objects is far easier
than having to constantly serialize data into a string. Keep in mind that once
you serialize data into a string, you can never change the order of the data
or else other tools will break. Not so with a object based interface.

In other system-admin type tasks PowerShell _hides_ complexity. For e.g.
finding the IP address of a network interface is simply

    
    
      Get-NetIPAddress | select IPAddress
    

compared to something horrendous like

    
    
      ifconfig | perl -nle 's/dr:(\S+)/print $1/e'

~~~
vasilia
And how to delete files older 2 days? Get-Files / | select olderThan 2 |
Delete-File ?

But it's not bash, it's coreutils

    
    
      find ./ -mtime +2 | xargs rm

~~~
ygra

        Get-ChildItem -File | Where-Object LastWriteTime -lt (Get-Date).AddDays(-2) | Remove-Item
    

If you prefer shorter (and similarly obscure if you don't know the language):

    
    
        ls -file|? LastWriteTime -lt ((date)+'-2')|rm
    

I actually find PowerShell's version more readable, even if more verbose. But
code is written only once and read a lot of times. I may not know what the +2
actually _means_ with the -mtime argument. How would I change it to look for
the age of two hours instead of days?

~~~
vasilia
> I actually find PowerShell's version more readable, even if more verbose.

Sorry, I can't agree with you.

> I may not know what the +2 actually means with the -mtime argument. How
> would I change it to look for the age of two hours instead of days?

If you forget or doesn't know what is mtime, you can open man find. For less
granularity than days use mmin.

------
voltagex_
>We will be extending the PowerShell Remoting Protocol (MS-PSRP) to use
OpenSSH as a native transport. Users will have the option to use SSH or WINRM
as a transport.

Is possibly an even bigger announcement (this means there's actual momentum
behind
[https://github.com/PowerShell/Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH))

~~~
arca_vorago
This is what I have been waiting for right here!

~~~
new_hackers
yup, me too!

~~~
qrmn
I think it might have rolled out already. Turn on Developer Mode in Windows 10
Anniversary Edition, and ssh to port 22 with a valid l/p?

Doesn't look like you even need to install WSL.

~~~
loarabia
It looks like they're a little different for now. See the note under here.

[https://msdn.microsoft.com/en-us/windows/uwp/get-
started/ena...](https://msdn.microsoft.com/en-us/windows/uwp/get-
started/enable-your-device-for-development#ssh)

Full Disclosure: I am a MSFT employee.

~~~
newman314
More specifically, I don't want to SSH from a Windows box. I want to SSH into
a Windows box (and say figure out a way to easily install a LE cert)

~~~
Senji
There have been ssh servers for windows since forever.

------
qwertyuiop924
PowerShell is interesting, and I don't consider it evil. I know some people
swear by it, and I am not one of those people - I'll take my AWK with a side
of Ruby/Python, and a helping of SCSH, thank you very much.

It does seem a bit out of place in a UNIX system, though. In Windows,
PowerShell ties to a ton of strongly typed databases (SysReg, &c) and windows
APIs together into a nice package. But on UNIXes, those APIs are already well
exposed elsewhere, and that data doesn't exist. UNIX data is typically stored
as text, or can be extracted as such easily. We don't tend to do a lot of
binary object munging. I mean, maybe if it integrated with databases, it could
at least be handly for dealing with RDBMS scripting, but those bindings are
available elsewhere - ruby, perl, python, etc. And MS could build bindings to
POSIX, so you'd get a PowerShell version of tools like PS that returned
objects, but what are you going to do if you want to munge /etc/fstab, and,
say, generate user accounts for all your boot filesystems? I could do that
with a line of bash and a few lines of AWK. I don't know why I'd want to, but
I could.

So to conclude, PowerShell seems like a neat tool, but it was designed for an
ecosystem that doesn't exist on the *nixes.

~~~
viraptor
> But on UNIXes, those APIs are already well exposed elsewhere, and that data
> doesn't exist.

I'd go with exposed, but not necessarily well. Examples I run into all the
time: get an IP from an interface, change iptables entries, even change fstab
options. Sure, if you write enough regex, it will probably work most of the
time. But it's never going to be as reliable as get_ips('eth0'), or
get_filesystem('/tmp').options.add('nosuid').

~~~
qwertyuiop924
getting an IP is still pretty ugly, somehow:

    
    
      ip address show dev eno1|grep 'inet '|cut '-d ' -f6
    

But I wouldn't call it unreliable. The cut is the only really nasty bit.

Changing your fstab is easy with a little awk:

    
    
      $2=="/tmp"{$4=$4 ",nosuid"}
      {print $0}
    

Given, it won't remove contradicting options...

~~~
viraptor
It's unreliable, because you don't know where you'll find 'inet ' or what's
the specific spacing of the output. Also, that's not the ip, because you've
still got the cidr attached.

And no, fstab is not easy either. For example it fails for:

    
    
        # /tmp has option_blah in order to ...
    

changing it to:

    
    
        # /tmp has option_blah,nosuid in order to ...
    

Confusing the next person to look at the well intended comment.

It's no impossible to implement fairly reliably, it's not going to take days
to do, but you're likely make mistakes. And in both cases you're spawning
extra processes instead of just getting the information you need.

PS. also slightly annoying is that everyone is so concerned about the text
processing part that barely anyone checks what the tool itself can do. (ip -4
-o a s dev eno1 | awk '{print $4}')

~~~
qwertyuiop924
Oh, I forgot: the comment you showed wouldn't trigger my AWK script. Read it
more carefully.

~~~
viraptor
Yes it will. If you mean the $2 part, the comment character takes the place of
$1. Or did you mean something else? (either way, I tested it before posting)

~~~
qwertyuiop924
Nope, you're right. I just miscounted.

You could always add

    
    
      && $1 != "#" 
    

To fix this, though.

------
vmarsy
Great! So I can now run bash on windows (with WSL), open tmux, and open
powershell prompts in each tab: the loop is complete!

I wish powershell's documentation was a bit more clear about what's powershell
1.0, 2.0, 3.0... Etc.

A lot of time I'd find a verbose and tedious way to do one thing because the
code was written in "old powershell", when the latest version had a much more
elegant solution (either because of new language features or simply more
cmdlets were added, removing the need to fall back to some C# syntax)

On stack overflow it often means read more than the chosen answer, somebody
would have added a newer way to do it. I wish Microsoft "hey script guy" blog
had some versioning info (this post was last updated in 2016, using powershell
3, see powershell 2 version here)

~~~
artursapek
Does tmux work well on Windows? Everything Microsoft has been doing recently
with bash on Windows has made me consider buying a surface pro as my next
machine.

~~~
fsloth
I have Surface Pro 4 i5 and while I personally love it- I can't really
recommend it due to various issues (battery life is shit, sleep is bugridden
so best to hibernate only). It's uncomfortable as a tablet, and near useless
for the main thing ultra light computers are used - traveling a lot.

I use it at home. The pros are a really tiny size, yet it packs sufficient
computing power for many things, awesome screen. I can use it at a desk or
grab it to the sofa - but I need to keep the power adapter handy.

If the execution was as flawless as Apple's Ipads are it would probably be the
best computer ever (by my subjective scoring which appreciates a pen and sRGB
precise screen probably way more than the average user).

But as it is - and I'm comparing it to my Ipad pro which makes all the
problems stick out like a sore thumb - it's not an obvious recommendation.

~~~
artursapek
It really is annoying that the battery issues are so persistent. That's the
main thing that has kept me from even going to a store to check one out.

I've been stalking /r/surface and I've been seeing complaints about this for
over 6 months. Apparently it's more Intel's fault than Microsoft's, but still
very disappointing. I love the form factor and I want to support Microsoft
lately.

------
otoburb
Microsoft is projecting that the .NET ecosystem will become a main revenue
driver, regardless of the underlying operating system.

~~~
satysin
Which is why I have no doubt the Universal Windows Platform will become the
Universal Platform and be a true desktop/tablet/mobile/server/etc Java
competitor on all major OS (mobile, traditional and server).

It must be rather frustrating for Microsoft to look back a decade or more and
see they were sitting on the exact technology a hell of a lot of people said
would be their future had they made it cross-platform from the start. I
remember using C# for the first time around 2004 and thinking "god damn if
this were cross-platform like Java it would kill Sun". Back then Microsoft
couldn't see past the tip of their nose though.

~~~
vvanders
Yup, I've been playing around with C# more lately and it's such a good
language.

Things like embedding with native code is trivial compared to Java. Want to
call a delegate(with extras) from a C function pointer? Sure thing, just
specify some syntax and away you go. Marshalling strings? Just works.

Totally a breath of fresh air compared to the mess that is JNI.

~~~
pjmlp
Me too, back in the first .com wave I had access to early betas and was quite
critic of it, nowadays I enjoy using it more than Java.

Although I do still like Java, just don't like having to wait for Java 10 for
some of the .NET features already available (possible free AOT compiler, value
types, reified generics, JNI replacement).

------
tombert
I'm always in favor of things being open-sourced, but I do kind of wonder in
what universe I would use PowerShell when Bash is readily available.

~~~
larrik
As a full-time Linux user, I have to say that bash is overrated.

For instance, on Windows I could press the up arrow through my history 20x to
find a group of commands I want to run, press Enter, then press DOWN for the
following command, then enter, then DOWN until I run them all. In Bash, I need
to press UP 20x every single time.

Yes, you can customize it a lot, and you can script it but default bash isn't
that special to me.

~~~
pm215
You can use control-O for that, which does "execute this command as if I
pressed enter, then when it's done bring up the following command in command
line prompt". So if you have a set of commands to run that are 20 lines up in
history, you can first find them (with 20x UP or by reverse-search), then just
control-O control-O control-O control-O ... to execute them one after another.

~~~
petepete
I wasn't aware of this. Thank you.

Not that I've been using Bash and zsh every day for twelve plus years...

~~~
mikestew
Twelve? Youngster. I'd guess I'm coming up on thirty years. And I did not know
this.

Now the trick is to remember it next time the need comes up. :-)

------
Secretmapper
Wow. I've been very impressed with Microsoft lately. They could have easily
set themselves up as the next IBM, in the sense of being a monolithic
corporation relying on corporate practices, but they've been spewing some
crazy fun things that shows they're not out of the league yet.

Might just be MY miscontrued perception that microsoft was becoming
old/monolithic, but really excited with the direction they are heading.

~~~
thenewwazoo
I speak only for myself.

Microsoft have been hugely focused on hiring people who have experience
outside the Windows bubble, and have been encouraging cross-pollination of
ideas with the OSS world. There are holdouts for the old guard of course
(there's still a BU that requires Windows Phones), but I think everyone knows
that the Microsoft of old cannot compete today by bringing an attitude that
pleasing the CFO is all that matters. There are techies in the boardroom now
who are familiar with the early-mover advantages of free software and the
importance of the OSS culture to their workers.

So when a company of massive resources, who can see the writing on the wall,
decides to hire thousands of people who actively disbelieve in the value of
monolithic lock-in and who enjoy using open-source tools, and empowers them to
build interesting things without regard to company loyalty, the result is
Powershell on Linux and Bash on Windows. Oh, and a whole lot of goodwill
amongst the people you had previously alienated.

~~~
ekianjo
Yet that does not prevent them from harassing the linux world with patent
attacks. And claim they love linux nonetheless. Thats like shizo behavior.

------
lanestp
I'm glad that Microsoft is doing stuff like this. But, I can't imagine a lot
of Linux users are going to want to use it. As a former Windows developer I
always found Power Shell to be lacking in nearly everything I wanted to do on
the command line, in fact, I mainly did shell commands on a remote Ubuntu
server.

~~~
mercer
Would you mind elaborating on Power Shell's lack? I've never used it so I'm
curious to know more.

~~~
Spivak
I think the most succinct way of describing it is that UNIX tooling is
scatterbrained and at times a little ugly, but each command exits because it
solved someone's real-life problem. PS by comparison is a set of tools that
try to be all encompassing and solve problems MS devs think people will have.

Our PS repository is full of scripts that do nothing but abstract PS into
useful high-level actions.

------
KirinDave
PowerShell's object-passing approach ultimately is a heck of a lot more
composable and reusable than the "blobs of text with AWK and SED magic"
approach that its predecessors took.

It's somewhat surprising to see people here arguing that the pure text
methodology is superior. It's difficult for me to imagine a technically
motivated scenario that is improved by having everything dump out
inconsistently formatted and specialized plain text.

Great example, ifconfig and netstat. Regular interfaces and an object model
over these under the covers is a whole universe better than the ad hoc tabular
formats they present.

------
williamjackson
And now PowerShell on Bash on Ubuntu on Windows is a thing.

(Spoiler alert, it doesn't work very well right now. The cursor keeps jumping
to the top of the console and overwriting existing text.)

~~~
aruggirello
No, PowerShell on Bash on Ubuntu on a Windows VM on a Linux host is a thing :)

~~~
sixothree
And soon Windows VM's will be able to run inside of other Windows VM's so.....
VM's all the way down.

------
electricEmu
Finally! I love the methodology behind PowerShell. It's more verbose than
bash, and that's OK to me. The readability and _consistency_ far outweigh the
extra characters. Now, I get that coupled with all the flexibility of *nix
tooling.

It's going to be a long road to hook everything up, but this has the chance to
finally standardize command parameters.

I'm sorry. This is truly amazing to me and I'm quite excited!

~~~
cbaleanu
I Can Only See One Problem With PowerShell :)

~~~
noveltyaccount
Powershell is case-insensitive, so feel free to avoid that shift key if you're
so inclined :)

~~~
cbaleanu
Been using PS for a long time and I had no idea about this. Thanks !

------
jasonjayr
Having powershell + bash on linux lets me compare this way:

powershell, 14 pids(threads?), 3119M Virt size, 80160kb Resident.

bash, 1 pid, 22068kb Virt, 3976kb Resident.

And this is simply starting the process to an idle prompt.

This is on a Debian 8 64bit system. (using their Ubuntu 14.04 binary)

~~~
riskable
I'm not a huge fan of PowerShell but you're not really making a good
comparison here. Bash is "just a shell" that executes commands with a few bits
of syntactic sugar here and there to make it easier to string those commands
together and perform some primitive logic.

PowerShell is basically an _interpreter_ that works more like a Java Virtual
Machine. Consider the hypothetical example that you need to lookup 100 users
in an LDAP directory from Bash: You run the openldap command 100 times in a
loop. That's 100 processes that need to fork and quit in a serial fashion in
order to perform the task at hand.

To do the same thing in PowerShell you'll be calling a native PowerShell LDAP
API which will execute all 100 lookups without having to fork any separate
process resulting in a vastly faster execution.

It's better to think of PowerShell like the Python or Ruby interpreters. IMHO,
PowerShell is a vastly superior improvement to cmd.exe _as a shell_ but on a
Unix host it will be inferior to bash for day-to-day tasks.

~~~
Grishnakh
So I wonder how it compares to having the python interpreter open.

According to my machine, running the python interpreter results in 1 PID, 129M
virt, 4.6M res.

~~~
jasonjayr
Using java + jython, results in 15 pids, 2010M Virt / 196M Res.

Jython is probably the more apt comparison, vs the compiled interpreter. But,
it falls into the same trap as powershell: You couldn't invoke jython in a
loop like you would 'python' or 'perl'.

------
aidos
Cool! I'm having a play with it and it seems to work really nicely. Does
anyone know why the following commands don't produce the same output?

    
    
        get-childitem | ConvertTo-Csv
        get-childitem | ConvertTo-Json | ConvertFrom-Json | ConvertTo-Csv
    

It seems like, if there's a perfect underlying data model doing what's
effectively an identity conversion shouldn't change anything.

Edit oooo, and all the linux stuff is available within it too. So you can run
this to just augment your linux experience.

    
    
        ls | grep '_' | ConvertTo-Json

~~~
philsnow
I don't have a powershell handy, but one thing that might be causing changes
is that json dictionaries usually don't have a defined order (parsing
libraries are free to render the keys of a dictionary in any order); are the
changes you're seeing just ordering changes?

~~~
trevorsullivan
If you have a Docker Host, you can simply run: docker run --rm -it
trevorsullivan/powershell

To clean up the image after you're done:

docker rmi trevorsullivan/powershell

------
yumaikas
Powershell is the first language where I managed to save time by writing a
program for a task. Needless to say, I'm thrilled at the prospect of using it
on Linux. The only thing that I hope they will need to work on is startup time
making sure it performs well on low-spec servers (It can be a bit slow
starting cold on older laptops).

    
    
        ls -Recurse | ? { $_.Name -match ".+docx" }

~~~
ratboy666
I am not sure what your example does. How does it differ from

find . -name " _.docx "

ls -Recurse | ? { $_.Name -match ".+docx" }

And, if these are the same, why type in twice as many characters as a command?
Actually,

ls -R | grep "\\.docx$"

is, I think, closer in spirit.

Now, the issue is things further in the pipeline, I imagine. The find solution
allows selection on type name, type, date, depth, mounts, properties, file
system type, ownership, relative age, inode, symbolic link. find actions
include delete, exec, print, quit. This can pass on needed information to
further pipeline commands.

However, an interactive shell is meant to allow expression of commands with a
reasonable minimum of keyboarding (thus ls and not dir). I could argue that
the "Unix" command should be

find . -n "_.docx"

(because the most common -n... option used is -name).

I think, to be fully reasonable the find command you want is

find . -regex ".*\\.docx$"

which is still shorter than the PS example. I am not sure that for most
interactive tasks, PS is a win. It does appear to be more elegant, but only
usage over time will show if it is indeed more productive. I am looking for
academic productive studies to be done, now that both bash and PS are
available on common platforms.

~~~
Analemma_
If you're just talking about ls/dir, then PowerShell isn't really a win. The
advantages are clearer when you start talking about lots and lots of commands.
A lot (but not all!) Unix tools have flags to control their output format or
input filters, but that means you have to memorize different flags for all of
them. OTOH, in PS you just pipe to where/sort/select and they work for
everything. IMO PowerShell has better separation of concerns.

------
jupiter90000
I've been hoping for a fully-featured Linux version of Powershell for a while,
very awesome. I've used various Linux distributions for a long time and find
bash very practical usually, but when I started learning Powershell when
working in Windows environments I've been impressed with how easy it was to do
some powerful stuff, and felt conflicted since I wanted to be able to use
similar functionality and scripts across Linux/Windows.

~~~
uep
Powershell isn't competing with bash, it's competing with Python. So then, how
does it compare against Python? While plenty of small scripts are still done
with bash, I think Python is pretty common for serious production needs. I use
it for virtually all scripting these days.

I had a recent experience where a developer spent a day and couldn't get
Powershell's webrequest library to do what he wanted. I was able to accomplish
the goal in 15 minutes with Python on a Debian system.

~~~
jupiter90000
Sure, there are different ways to do various things, especially depending on
what one is familiar with and what the task at hand is. It sounds more like
you knew how to get something done with your tools faster than the other
guy/gal in this case. :)

~~~
uep
There are obviously many factors such as domain knowledge and language
familiarity. I respect the developer who failed to do this in Powershell, he's
very capable.

In this case, I would chalk it up to Python having a longer history and being
more mature. Neither of us were particularly familiar with this domain, but
because of the quality of Python's online community and documentation, it
wasn't difficult to accomplish the goal.

------
drux
"If Microsoft ever does applications for Linux it means I've won." \- Linus
Torvalds

------
henry_flower
For Fedora 24 users:

So some reason, the rpm that Microsoft provides doesn't list all the
dependencies that it actually requires. What is even worse, the compiled
binaries inside, require quite outdated versions of icu & openssl that are not
available in Fedora 24 any more.

What I've come up w/ to force poweshell to run:

    
    
      # dnf install icu lldb lldb-devel lttng-tools lttng-ust
    

To view what we're still missing:

    
    
      $ find /opt/microsoft/powershell -name \*.so -type f | xargs ldd 2>/dev/null | grep not\ found
    	    libcrypto.so.1.0.0 => not found
    	    libicuuc.so.50 => not found
    	    libicui18n.so.50 => not found
    

(libcypto* is openssl-libs package, libicu* is libicu.)

Now, you need to manually download:

[http://archives.fedoraproject.org/pub/archive/fedora/linux/r...](http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/17/Everything/x86_64/os/Packages/o/openssl-1.0.0i-1.fc17.x86_64.rpm)

(Yes, it's Fedora 17 == 2012 (!), which is ridiculous.)

[http://archives.fedoraproject.org/pub/archive/fedora/linux/r...](http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/19/Everything/x86_64/os/Packages/l/libicu-50.1.2-5.fc19.x86_64.rpm)

and extract usr/lib64/* files from both rpms to, say, /opt/tmp/lib64.

Then finally run:

    
    
      $ LD_LIBRARY_PATH=/opt/tmp/lib64 powershell
      PowerShell
      Copyright (C) 2016 Microsoft Corporation. All rights reserved.
    
      PS /home/hf> $PSVersionTable
    
      Name                           Value
      ----                           -----
      PSVersion                      6.0.0-alpha
      PSEdition                      Core
      PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
      BuildVersion                   3.0.0.0
      GitCommitId                    v6.0.0-alpha.9
      CLRVersion
      WSManStackVersion              3.0
      PSRemotingProtocolVersion      2.3
      SerializationVersion           1.1.0.1
    

It's a very strange feeling to see "Copyright (C) 2016 Microsoft Corporation"
in xterm, if you ask me.

~~~
voltagex_
The build scripts for PowerShell right now require an existing powershell
binary to work. If I can untangle this and work out what's required to build
from scratch, then that'll probably help you build a proper Fedora RPM.

(I'm looking into it for Debian, but the work will help other distros, too).

------
andschwa
I've been working on this for some time now, and am ecstatic to share this
project with the world!

------
2close4comfort
That is awesome. Truly an inspired set of changes at Microsoft lately.

~~~
XzetaU8
Indeed

[https://news.ycombinator.com/item?id=12305598](https://news.ycombinator.com/item?id=12305598)

~~~
rjbwork
If people could be relied upon to maintain their own systems and apply
security and other updates, this wouldn't be a problem. The unfortunate
reality, is that they can't.

------
Nelkins
PowerShell is an improvement on Bash, but I'll still be using F# .fsx files
for my .NET scripting needs. That said, the real reason I'm excited about this
release is that there's finally a great example of a very large project based
on .NET Core [1]! Most other examples I'd seen were pretty small, so this is
really helpful.

[1]
[https://github.com/PowerShell/PowerShell](https://github.com/PowerShell/PowerShell)

~~~
giis
Can you share advantages or powershell improvements over Bash ? or is it kind
of over-statement?

------
gargravarr
PowerShell is one of Microsoft's better offerings, it runs rings around Batch,
thank heaven. However, it has its own quirks. Loads and loads of stuff done
implicitly (unwrapping arrays as parameters when constructing an object?) and
the .Net integration can be annoyingly flaky. Add in the bizarre syntax, some
kind of halfway house between Bash and C#, and you quickly end up writing
enough code to hang yourself.

My favourite: defining functions more or less like any other C-inspired
language: function abc([string]$param1, [string]$param2) { #do stuff }

...but if you CALL that like any other C-inspired language: abc("string1",
"string2)

PowerShell mashes the two strings together and ignores the second parameter.
Drove me mad when I started out. Incredibly inconsistent.

I like Microsoft's effort here, and the design is a lot better, working with
objects, but not on my Devuan box!!

------
trevorsullivan
You can run PowerShell Core inside of a Docker container quite easily as well.

[https://channel9.msdn.com/Shows/msftazure/Run-PowerShell-
Nat...](https://channel9.msdn.com/Shows/msftazure/Run-PowerShell-Natively-on-
Linux-with-Docker)

------
ed_blackburn
I'm something of an OO zealot and I'm a C# developer so I'm familiar with PS
and probably it's target audience so to speak.

PS is a fantastic product but I just find it too verbose. When everything is
expressed as an object with properties you need to reference the object and
the appropriate property. I know there are alias' for common Bash operations
and idiomatic PSallows shortcuts but most people who use PS for short spells
to automate something are unlikely to be adopting idiomatic styles.

For PS to gain traction I feel like it needs to be a superset of Bash and
offer an easier, intuitive gateway. I know it has enormous potential, I know
it has massive capabilities but still I only reach for it as a last resort. I
don't think I'm alone in the matter :/

------
duiker101
I like Microsoft's move here. They first made available bash on Windows and
then PowerShell on Linux. So no one is going to cry. And now they will improve
PowerShell and win over users with a good tool rather than just because that's
the only one available.

------
131hn
Powershell is an old tech, so browsing the source tree on github should show
some of MS internal practices & guidelines in the old times. Yet the github
project start in feb 2015. Where is the source code before that ?

~~~
dboreham
On some interal MS RCS.

------
erikb
But why? It's like if VW invents doors that can be connected to BMW cars.
(spoiler: BMW cars already have doors)

------
prewett
I don't understand Microsoft any more. They are making all their proprietary
lock-in stuff open source, and they are alienating their user base. I've heard
a number of long-term Microsoft users express frustration the user experience
(not to mention the Windows 10 upgrade shenanigans). It was bad enough that my
dad, a long-time lover of Windows NT (he liked its VMS legacy) switched to a
Mac and loves it.

I feel like Microsoft might be pulling a Sun here. However, I'm sure a lot
more likely to use Microsoft stuff if I'm not tied in to Windows.

~~~
Frondo
As a counterpoint, I've been a full-time Linux user (desktop and server) for
well over 10 years, with server use for 20. (I'm 40, so while others have used
Linux/unix longer than me, this is the entirety of my adult working life.)

With the open-sourced .NET stuff, I've been active in pushing for projects I
touch to use it. And, I now dual-boot Windows 10 and Linux, actually using
Windows for daily work for the first time in a decade.

Open source C#? Sign me up. And I really do like the Windows 10 interface. The
telemetry stuff just doesn't bother me. I think it's largely a red herring.

(And, furthermore, I think privacy stuff really has to get nailed down in laws
and society, not just with technology. Going just for a technical solution
means you'll always be chasing the answer. Encoding it in laws, and setting
people's societal expectations, means you get to set the answer instead of
follow behind.)

------
ilurkedhere
Finally! It's exactly what we need since there are currently no scripting
languages available in Unix user-land for when you need to do something beyond
/bin/bash

~~~
jshevek
Poe's law

------
codeulike
_The initial release is an “alpha” and is community supported. In the future,
we will deliver an official Microsoft released version of PowerShell based on
open source to anyone running a supported version of Windows or nix. The
timing of the official Microsoft version will be based upon community input
and business needs. We hope all of you will help us get it right!_

'Based on business needs' = if there's ever enough demand.

Still, pretty cool.

------
tgarma1234
Windows can have a neat-o shell all they want but when you open powershell on
a windows computer you still get the following when you try to ssh... so, not
really seeing the point here:

ssh : The term 'ssh' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path
was included, verify that the path is correct and try again. At line:1 char:1

~~~
jaykru
see:
[https://github.com/PowerShell/Win32-OpenSSH](https://github.com/PowerShell/Win32-OpenSSH).
ssh is coming, likely in an official capacity in the future (this is an
official MS group on github)

------
gsmethells
Having lived around the Windows world since Win 3.1, I cannot get over the
sneaking suspicion that somewhere deep down Microsoft is working towards an
attempt to "embrace and extend" Linux. Maybe it's just me, but they've gotten
rather interested in Linux lately and they are reaching out to it in seemly
innocuous ways. I hope I am wrong.

------
Pxtl
I just spent all day trying to figure out why Invoke-SqlCmd only works in
certain extremely convoluted ways. I'm going to assume this has more to do
with the Sql Server team than it does to do with the powershell team, but
still: I cannot be excited about anything to do with Powershell since I'm now
up to like 10 Googles per line.

------
knocte
Strongly-typed scripting is nice, but I think PowerShell has horrid syntax. I
would rather take .fsx scripts any day.

~~~
knocte
(.fsx scripts are F#, so also strongly typed)

------
Corrado
I think PS is miles above CMD but there are still things that bug me. For one,
loading scripts into the current session is super confusing to me. Sometimes
they are automatically available, other times I have to load them, still
others aren't available at all. I'm guessing there is some way to "install"
scripts so that they become cmdlets but I don't know what it is.

Another big problem I've had is backgrounding commands. There are multiple
ways to do it and I always seem to pick the wrong one. For example, I want to
install a bunch of things with Chocolate so I do a lot of Start-Process
commands, but they seem to run serially and not in parallel. It's just very
difficult to manage jobs in PS, or at least I haven't found any good
information on how to do it properly.

------
be5invis
OK, so you can finally fix the bug that breaks non-ASCII, LF line endings and
binary redirection. Link:
[https://github.com/PowerShell/PowerShell/issues/1908](https://github.com/PowerShell/PowerShell/issues/1908)

------
coldtea
A lot of people seem to be missing the point of PowerShell. The concept is far
more poweful than the unix shells, because it's a superset of them. It's like
Haskell and Haskell-without-types.

We could only dream we had something like strongly-typed pipes in Unix -- and
that various tools supported it too.

------
randyrand
It's amazing what happens when a company starts to lose market share, isn't
it?

------
BooneJS
I've got this embarrassingly ugly perl-inside-cygwin to automate something
with a GUI tool that happens to have an even worse scripting plugin.

I suspect Powershell would allow me to take the whole process native?

------
tossaway42
I dreaded this day would come. As a recent ex-Microsoft alumnus, and with
years of System Center insanity behind my back, I saw this coming, and even
heard faint echoes of it in the hallways as I left.

I have deep respect for Jeffrey and what he's accomplished (there's a great
video of Jeffrey talking to Linux sysadmins and explaining the genesis of
PowerShell, including the insane amount of money we burned before he wrote the
bits that actually worked over Christmas break), but the grand (corporate)
motivation for sponsoring something like this is more driven towards making
sure the MS datacenter management tooling (which comprises trendy things like
OMS and System Center) attain minimal mindshare in both the on-premises
datacenter and on Azure.

That is not something most people would care about, but Enterprise IT likes
having a single hammer for all its nails, and PowerShell's promise is to be
the one thing that your garden variety IT sysadmin would love to use to
automate every single system in your company.

Ironically, PS is effectively lousy at automation because of its inconsistent
error handling and incredibly hard to maintain over time due to constant
changes and updates, so I'm curious to see how it will evolve to manage all
the different abstractions in the UNIX world (knowing my former colleagues, it
will likely follow the OMS route of "Windowzifying" those abstractions and
making them "uniform" \- i.e., Windows-like).

The underlying issue where it regards PowerShell is not the language itself
(although yes, something better, more coherent and with an actual standard
library would have been nice, like Ruby or Python). It's Windows.

Windows (the enterprise platform) has always been a hectic patchwork of
multiple components (AD, SQL, IIS, etc.) that evolve at their own pace, and
PowerShell grew to encompass them not merely because basic automation was an
actual checkbox we had to have to be able to sign some hefty deals, but,
technically because _none of it had open APIs_. Nor would it be feasible at
the time to go back and re-do any of it with proper language-agnostic APIs.

It's very nice to iterate over AD entries and set some fields with a couple of
lines of PowerShell, yes. But it's also fundamentally impossible to do so with
just about anything else.

Tying it all to the .NET stack (which is still prevalent in everything done
internally, because that's what customers invested in) turned out to be a
lazy-ass way to ensure we could check all the boxes in terms of automating new
things as they came along (mostly - WMI is still iffy). Effective and
"scriptable", but essentially still proprietary.

And right now, since my former colleagues are betting the farm on Azure, I
expect PS for Linux to become the de facto scripting language for managing
Linux on it (it already is, to a degree, since PowerShell DSC already lets you
"manage" Linux VMs).

For interactive use, PS was a pain to learn (I was a VMS guy, originally),
but, most importantly, it was a nightmare to maintain, because cmdlets would
pop up and disappear between releases, change semantics, and were quite often
inconsistent among themselves.

I shudder at the level of technical debt would-be adopters will be buying
into, and wish them luck.

~~~
krupan
mod parent up!

(sorry, all this MS vs. Linux discussion brought me back to the slashdot days)

Seriously, powershell finally makes sense to me after reading this. Thank you.

------
qjighap
I am pretty excited about this as I have few cross-platform languages that I
can use (due to conditions at work). I am wondering how many distros will
adopt it into their repos.

~~~
amyjess
I fully expect this to be in the AUR in under a week. Probably within 48
hours, even.

~~~
amyjess
...and it's already in the AUR. It doesn't run yet, though.

------
bitwize
Get-CobolFingers -Variant=Microsoft -Payoff=MuchLessThanAdvertised

~~~
jodrellblank

        Get-Cob{tab}{tab} -v{tab} M{tab} -P{tab}{tab} M{tab}
    

cmdlet long parameter names both a) work if you type "the shortest non-
clashing prefix", and b) tab complete. And if a parameter takes an enumeration
you can tab complete those, too. Which is incredibly nicer than usage: somecmd
-umhcglsrfmh line noise and man page lookups.

~~~
NetStrikeForce
Actually, you can ctrl+space in latest versions to get a list of parameters
(or values if the parameter takes an enumeration) you can scroll around with
the arrow keys :)

------
joeblau
Is there anything preventing Microsoft from putting a Linux shell natively on
Windows? I'm sure PowerShell is awesome, but the DevOps person in me is not
excited at all.

~~~
guitarbill
this x100. i wish they'd work on chef/puppet/ansible/salt support instead.
probably never going to happen though, so much functionality in windows isn't
available from the command line.

~~~
jodrellblank
Yeah, probably never happen. You'd never see J. Snover the 'father of
PowerShell' at ChefConf last year talking about PowerShell Desired State
Configuration (DSC) and its support for Chef
([https://www.youtube.com/watch?v=Gh9zfm5gVEg](https://www.youtube.com/watch?v=Gh9zfm5gVEg))
or two years ago the PowerShell team announcing a DSC Cookbook for Chef
([https://blogs.msdn.microsoft.com/powershell/2014/07/29/chef-...](https://blogs.msdn.microsoft.com/powershell/2014/07/29/chef-
with-powershell-dsc-now-public/)) or last year announcing Puppet's
announcement of support for PowerShell DSC (
[https://blogs.msdn.microsoft.com/powershell/2015/10/06/desir...](https://blogs.msdn.microsoft.com/powershell/2015/10/06/desired-
state-configuration-puppet/) )

You know that the entire point of PowerShell is to make Windows functionality
available from the command line, for centralised management and configuration,
for automated provisioning on Azure, right?

~~~
guitarbill
I think we have different definitions of support. What constantly amazes me is
how similar many OSes are - except Windows. DSC hasn't changed that, even
though Mr. Snover is a very clever guy. If you're in a homogeneous
environment, DSC is probably great. But it's 2016, and environments are
heterogenous. Even shipping an SSH client and server with Windows would go a
long way as far as interop goes - which may be happening AFAIK (OK, I admit I
love SSH, but it's so useful). PowerShell feels a lot like the xkcd n+1
standards thing. I don't use bash any more, but it (along with ash/dash) is
the de facto standard.

Sorry I can't get more excited about this, which is especially sad because my
background is QBasic -> VB -> C#.

------
jitix
In the fifth paragraph: "But this is a new Microsoft". They are acknowledging
that they made mistakes in the past due to which the missed out big on the
server market. As much as .NET is popular, it would have been a lot more
popular (vs Java ecosystem) if they were OSS from the beginning. As primarily
a Java developer, C# seems more elegant to code in.

As they say - the first step to fixing a problem is admitting that you have a
problem.

------
MichaelMoser123
the Unix shell has been quite static in recent decades; its a sign of success,
sharing unstructured text through a pipe is good enough for most
administration tasks and people got used to the many command line options of
grep/sed/ps and friends.

is this really the best of all possible worlds? I think that its good that the
shells get some new competition in the form of PowerShell - maybe some new
ideas will come out of it (maybe like passing s-expressions or json around the
pipe - something more structured so that we could do with fewer command line
options - maybe)

doing structured data 'right' is difficult (right meaning uniform and
expressive ways of handling it); historically it was easier to stick with
unstructured text - but maybe there is a better way that would be easier to
learn and handle.

(Well a major problem of structured data is that there are many possible ways
of structuring - leading to more problems for the consumer of the data; maybe
it was not adopted in system administration because there is not common/agreed
upon culture of how to structure things).

------
autoreleasepool
Excellent news. Now I might actually learn PowerShell

------
pagade
Its not clear to me what this means to Powershell SDK?
([https://technet.microsoft.com/en-
us/library/ff458115.aspx](https://technet.microsoft.com/en-
us/library/ff458115.aspx)). Will I be able to write applications (not scripts)
in say C++ to communicate to say SCVMM?

------
wineisfine
Great. I wonder what Steve Ballmer is thinking.

~~~
RankingMember
Ballmer's long gone, so he's probably thinking about the LA Clippers (he's the
owner).

------
tgarma1234
Still need something other than powershell to access a linux server from a
windows machine, which seems ironic...

ssh : The term 'ssh' is not recognized as the name of a cmdlet, function,
script file, or operable program. Check the spelling of the name, or if a path
was included, verify that the path is correct and try again. At line:1 char:1

~~~
ygra
What would a shell have to do with the existence of a userland program? ssh
isn't exactly a bash built-in either ...

------
brbsix
An (unofficial) PowerShell AppImage is now available for anyone interested in
trying out PowerShell. No installation necessary.
[https://bintray.com/probono/AppImages/PowerShell#files](https://bintray.com/probono/AppImages/PowerShell#files)

------
garaetjjte

      milek7: ~$ time powershell exit
      
      real	0m3.323s
      user	0m4.140s
      sys	0m0.507s
    

Seriously?

~~~
garaetjjte
Propably bit unfair comprasion, but...:

    
    
      milek7: ~$ time bash -c exit
      
      real	0m0.009s
      user	0m0.007s
      sys	0m0.000s

------
perlgeek
Can I write tools that use PowerShell and .NET objects in non-.NET languages,
like Python or Perl (using the C implementations, not a .net python)? Like, is
there an API that I can implement to interact to implement PowerShell-like
"native" tools?

~~~
zhengyi13
It's not the most efficient way to do it, but if you just want to get it done,
Powershell has had e.g. ConvertTo-Json since version 3, I think? You can
serialize pretty much anything at that point, and just hand that off to your
target language.

If you're talking an FFI though, not so much, I think.

------
coding123
On the Java side here I tend to use groovyConsole when I need to do crazy one
off stuff like open excel files which then require a DB query, and maybe to
run regexs for little things. I use bash for running docker commands in a
specific sequence.

------
gbraad
I made a Docker container running PowerShell on CentOS7:
[http://github.com/gbraad/docker-mono](http://github.com/gbraad/docker-mono)
Have fun with it...

------
rvern
Coming soon to Debian: [https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=834756](https://bugs.debian.org/cgi-
bin/bugreport.cgi?bug=834756).

------
leoc
If PowerShell on Linux takes off properly, then that will lead to one of the
biggest improvements in the general computing ecosystem in a long time;
roughly comparable to the adoption of DVCS, maybe.

------
elchief
`cat youCantBeWorseThanCmdRight.utf8.txt > openMeAfter.txt` in PowerShell and
cmd, and tell me how good posh is

now go tail a 1GB file in posh and bash and tell us your results

~~~
ygra
PowerShell defaults to UTF-16 encoding, indeed. It's a design choice on a
system that uses UTF-16LE as its character encoding and one from the early
2000s. UTF-8 wasn't nearly as prevalent back then. However, the _text_ in both
files is still the same.

    
    
        Get-Content -Tail some1gbfile.txt
    

works quite well, by the way.

~~~
elchief
well, enjoy typing

    
    
        Get-Content -Encoding utf8 .\utf8.txt | Out-File -Encoding utf8 out.txt
    

and manually removing the BOM, for the rest of your life

~~~
ygra
It's still the same text. Not all of us have to deal with tools that can't
handle Unicode or require exact byte-for-byte round trips. Yes, it bugs me
too, from time to time, although less so than the extra line break at the end.
In that case I have to go through [IO.File]::ReadAllText and ::WriteAllText
and thus deal with full paths again. There are a few gotchas.

 _However_ , by now we can actually _fix_ that issue. The encoding parameter
that the file system provider adds to a bunch of cndlets is an enum and we
_can_ add a new value there.

------
atmosx
I am still trying to understand if there are any tangible benefits on learning
powershell over bash/zsh.

~~~
sidereal1
I wouldn't think of it as a replacement for bash/zsh or other shells. Those
are meant to control the OS and run programs where powershell is an
environment to programatically interact with API's. They can both fill similar
roles but their not the same.

------
partycoder
Piggybacking on this thread, I wonder if there's a robust PowerShell profiler
out there.

------
SwellJoe
I bought a new laptop recently, and used Windows for a little while (I didn't
have time or a USB drive handy for installing Linux for a couple of weeks). I
was pleasantly surprised at PowerShell. Not because of all the stuff people
normally like about PowerShell; all the PS things are still confusing as hell,
to me. But, because MS has embraced compromise and meeting developers where
they are in ways that I have never seen from MS until recently.

PowerShell now accepts most of the common UNIX shell commands (this feature
could have come at any point in the past decade, or so, as that's how long it
has been since I last tried PowerShell, when it was new). The changes that
resulted from that change of mindset has made it so I could actually stay in
PowerShell long enough to learn other things. Having to re-train my muscle
memory away from using stuff like ls, cp, cd, was just a bridge too far, and
so in the past I'd revert to cmd (as truly awful as it is) until I could get
bash installed from Cygwin.

They seem to have, somewhere along the way (again, it may have been a decade
ago, for all I know) given PowerShell a reasonable UNIX shell facade. Sure,
it's not quite shell, but bash/POSIX shell isn't flawless; I'm OK with
changes, as long as I don't have to think every time I want to do basic stuff
that I've been doing for 20+ years with a POSIX or bash shell. PowerShell has
some Long-Ass-Command-Names, and I still find them difficult to stomach, but
at least all the common sh equivalents (except _which_ , for some reason)
already have aliases.

Anyway, the change from a company that tells developers how to work (and for
whom the command line takes a back seat to GUI tools and most developers live
in the Visual Studio environment, I guess) to one that looks at what's working
in all sorts of developer communities and borrows liberally from the best of
them, means that having to work on Windows is no longer the worst possible
thing I can imagine (I'm even considering porting our products to Windows,
which is a suggestiong I have laughed at numerous times over the years).

PowerShell, as it is today, reflects that change, and open sourcing so much
stuff lately seems to prove it is sincere rather than merely aping the most
visible traits of these OSS communities without actually embracing the single
most important facet of them.

I still have an old OSS nerds suspicion of Microsoft, and I will probably
never choose Windows as my favorite desktop OS (and I can't even _imagine_ it
for server usage...how would you even do that without a decent system package
manager?), but my most recent experience with Windows was almost entirely
positive. Interoperability has gotten pretty good. SSH is a normal thing,
rather than a complicated setup process.

It's interesting, to me, that Apple seems to have been retreating on these
fronts. They seem to be less interested in participating in OSS than they were
in the early days of Mac OS X. That may be my own ignorance of the platform,
but I don't see Apple making these kinds of overtures to Linux/UNIX developers
on such a regular basis. Maybe they figure the community is taking care of it
for them, because so many devs use Apple laptops even while deploying to Linux
servers, so the ecosystem is still pretty strong even without Apple doing much
of the work.

~~~
ocdtrekkie
"and I can't even imagine it for server usage...how would you even do that
without a decent system package manager?"

I'd be pretty hesitant myself to use it as a web-facing server. But if you're
running an enterprise network, the reality is almost everything you need on
your server can be added and removed from the "Add Roles and Features" wizard.
There's not a whole ton of outside packages you would want to add.

If your server is running third party software, you should probably only run
that one piece of software on that particular server, and that software should
install everything it needs to run on it's own.

------
jijji
Powershell released in 2016 still isnt as powerful as Stephen R. Bourne's
shell released in 1971.

------
shadowmint
Is this actually useful?

I always thought powershell was largely just for interacting with windows
components, like installing an msi or talking to active directory.

What would you actually practically use this for on a linux box?

~~~
hirsin
Scripting. While I typically use Bash on Windows to use grep to interactively
test my webserver, I'm much happier using Powershell ISE (which I don't know
was ported [1]) to write standard tests with multiple parts, particularly ones
that require e.g. checking cookies on the response.

1\. Looks like they ported a service that does the same.
[https://github.com/powershell/powershelleditorservices](https://github.com/powershell/powershelleditorservices)

~~~
shadowmint
Can you be more specific?

Powershell instead of using grep? Or as a testing framework? Or an embedded
interactive REPL?

I mean, just broadly, with basically zero knowledge of powershell, what I see
is a custom scripting language with a set of common 'macro' commandlets that
do little tasks.

...but, I don't see how that's useful?

How do you import a package to upload a file to S3?

I can't just install
[https://aws.amazon.com/powershell/](https://aws.amazon.com/powershell/)
right? ...because that's not ported? So...? etc. etc. for other practical
tasks.

Not trolling; just genuinely curious what actual tasks are actually supported
that you could actually use this for, beyond trivial stuff like 'check if file
exists'?

~~~
steveataws
We are currently performing final validation on our new AWSPowerShell.NetCore
module and hope to publish it to the PowerShell Gallery in the next couple of
days.

Blog post to the announcement:
[http://blogs.aws.amazon.com/net/post/TxTUNCCDVSG05F/Introduc...](http://blogs.aws.amazon.com/net/post/TxTUNCCDVSG05F/Introducing-
AWS-Tools-for-PowerShell-Core-Edition).

------
puppetmaster3
symbolic soft link yet?

------
RubyMyDear
People laugh at me when I tell them I switched "back" to Windows after decades
of Unix and Mac programming. But it's a really good, productive platform.
Microsoft really seems to be heading in the right direction now.

I hope .NET starts taking off on other platforms, too, because it really is a
much better system than Brand "J".

~~~
clebio
If only they resolve the privacy leakage concerns in a reasonable manner.

~~~
oblio
In the Windows 10 thread someone posted this hilarious comic:
[http://www.bonkersworld.net/organizational-
charts/](http://www.bonkersworld.net/organizational-charts/)

We just have to hope that "our" guys (OSSers) have bigger guns than "those"
guys (privacy destroyers).

~~~
UK-AL
Considering most OSS devs slam analytics on literally every website. Really
there isn't much difference.

That's what windows is sending. Analytics information. Yet I can guarantee
every major website developed by open source using devs is sending the same
information for their apps. Yet no one complains.

~~~
oblio
Look at the comic. I'm talking about divisions inside Microsoft. I doubt it
very much that Scott Hanselman (for example), who is in the camp that pushes
Microsoft to open up, is the kind of person that designed the privacy controls
(or their lack) in Windows 10.

------
xyzxyz998
I don't want to be that smug ITT guy but it has to be said:

Bash != Readline and Bash != coreutils and Bash != (what gives your machine
the ability to do ssh)

Bash _is_ the stupid if for while syntax

You have Readline in powershell and you can use coreutils binaries in
Powershell. No problems there.

------
hubert123
Powershell is a horrible abortion, what the hell do people see in it? I mean
that on a language level, I cant speak for Windows specific features. I have
once written a simple script to copy a folder recursively to a fileshare,
rename some stuff, edit some files. Took me 4-5 hours. I then did it with
julia in 30 minutes and I never did anything in either language before that.
It's insane the kind of weird language crap you have to deal with, the weird
options that some functions need and worst of all: That the functions have
weird problems, like I dont remember the specifics but I'm pretty sure that
the folder copy function had no option to actually recursively copy all of
them. I had to work around that. Then I had to work around some more specifics
around file/folders. In a normal language you would just call something like
"copyFolder(srcPath, dstPath, recursive: true)" nope.

~~~
mastry
I wouldn't go so far as to call it a "horrible abortion" \- but it can be
painful to use at times. I manage several Azure environments with PowerShell
and not a day goes by that I don't wish there was something better. Especially
on those days when I have to dig into Azure's JSON templates.

There is an SDK for Python, but I haven't had an opportunity to try it. If
anyone has used it I would love to hear about your experience.

~~~
discordance
There are the Azure REST APIs that you can curl. Or the Azure-CLI on Linux and
Windows.

That said, I've noticed that powershell seems to get priority with Azure
support before the azure-Cli client, so there are a few gaps here and there.
I've been told that the Azure REST APIs are all in step with Powershell
support, but sometimes go in documented unfortunately.

~~~
mastry
To be honest, I prefer PS to the Azure CLI but I have had to resort to the CLI
on a couple of occasions. If I remember correctly it was to reset credentials
on a VM (which wasn't possible with PS at the time). I guess the main problem
with the CLI is that it's not a shell or a general purpose programming
language.

The Azure REST API requires a ton of deeply nested JSON data structures. Take
a look at this [1] sample. I just can't bring myself to work with that every
day.

I really need to buckle down and try that python API.

[1] [https://msdn.microsoft.com/en-
us/library/azure/mt163591.aspx](https://msdn.microsoft.com/en-
us/library/azure/mt163591.aspx)

------
lottin
This might come across as a little rude, but I really wish Windows developers
stayed away from Unix. I moved away from Windows a long time ago because I
didn't want anything to do with Windows or Microsoft, and I went to great
lengths to avoid their software and their proprietary file formats. Now we had
command-line interfaces, desktop environments, running on top of an
incredible, powerful Unix-like OS. It was free software, and it was Microsoft-
free. Please, don't ruin it.

~~~
NovaS1X
I have to agree. I can only feel like this is pollution or another EEE
attempt.

~~~
Delmania
Tell me how well EEE works with an optional application released on Github
with an MIT license will work.

~~~
xigency
GitHub is just the distribution here, and software licenses are subject to
change. That's the embrace portion.

Hypothetically, Powershell becomes widely used on Unix, and Microsoft releases
Powershell 2, which extends Powershell. This version only runs on Windows and
contains killer features. These new features can't be implemented from the
GitHub source either technically or because of intellectual property. That's
the extinguish step.

~~~
Delmania
So then you switch back to another shell?

~~~
xigency
Yes, or you buy Windows. That's the purpose of EEE.

That's similar to saying, use a different word processor. Just in this case
Powershell is less used than Microsoft Word.

~~~
Delmania
The purpose of EEE is to extinguish a technology. Your situation doesn't hold
up because PowerShell is MIT licensed. Even is Microsoft did release a new
version that was Windows only (which, given their use case, makes no sense),
there's nothing stopping the community from forking the repo and adding those
features, or porting those features to another technology.

People will continue to trumpet the sound EEE banner every time Microsoft does
something that people like. The problem is that waging an EEE campaign with
MIT licensed technologies on Github is extremely ineffective. Also, it's
pretty clear that while Windows is still a big part of Microsoft, they are
trying to move beyond the desktop. The rise of macOS, the proliferation of
mobile devices with iOS and Android, all these developments have caused the
company to shift its strategy to the cloud, namely Azure. Even in that space,
they can't wage an EEE campaign, because with competitors like Amazon and
Google, there's no way they can lock you into Azure

Times have changed, and so has the company's strategy. Whether or not the
company's culture has changed is not something I am concerned with. They have
enough watchers that call them out, like with the Windows 10 update debacle
and the collection of telemetry data. I am more interested in their actions
with regards to their technology, because it's my opinion that have some of
the best people working on languages and tools.

------
sdegutis
Cool. [https://powershell.org/](https://powershell.org/) needs some work
though. It screams WordPress 2008 website, and I'm not given any idea how to
install or use it, or what it's good for, just by looking at the front page.

~~~
erk__
It is not a Microsoft website.

------
treebeard901
[https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish](https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish)

~~~
riboflava
This could really be used as the default reply for a lot comments here that
don't get why people are still a bit antsy about MS apparently doing things
for the good of others besides MS. But it's probably an argument only worth
having in one thread. I can't really add much to the argument, other than I
think my feeling matches a lot of others in the OSS world: ever since Nadella
took the helm I've been cautiously optimistic that we're not just part of a
very long embrace+extend cycle that will end with a crushing extinguish,
additionally as the years go by without an attempt at extinguishing but even
more embracing+extending instead, with MS having lost so much of its former
power and weight in the industry as a whole, I think even an extinguish
attempt wouldn't be all that successful. It's not enough for me to actually
use these offerings, but I'm not going to go on a rant that no one should use
them or distros should avoid packaging them. (e.g. Stallman once had a
Mono+Banshee rant that was probably justified at the time but it's hard to
argue the position now.)

