背景:我们在内部将大约13个模块划分为业务功能,例如ActiveDirectory,WindowsServices,IIS,Configuration,Common等。例如CompanyName.PowerShell.IIS。
文件的结构如下,便于开发和测试:
\
CompanyName.PowerShell.IIS.psd1
CompanyName.PowerShell.IIS.psm1
Public\
Open-CompanySites.ps1
... other files
Private\
VariableDeclarations.ps1
... other files
tools\
chocolateyInstall.ps1
chocolateyUninstall.ps1
巧克力味只是用来说明它们如何分布。这会将相同文件放在相同子文件夹结构中的C:\Program Files\WindowsPowerShell\Modules\CompanyName.PowerShell.IIS\3.0.1\
下。
CompanyName.PowerShell.IIS.psd1
文件看起来像这样(给予或接受)
@{
RootModule = 'CompanyName.PowerShell.IIS.psm1'
ModuleVersion = '3.0.1'
GUID = '130bc983-b4bd-464a-bfa0-23dbe3facfac'
Author = 'jcolebrand'
CompanyName = 'Company Name, Inc.'
Copyright = '(c) 2018 Company Name, Inc. All rights reserved.'
PowerShellVersion = '5.0'
RequiredModules = 'CompanyName.PowerShell.Common','CompanyName.PowerShell.Services','CompanyName.PowerShell.Configuration'
FunctionsToExport = 'Open-CompanySites', ... other files
ScriptsToProcess = 'Public\Open-CompanySites','Private\VariableDeclarations', ... other files
}
这大概是Open-CompanySites的开业
<#
.SYNOPSIS
Opens up non-STS websites in the users default browser
#>
function Open-CompanySites {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$false)]
[Alias("AdminOnly")]
[switch]$adminSitesOnly,
[Parameter(Mandatory=$false)]
[Alias("Random")]
[switch]$randomSite,
[Parameter(Mandatory=$false)]
[string] $filter = ""
)
将模块安装在适当的文件夹中后,打开一个新的powershell提示符,然后键入Open-Comp<tab-autocomplete>
,模块将加载(隐式加载,预期的轻微延迟),函数自动完成以及一切都按预期工作。
将模块安装在适当的文件夹中后,打开一个新的powershell提示符,然后键入Open-Comp<tab-autocomplete> -adm<tab-autocomplete>
,模块将加载(隐式加载,预期的轻微延迟),该功能自动完成,参数然后按预期自动完成,然后powershell引发有关未定义函数或未定义某些必需依赖项的错误。根据事件序列来确定我遇到的错误。
错误的症结在于参数的自动完成会引起悲伤。如果我已经加载了模块,则一切正常(Import-Module CompanyName.PowerShell.IIS
或 Open-CompanySites
-不带参数)。是在模块尚未加载并且我自动完成参数的时候才出现问题。
目前我还不知道如何使用Google搜索此错误或如何进一步简化该错误。
这是我的powershell版本。
$psversiontable
Name Value
---- -----
PSVersion 5.1.17134.228
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17134.228
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1