jam*_*iet 7 powershell powershellget
我正在关注PowerShell Gallery入门,其中指出PowerShellGet模块存在于Windows 10中(我正在使用它 - build 14721).要确认,我正在运行PowerShell v5:
>$PSVersionTable
Name Value
---- -----
PSVersion 5.0.14271.1000
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.14271.1000
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
Run Code Online (Sandbox Code Playgroud)
PowerShellGet还要求NuGet提供程序与PowerShell库一起使用.如果NuGet提供程序不在以下位置之一,则会在首次使用PowerShellGet时自动安装NuGet提供程序:•$ env:ProgramFiles\PackageManagement\ProviderAssemblies
•$ env:LOCALAPPDATA\PackageManagement\ProviderAssemblies
我在这些地方没有任何东西:
>ls $env:LOCALAPPDATA\PackageManagement\ProviderAssemblies
>ls $env:ProgramFiles\PackageManagement\ProviderAssemblies
ls : Cannot find path 'C:\Program Files\PackageManagement\ProviderAssemblies' because it does not exist.
At line:1 char:1
+ ls $env:ProgramFiles\PackageManagement\ProviderAssemblies
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\Program File...viderAssemblies:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
Run Code Online (Sandbox Code Playgroud)
或者,您可以运行Install-PackageProvider -Name NuGet -Force来自动下载和安装NuGet提供程序.
如果我试试:
>Install-PackageProvider -Name NuGet -Force
Install-PackageProvider : The term 'Install-PackageProvider' is not recognized as the name of a cmdlet, function, script file, or operable program.
correct and try again.
At line:1 char:1
+ Install-PackageProvider -Name NuGet -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Install-PackageProvider:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)
我很困惑.我有PowerShell v5,但似乎我没有应有的东西,即PowerShellGet.
有人可以解释原因吗?
当我这样做时Get-Module -ListAvailable -Name PackageManagement,正如 Adam Bertram 所建议的那样,我发现我的主文件夹中有一个不同的版本,它是从以前安装的 Windows 中复制到新机器上的:
> Get-Module -ListAvailable -Name PackageManagement
Directory: C:\Users\<myusername>\Documents\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Script 1.4.7 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-Packa...
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 1.0.0.1 PackageManagement {Find-Package, Get-Package, Get-PackageProvider, Get-Packa..
Run Code Online (Sandbox Code Playgroud)
删除此版本,或在此之前仅强制将系统版本与 一起使用Import-Module PackageManagement -RequiredVersion 1.0.0.1,允许我安装 NuGet 提供程序。
此错误意味着 PowerShell 找不到 Install-PackageProvider 所属的模块。Install-PackageProvider 是 PackageManagement 模块的成员。要验证这一点,请运行 Get-Module
Get-Module -ListAvailable -Name PackageManagement
Run Code Online (Sandbox Code Playgroud)
如果出现错误,您需要确保 PackageManagement 文件夹位于 $env:PSModulePath 内。以下是查看 PackageManagement 文件夹的每个文件夹的快速方法。
$env:psmodulepath.Split(';') | foreach {gci $_ -filter '*packagemanagement*'}
Run Code Online (Sandbox Code Playgroud)
如果没有任何结果,则说明您甚至没有 PowerShell 自动导入的 PackageManagement 模块文件夹。
如果是这种情况,我建议重新安装PowerShell v5 RTM。
| 归档时间: |
|
| 查看次数: |
14009 次 |
| 最近记录: |