What would be the correct TargetProfile for Ubuntu 20.04 runnin PSCore 7.1.3?
Reading the UseCompatibleCommands documentation, it says the TargetProfiles should follow the syntax:
<os-name>_<os-arch>_<os-version>_<ps-version>_<ps-arch>_<dotnet-version>_<dotnet-edition>
But it falls short on explaining how to get these values.
So, after a little bit of detective work and figuring out which framework version each PowerShell ships with, I come up with the following string:
ubuntu_x64_20.04_7.1.3_x64_5.0.220.61302_core
The most painful to figure out is the 5.0.220.61302 part which I assume is the dotnet-version PowerShell 7.1.3 ships with. Or does it matter?
Especially figuring out the build number is painful because the documentation on the referenced page don't go to explain if 5.0.2 is good enough or should I use the full version 5.0.220.61302.
It's not at all helpful that if I put 'dos_arm_6.1_9.9.9_x64_9999999999_goosfraba' into TargetProfiles, the Invoke-ScriptAnalyzer just merrily goes forward as if nothing happened.
- Is
ubuntu_x64_20.04_7.1.3_x64_5.0.220.61302_coregood for PSCore 7.1.3 running under Ubuntu 20.04? - Could you update the docs when new version of PowerShell is released? It could prove useful if my case was already in the docs so I could just copy/paste it.
- Would it at all be possible if
Invoke-ScriptAnalyzerwould produce at least a warning message when a profile string like'dos_arm_6.1_9.9.9_x64_9999999999_goosfraba'is passed to it?
Yes, the documentation says I could use PSCompatibilityCollector but when I go there, there's 0 documentation.
Thanks for opening the issue @codepic... unfortunately this compatibility/targetprofile work is largely out of date and un-maintained at the moment...over the long term we would like to re-invest in this as a full solution, but as a shorter term solution we will add documentation for how to collect profiles using this tool https://github.com/PowerShell/PSScriptAnalyzer/tree/development/PSCompatibilityCollector/optional_profiles
If you'd like to use PSCompatibilityCollector today to generate a profile for Ubuntu 20.04:
- Clone this repo
cd PSCompatibilityCollector./build.ps1- Copy the output module to your target environment
- Start a new PowerShell session in that environment
ipmo PSCompatibilityCollectorNew-PSCompatibilityProfile(this is going to load every module on your module path)- Find the generated profile in the
profilesdirectory of the module
Unfortunately I wasn't able to properly document or publish the module because my priorities were changed in the midst of the work.