5 posts • joined Thursday 10th January 2013 20:08 GMT
Re: Power Shell?
I should correct my statement: Yes the window may open instantly, however it is still 11 seconds before the shell is actually usable. It doesn't matter if the system has been rebooted recently or not. Since we're likely using different hardware, I'm sure the speed will differ, so I can only comment on what I can see here. On the same hardware, the unix shells open immediately and powershell does not. So there's something similar to .profile?
>On the contrary, Unix shells lack many, *many* of the features of PowerShell.
Sorce? I've noticed tab completion works some of the times. The ls command is there which is nice and ps is there. Are there emacs bindings? No I have to use the home and end keys if I want to manipulate the line I'm working on. Can I delete a word backwards? Not that I've found. Can I kill the line I'm working on? Again, not that I can see. Aliases are nice, however the fact that there are unix like commands aliased over enforces the point that these should have just been adopted rather than abstracted out after the fact.
>Yes it does. Text is just a sequence of string objects. But you will hardly ever use the powerfull string functions of PowerShell, because they simply are not needed when you operate with objects.
Strings are the whole point of working on the command line to begin with. Examples? Sources?
>There are short aliases for most common commands, all parameter names can be shortened as long as they are ambigous.
Awesome! That shouldn't be too hard because all the parameters I've seen so far are ambiguous
>Do not be fooled by the fact that it is considered good style to use the long forms when illustrating code.
I'm so glad style is important here. Most sysadmins I know are concerned with getting something done correctly and in an expedient manner.
>PowerShell can be every bit as terse as bash - sometimes more so.
>Ignorant. PowerShell has always accepted both the forward slash as well as the backward slash forms.
I'm so glad you're mature with the name calling and labeling. But I don't mind learning things and TIL that you can use a / slash in the command line. It just happens to get converted each time you tab to .\
>Just save it. Or set a function to save it on exit and reload it on initialization. Or better yet: Build a library of actual snippets. Oh, bash doesn't have snippets?
Or just use a shell that has all of this built in. Why should I need to build a library of information that should be included by default? I'm pretty sure bash doesn't need `snippets`, else it would already have them.
>Where is the consistently implemented risk management in *sh shells? In PowerShell you can run any action command with -WhatIf. In that mode no changes will be made to the system. Instead the changes that *would* have been made are reported to the user. It even works with scripts: If you support -whatif as a script parameter it sets global preference to "whatif" and none of the commands of the script will actually execute.
Risk Management? Now I am sure you're just astro-turfing for MS. In bash and other shells you can pass the -x flag and see exactly what your script is going to do when evaluated by the shell. We don't usually work on production data when writing scripts so there isn't a need for a -whatif flag. When we are working in production there are many checks to make sure you don't overwrite a file, make sure it exists, or test for multiple other conditions.
>Where is *sh shells integration with transactions? You can use PowerShell to connect to multiple database servers, message queue servers, etc. and perform tasks in a transaction context and ensure transactional consistency.
Paralell - http://www.gnu.org/software/parallel/
xargs is also viable when dealing multiple systems
>Where are *sh shells suspendable and resumeable scripts?
Bash and other shells have job control to both suspend and resume scripts.
>PowerShell workflows can run scripts across system restarts, suspend a script/job on one machien and resume it on another machine.
Crontab and paralell
>How do you create parallel *sh scripts? PowerShell supports parallel execution within a workflow script.
By using Paralell or xargs
>Linux: tail filename.log
>PowerShell: gc filename.log -La 10
No, Not done. It does not work so I'm guessing you're using a custom library of sorts, not built in functions:
PS C:\> gc filename.log -La 10
Get-Content | A parameter cannot be found that matches parameter name 'La'.
At line:1 char:19
+ gc filename.log -La <<<< 10
+ CategoryInfo : InvalidArgument: (:) [Get-Content], ParameterBindingException
+ FullyQualifiedErrorId : NameParameterNotFound,Microsoft.PowerShell.Commands.GetContentCommand
It's really hard for me not to poke fun at Power Shell. I've really tried to give it a go, but coming from a very strong background in command line driven systems, it's really awful.
1. Takes an inordinate amount of time to actually start. 11 Seconds each time on speedy, modern hardware
2. Lacks many of the basic features of a unix-like shell
3. Has no concept of handling text in an elegant manner, every thing is an ``object``
4. It's WAY too wordy for even the simplest tasks
5. PATHs are still using the wrong slash
6. No persistent command history
Consider the following:
I need to see the last 10 lines of a log file (ran into this recently with being required to run Splunk on Widows..)
Linux: tail filename.log
Windows: get-content .\filename.log | select -last 10
Wait for 15 seconds while command is parsed and eventually get the last 10 lines of the file, only the data that I needed was scooted past the 10 line marker while the command was taking an eternity to run.
microsoft just doesn't get it. They continually fail to learn the KISS lesson and continually elect to do things differently just for the sake of being different.