124 karma · joined April 9, 2017
Yes, the output from calling native commands within functions can be a little tricky, and something that annoyed me initially, but once you understand the concept of passing objects around, not strings, you quickly get used to either capturing the output into a variable ($BlahResult = .\blah.exe /foo bar /baz 2>&1), where you can then access the string output (stdout) and any ErrorRecord (stderr) lines, or as you suggested, piping to Out-Null if you don't actually need the output. If you're writing your own 'echo' type statements for debugging or information purposes, you learn to use Write-Verbose or Write-Debug instead of Write-Output (which is what happens by default).
The unwrapping example was something that got me initially, because I was used to defining a collection (array, List, whatever), populating it, and then returning that collection... and then having the calling code iterate over that collection. "The PowerShell way" is to not focus on the collection/array at all, but instead just let it take care of that and deal with the items themselves. If you pipe the output of a function to Foreach-Object, it will work correctly - if it's a single object returned, that's what will be $_ in the loop, if it's multiple, they will all be passed in one-by-one as $_... if you actually want to access the array itself (for example to count the number of items), then you can enforce the array type by wrapping it in an additional array (i.e. @($Users).Count).
I have an old Nexus7 tablet mounted on the wall (3D printed wall mount which incorporates a wireless charging coil) which hits the web UI of NodeRED running on a Pi to provide a 'home control panel'.
There's a pi with a heap of relays which controls things like my garden lights, sprinklers, motorised curtains (3D printed adapters to convert standard curtain tracks into motorised ones), etc, and then I have a number of Orvibo S20 WiFi power sockets to switch things like lamps on and off.
I have a pi mounted behind the front entrance panel acting as a doorbell, also connected to a camera module which triggers push notifications etc when motion is detected. This also ties back into the main 'automation hub' via NodeRED.
I also built an aquarium monitoring/control system on another Pi, with ambient and water temperature probes, a bunch of relays turning filters, lights, heaters, pumps, etc on and off, and an IR-emitter to send the relevant commands to my lighting fixtures to control the colour temperature and intensity (providing a 'sunrise'/'sunset' effect). Again, this all ties back to the main system using NodeRED.
Unrelated to the home automation, I also use a Pi to manage and run my 3D printer using OctoPrint, and run my media centre using LibreElec/Kodi/Emby (with my media stored on my main workworkstation and served via Emby).