Hacker News new | ask | show | jobs
by iotscale 3522 days ago
I use Windows daily, and I'm not sure how to feel when I consider the daily attempts against my choices and privacy. It feels like they try to be nice but unintentionally mess up sometimes.

Feelings aside, they've done solid open source work, quality of which can't be overstated.

But... Powershell, really? The Linux subsystem exists now, you know :)

edit: the Powershell thing was just an opinion tease, come on everyone^^

3 comments

> I'm not sure how to feel when I consider the daily attempts against my choices and privacy.

This is my biggest complaint about Windows as a power user. I have no control over it: I can't shut off all of the telemetry reporting. I can't turn off Defender's active scanning and have it stay off for more than a day. I can't say "Don't reboot for upgrades between 6am and 10pm." "<video game> has been denied access to the video drivers" halfway through a game, forcing a restart.

I used Windows for my daily computer from 98 to 7. My work machines transitioned to Macs around that time, and I made that same transition with my other computers around the same time - the build quality and battery lifetimes were just too good to ignore. My gaming rig stuck with it and made the leap to 10, but it aggravates me in one fashion or another every time I turn it on.

So, I guess I'm headed the opposite way of most commenters. I considered XP and 7 to be the glory years for a daily driver, and now I can't get away from the platform fast enough.

Although I get your point, Windows has more powerfull configuration options than you might think as a user. E.g.Windows defender can be permanently disabled through administrative templates for your computer.
Well, for awhile. Software updates come along and re-enable these features all too frequently.

Not to mention, this feels a bit like how we used to have to manage Linux on the desktop: don't like X? Here's a configuration file you can edit. At least until another update comes along and breaks it.

It's been years since I've enjoyed chasing down new settings and finding what was reset every few days.

But it's a massive pain in the ass to do it.

Like I kinda want it, but not all the time.

Just like I kinda need to be forced to update, but not just suddenly "Well, that's it, we're shutting down now".

It's my fucking computer, if I really don't want to restart right now, what's the big fucking deal?

> It's my fucking computer, if I really don't want to restart right now, what's the big fucking deal?

The big deal is that, it's probably a pretty important security update. Forcing a patch prevents you from turning into the poster a few steps above, complaining that Windows is insecure and people lost data because of it.

> Forcing a patch prevents you from turning into the poster a few steps above, complaining that Windows is insecure and people lost data because of it.

Restarting the computer without ability to abort doesn't sound like a good data retention plan.

> I can't shut off all of the telemetry reporting. I can't turn off Defender's active scanning and have it stay off for more than a day. I can't say "Don't reboot for upgrades between 6am and 10pm." "<video game> has been denied access to the video drivers" halfway through a game, forcing a restart.

I can't speak to your video driver issue (reinstall it maybe?), but the rest of the things certainly can be done.. You can turn off Windows Defender permanently (or at least active scans). You certainly can schedule updates to 2 AM.

Not within Windows 10. At least, not without editing registry entries or setting yourself up with a domain to administrate settings as if you're part of a corporation. These are things that require too much work to research and (repeatedly) implement when there are other equally good OSes out there. I could spend an equivalent amount of effort and have as good of a day-to-day experience with Ubuntu or Debian.

Availability of gaming titles aside, there's just nothing that Windows does anymore that other OSes don't do.

> But... Powershell, really? The Linux subsystem exists now, you know :)

Piping objects is better than parsing text.

You'd think this would be true, but I've written a few non-trivial things in PowerShell and I always found it frustrating. The problem with the object pipeline is discoverability. When I'm writing a Bash script and I don't know what a command will return, I can just run it and see. Meanwhile, in PowerShell, I have to rely on repeated attempts at pretty-printing and/or external documentation, and I've found both to be lacking in several cases.

While I'm at it, another thing I didn't understand was why they chose to copy Bash's behavior of having anything printed or returned un-suppressed inside a function be part of its return value. That makes it harder to refactor and clean up your code.

> You'd think this would be true, but I've written a few non-trivial things in PowerShell and I always found it frustrating.

I've written some trivial things in powershell and found the complexity grows at functionality squared. Wouldn't go near it for anything complex.

I rely a lot on the built-in ConvertTo-Json command as a good way to get a sense of a full PS object. I've seen very neat GUI "object browser" tools you can pipe to from PS in screencasts, but don't do enough PS work to ever recall their names.
I just pipe to 'select *' now but converto-json sounds excellent.
Every time I fired up powershell to give it a try, I'm always immediately turned off by:

- How sluggish it feels. A remote bash shell on a raspberry pi feels more responsive to me than a local PS on a beefy PC.

- The way it is opened as a command prompt, in an unresizeable window (unless you fiddle with the settings every time), with no possibility of using shortcuts for copy/paste.

- Also, the default color scheme and font is horrible. I'm aware that it is trivial to fix it in the settings, but why turn off immediately first time users ?

For a normal user (not an IT admin) what are the benefits of learning Powershell for normal day use ?

What would be the best place to start, are there some good tutorials ?

I've tried and failed to dig PowerShell as well - I had someone explain to me once that it really only "feels good" when you're constantly doing stuff that's directly in its wheelhouse. If you're more developer than sysadmin and you only occasionally need to script something, it'll never feel very comfortable.

My "scripting" needs don't involve sysadmin-flavored work or distributing scripts to be run on different machines or environments, so I use Linqpad pretty much as a pseudo-shell and scripting environment on my own box and couldn't be happier with it. F# is good for short scripts as well; I've been trying to use it more but it's slow in Linqpad, and I'm addicted to my productivity in C#.

> The way it is opened as a command prompt, in an unresizeable window (unless you fiddle with the settings every time), with no possibility of using shortcuts for copy/paste.

God yes. Windows shell folk use ConEmu the same way everyone on OS X uses iTerm - see pheouk's link below.

Long time powershell lover here, many of us used to just always have an ISE instance running for its flexibility, but recently I found this post and have not looked back since.. my prompt is a Ctrl + ~ away :)

https://hodgkins.io/ultimate-powershell-prompt-and-git-setup

If you think powershell is slow, try powershell ISE; it's even slower.

Speaking of remote, the whole mechanism of PS remoting has never made sense to me either. It should work like SSH: encrypted interactive session across a well-defined port.

Agreed, coming from a Windows background posh remoting is just odd. Thankfully:

    get-packagesource -provider chocolatey

    install-package openssh
It's beta but I use it as a daily driver.
It only opens as a command prompt if you open a command prompt; you can launch powershell.exe directly. Also, as of Win10:

- CTRL+A, CTRL+C and CTRL+V shortcuts work (as does CTRL+C as a BREAK command--it understands by the context of whether or not you have text selected)

- There are a bunch of new shortcuts[1]

- If you edit the properties of the Powershell terminal once, it should stay resizable (I think--correct me if I'm wrong, please)

- If you right-click on the Taskbar and edit the properties, you can make the Win+X menu replace its Command Prompt and Command Prompt (Admin) with Powershell Prompt and Powershell Prompt (Admin) [2]

- If the terminal isn't to your liking, you can try using the Powershell ISE (Integrated Scripting Environment) that comes with Windows. The Powershell ISE has debugging, syntax highlighting, and support for multiple tabs.

- Pretty much anything you see in a new Windows 8/8.1/10-style window (e.g. the Settings menu that has largely supplanted the Control Panel) is, under the hood, written in Powershell... So anything that they do, you can do with Powershell.

- You can make GUI applications relatively easily [3]

Most of the benefits of Powershell are the same benefits of any other CLI--you get repeatable, powerful commands that can run locally or remotely and that will function basically the same on any two given systems (assuming same version of Powershell and same Execution Policy setting).

Powershell is relatively verbose, but that means that everything is pretty clearly named to indicate its purpose and function. The commandlets have excellent documentation, complete with description, usage instructions, examples, and links to additional online resources/articles. Also, it has tab-autocompleting out the wazoo. And you can use wildcards with the Get-Help command--want a Powershell command for manipulating Services settings but don't know if such a thing even exists? `Get-Help service`. Want to see a list of every Powershell alias, commandlet, etc? `help *` (help is an alias of Get-Help).

If you're accustomed to BASH, you can enjoy the default aliases that Powershell makes for BASH commands (e.g. cd is mapped as an alias of the Powershell command Set-Location).

OH! And you can browse the registry as a filesystem! Try `cd HKLM:\` to access the Registry HKEY_LOCAL_MACHINE.

[1] http://www.hanselman.com/blog/Windows10GetsAFreshCommandProm...

[2] http://lifehacker.com/replace-powershell-with-the-command-pr...

[3] http://www.drdobbs.com/windows/building-gui-applications-in-...

Thanks for the very detailed and useful post, I will definitely try it.

I should have specified that my last experience using it was with Windows 8.1, I don't think I have tried yet on 10.

Exactly. The amount of time I've wasted creating regexs to describe & cut out data with grep, sed and awk, vs a simple '| select some-field' in powershell these days is huge.
> Piping objects is better than parsing text.

One interface (text) is better than N interfaces, so no, piping objects is worse, because non .NET languages cannot participate in its API.

> But... Powershell, really? The Linux subsystem exists now, you know :)

Right, but running Powershell for Linux on the WSL doesn't work quite right...