Mat*_*owe 4 powershell powershell-module
你们知道是否可以将仅由函数组成的PowerShell项目转换为模块?我想要实现的是创建我所有功能的可分发模块,以便其他人可以使用它。但无需花费时间将所有函数转换为 cmdlet。
我的每个函数都在单独的文件中。当我创建 *.psd1 并尝试通过“FunctionsToExport”包含函数时,它不起作用。加载模块后我看不到我的功能。
当模块(全部)不在 .psm1 文件内时,是否可以从模块导出函数?我仍在尝试找出 *psd1 和 *psm1 文件的真正区别和用途。
是的,您可以将一堆.ps1文件变成一个模块。在模块目录中创建一个新文件夹$env:USERPROFILE\Documents\WindowsPowerShell\Modules并将所有.ps1文件放入该文件夹中。还要在文件夹中创建两个文本文件<foldername>.psm1和<foldername>.psd1,以便您具有如下结构:
$env:USERPROFILE
`-Documents
`-WindowsPowerShell
`-Modules
`-MyModule
+-MyModule.psd1
+-MyModule.psm1
+-script1.ps1
+-script2.ps1
:
`-scriptN.ps1Run Code Online (Sandbox Code Playgroud)
将以下行放入文件中.psm1,以便它“导入”所有.ps1文件:
Get-ChildItem -Path "$PSScriptRoot\*.ps1" | % { . $_.FullName }
Run Code Online (Sandbox Code Playgroud)
并在模块清单(文件)中指定您的元数据.psd1,例如:
@{
ModuleToProcess = 'MyModule.psm1'
ModuleVersion = '1.0'
GUID = '6bc2ac1e-2e88-4bc3-ac84-ecd16739b6aa'
Author = 'Matthew Lowe'
CompanyName = '...'
Copyright = '...'
Description = 'Description of your module.'
PowerShellVersion = '2.0'
FunctionsToExport = '*'
CmdletsToExport = ''
VariablesToExport = ''
AliasesToExport = ''
}
Run Code Online (Sandbox Code Playgroud)
例如可以通过 生成 GUID [guid]::NewGuid()。
| 归档时间: |
|
| 查看次数: |
3308 次 |
| 最近记录: |