PSScriptAnalyzer icon indicating copy to clipboard operation
PSScriptAnalyzer copied to clipboard

What would be the correct TargetProfile for Ubuntu 20.04 runnin PSCore 7.1.3?

Open codepic opened this issue 4 years ago • 2 comments

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.

  1. Is ubuntu_x64_20.04_7.1.3_x64_5.0.220.61302_core good for PSCore 7.1.3 running under Ubuntu 20.04?
  2. 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.
  3. Would it at all be possible if Invoke-ScriptAnalyzer would 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.

codepic avatar Mar 30 '21 10:03 codepic

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

SydneyhSmith avatar Mar 30 '21 22:03 SydneyhSmith

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 PSCompatibilityCollector
  • New-PSCompatibilityProfile (this is going to load every module on your module path)
  • Find the generated profile in the profiles directory 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.

rjmholt avatar Mar 30 '21 22:03 rjmholt