Powershell not able to access packages / "NuGet" package provider after security configuration update

12,678

It was fips!!! oh my word that was a tough one.

Here's the registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FIPSAlgorithmPolicy

Here's were I found my solution: https://windowsserver.uservoice.com/forums/301869-powershell/suggestions/15126048-install-packageprovider-name-nuget-not-working

Share:
12,678

Related videos on Youtube

e wagness
Author by

e wagness

software engineer in the Greater Seattle area

Updated on September 18, 2022

Comments

  • e wagness
    e wagness over 1 year

    I updated a server with a mof / dsc configuration, essentially changing various permissions / registry keys for security compliance. This was autogenerated to some degree, I do have a list of everything that was configured, but it's a bit difficult to read and not exactly clear.

    After the process, powershell cannot update new packages, or set its default repository.

    I dont think this is something specific to NuGet, and my hunch is that it is related to some kind of more basic file permissions. NuGet is, for all I can tell, installed on my system, I know for a fact it was installed prior to applying this configuration, and form what I can tell was not removed.

    I have double checked a working server, and the permission on the NuGet .dll look the same.

    Here is an example of an error:

    PS C:\Windows\system32> Register-PSRepository -Default
    PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name
    'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
    At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7302 char:25
    + ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
        + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProv
       ider
    
    
    NuGet provider is required to continue
    PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet
     provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
    'C:\Users\opc\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by running
    'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import
     the NuGet provider now?
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"): Y
    PackageManagement\Install-PackageProvider : Unable to find repository with SourceLocation ''. Use Get-PSRepository to
    see all available repositories.
    At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7405 char:21
    + ...     $null = PackageManagement\Install-PackageProvider -Name $script:N ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidArgument: (Microsoft.Power...PackageProvider:InstallPackageProvider) [Install-Pac
       kageProvider], Exception
        + FullyQualifiedErrorId : RegisterPackageSourceRequired,Microsoft.PowerShell.PackageManagement.Cmdlets.InstallPack
       ageProvider
    
    PackageManagement\Import-PackageProvider : No match was found for the specified search criteria and provider name
    'NuGet'. Try 'Get-PackageProvider -ListAvailable' to see if the provider exists on the system.
    At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7411 char:21
    + ...     $null = PackageManagement\Import-PackageProvider -Name $script:Nu ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidData: (NuGet:String) [Import-PackageProvider], Exception
        + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.ImportPackageProv
       ider
    
    PackageManagement\Get-PackageProvider : Unable to find package provider 'NuGet'. It may not be imported yet. Try
    'Get-PackageProvider -ListAvailable'.
    At C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:7415 char:30
    + ... tProvider = PackageManagement\Get-PackageProvider -Name $script:NuGet ...
    +                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (Microsoft.Power...PackageProvider:GetPackageProvider) [Get-PackageProvi
       der], Exception
        + FullyQualifiedErrorId : UnknownProviderFromActivatedList,Microsoft.PowerShell.PackageManagement.Cmdlets.GetPacka
       geProvider
    
    Register-PSRepository : NuGet provider is required to interact with NuGet-based repositories. Please ensure that
    '2.8.5.201' or newer version of NuGet provider is installed.
    At line:1 char:1
    + Register-PSRepository -Default
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (:) [Register-PSRepository], InvalidOperationException
        + FullyQualifiedErrorId : CouldNotInstallNuGetProvider,Register-PSRepository
    

    Package Providers on a working system:

    PS C:\Windows\system32> Get-PackageProvider -ListAvailable
    
    Name                     Version          DynamicOptions
    ----                     -------          --------------
    msi                      3.0.0.0          AdditionalArguments
    msu                      3.0.0.0
    NuGet                    2.8.5.208        Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag...
    PowerShellGet            1.0.0.1          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, ...
    Programs                 3.0.0.0          IncludeWindowsInstaller, IncludeSystemComponent
    

    Package Providers on broken system (note, nuget is no longer capitalized, odd, also the directory for "NuGet" is lower case, not sure if thats relevant:

    PS C:\Windows\system32> Get-PackageProvider -ListAvailable
    
    Name                     Version          DynamicOptions
    ----                     -------          --------------
    nuget                    2.8.5.208
    

    NuGet package files (DLL is indeed in here, I tried replacing it with the DLL from a working system to no avail)

    PS C:\Windows\system32> gci -Recurse -Filter "nuget" -Directory -ErrorAction SilentlyContinue -Path "C:\"
    
    
        Directory: C:\Program Files\PackageManagement\ProviderAssemblies
    
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    d-----        2/10/2020   5:03 PM                nuget