Everybody knows that PowerShell is build on top of the .NET framework. Powershell on linux, mac OSx and nano server are all based on a adapted version of the .NET framework called .NET Core. Learn more about .NET core right here.
These two version are identicall, but not equivalent. The younger version of the .NET frame work (.NET Core) does not have the same potential of his older borther. Things that you would expect in the regular .NET framework on a Windows machine might simply not be needed on a linux box (e.g everything that has to do with the registry management is not availble on Linux) or doesn’t even make sense to port over to linux (The windows presentation framework (WPF) for example). This means that not all the functionality you are used to use on your Windows box will be available on a linux or MAC OSx box. So, existing scripts with GUI’s that handle registry settings will defenitly not work.
knowing that the .NET core framework narrows down the existing scope of possibilities of powershell, what DOES work then?
Well, on my first tests on the MAC OSx of my girl friend (yeah yeah yeah…) it shows that we have access to 345 cmdlets. But be aware, that some of them are actually shipped in this alpha version, but not working (such as the event cmdlets). Other ones have already reported to have some bugs, such as the ‘select-xml‘ cmdlet.
Other big topics such as JEA and Client side remoting are also not availble (yet).
What DOES work tough, are PowerShell Functions, PowerShell Classes (yay \o/), configurations, working with things like the file system, processes (Services not quite yet). There is no PowerShell ISE (since it is based on WPF) but visual studio code is availble on linux, and PowerShell editor services are availble on Sublime and Visual studio code. It is planned to be available on VI / VIM in the near future.
I recommend you read through the complete list of known issues that is avaible here.