Latest sneak peek at PowerShell 7 ups the telemetry but... hey... is that an off switch?
Where is Microsoft and what have you done with them?
Updated Microsoft emitted a fresh preview of command-line darling PowerShell 7 last night, highlighting some additional slurping – and how to shut it off.
PowerShell 7 Preview 3, which is built on .NET Core 3.0 Preview 8, is the latest step on the way to final release at the end of 2019 and a potential replacement for the venerable PowerShell 5.1.
The first preview dropped back in May and the gang has made solid progress since. This time around, the team has opted to switch on all experimental features of the command-line shell by default in order to get more feedback on whether those features are worth the extra effort to gain "stable" status.
Those preferring their command-line tools to be of at least Release Candidate or Stable status need not fear – the enforced enjoyment of experimental features will not be in those builds.
PowerShell head honcho Steve Lee also noted that once in General Availability, it will be the first Long Term Servicing (LTS) release of the tool and will be supported for as long as the underlying .NET Core 3.1 is.
.NET Core 3.1, tentatively due for release in November this year, is intended to be the LTS version of the framework and so should see three years of support.
Longevity aside, there are a number of useful features, some targeted squarely at Windows (stripping away reasons to stay with PowerShell 7's more Windows-focused ancestors) and others that simply make life easy for script fans. The ability to stick a
-Parallel parameter to
ForEach-Object in order to execute scriptblocks in parallel is a good example, as is a
-ThrottleLimit parameter to keep the thread usage under control.
Preview 3 and Telemetry
However, it's not all good news. Lee, with impressive openness, highlighted the extra telemetry PowerShell would be capturing with this release. Microsoft's Sydney Smith provided further details and, perhaps more importantly for some users, explained how to turn the slurping off.
New data points being collected include counts of application types such as Cmdlets and Functions, hosted sessions and PowerShell starts by type (API vs Console).
It all seems innocuous enough and the company wants the information to balance the postings on feedback forums by the, er, more vocal members of the community in order to understand how the tool is being used.
However, for the benefit of those who get twitchy about the slurping of data, Smith highlighted the
POWERSHELL_TELEMETRY_OPTOUT environment variable, which can be set to the
1 to stop PowerShell squirting anything back at Redmond's servers.
We've asked Microsoft for a bit more detail and will update if the software giant responds.
And, of course, you can always scrutinise what is lurking within GitHub yourself if you have a spare afternoon or two. ®
Updated to add
We had a chat with Steve Lee, and he explained that the slurpage was opt-out rather than opt-in and told us "We've gone through an extensive privacy review of the telemetry and there is no personally identifiable information (PII) and as such it is opt-out."
Of course, that opt-out mechanism hasn't changed, and he added "but we make it easy to opt-out"
As for that unique identifier, he told us it was "to help us understand if our user base is growing and not just usage." The identifier itself, he said, is "a unique guid for the machine and user, so it can’t be traced back to either the machine nor the user."