Get-InstalledModule和Get-Module -ListAvailable有什么区别?

时间:2019-05-13 02:18:54

标签: powershell

据我所知,它们也是如此,那么为什么要在另一个上使用一个呢?

(抱歉,问题规则引擎-不知道还有什么要说的)

3 个答案:

答案 0 :(得分:1)

Get-InstalledModule将使用Install-Module列出已安装的模块,而这些模块尚未天真的安装。但是,Get-Module -ListAvailable会显示$ env:PsModulePath位置中提到的所有位置的模块。

请参见下面的摘录以供参考:

*PS C:\Users\xyz> Get-InstalledModule
 `PS C:\Users\xyz> Get-Module -ListAvailable
Directory: C:\Program Files\WindowsPowerShell\Modules

ModuleType版本名称ExportedCommands
---------- ------- ---- ----------------
脚本1.0.1 Microsoft.PowerShell.Operation.V ... {Get-OperationValidation,Invoke-OperationValidation}
二进制1.0.0.1 PackageManagement {查找包,获取包,获取包提供者,获取包... 脚本3.4.0 Pester {描述,上下文,它,应该...}
脚本1.0.0.1 PowerShellGet {安装模块,查找模块,保存模块,更新模块... 脚本2.0.0 PSReadline {Get-PSReadLineKeyHandler,Set-PSReadLineKeyHandler,Rem ...     目录:C:\ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules ModuleType版本名称ExportedCommands
---------- ------- ---- ----------------
清单1.0.0.0 AppBackgroundTask {Disable-AppBackgroundTaskDiagnosticLog,Enable-AppBackg ... *`


但是,如果未安装模块,则两者都将引发相同的异常。 PS C:\Users\Asim> $Error.Exception.Message[-1] Unable to find type [Microsoft.PowerShell.Commands.PowerShellGet.Telemetry]

答案 1 :(得分:1)

请注意:

 C:\> (Get-InstalledModule xyz.ps.core).RepositorySourceLocation
http://devstatic.xyz.com/prdnuget/nuget
 C:\> (Get-Module xyz.ps.core -ListAvailable).RepositorySourceLocation.AbsoluteUri
http://devstatic.xyz.com/prdnuget/nuget
file:///C:/Users/mkharitonov/LocalTestPSRepository

两次使用xyz.ps.core安装了模块Install-Module。仅从本地存储库安装一次,而其他时间-从远程NuGet存储库安装。

在两种情况下,模块均安装在系统位置,即它位于PSModulePath中。显然,重要的是它是否是从远程位置下载的。

我希望Microsoft文档对此进行解释,并提供使用此方法的理由。

答案 2 :(得分:0)

df = pd.DataFrame([x.split(',') for x in large_string.split('\n')]) Get-InstalledModule的一部分,将使用PowerShellGet cmdlet列出已安装的模块,但是Install-Module显示来自Get-Module -ListAvailable位置中提到的所有位置的模块。