将Powershell模块作为TeamCity上的LocalSystem帐户导入
在我的个人资料下运行命令和TeamCity运行同一命令之间,我有一些奇怪的行为将Powershell模块作为TeamCity上的LocalSystem帐户导入,powershell,module,service-accounts,Powershell,Module,Service Accounts,在我的个人资料下运行命令和TeamCity运行同一命令之间,我有一些奇怪的行为 > Import-Module $root\packages\fsm.buildrelease.*\tools\modules\BuildDeployModules -Force 如果手动运行脚本,构建将按预期启动。如果我让TeamCity执行脚本,它会吐出以下内容 导入模块:未加载指定的模块“C:\BuildAgent\work\81EB7C2FDFC0AF\packages\fsm.buildreleas
> Import-Module $root\packages\fsm.buildrelease.*\tools\modules\BuildDeployModules -Force
如果手动运行脚本,构建将按预期启动。如果我让TeamCity执行脚本,它会吐出以下内容
导入模块:未加载指定的模块“C:\BuildAgent\work\81EB7C2FDFC0AF\packages\fsm.buildrelease.*\tools\modules\BuildDeployModules”,因为在任何模块目录中都找不到有效的模块文件
我已经两次和三次验证模块是否存在于该位置。我已经浏览了我的模块,在参数
之前添加了[cmdletbinding()]
,但它似乎并没有解决这个问题
这是令人沮丧的,因为它没有说“哪个”模块得到了传入的无效参数
问题与导入模块无关;powershell在引导您解决此问题方面没有多大帮助。直到我将
-VERBOSE
开关打开导入,问题的根源才暴露出来。一旦我这样做了,我得到了一个新的错误比旧的
:参数属性必须是常量或脚本块。FullyQualifiedErrorId:ParameterAttributeArgumentNeedstoBeconstanderScriptBlock
本质上,我使用的是带有双引号而不是单引号的ValidatePattern
。使用ValidatePattern
# Bad
[ValidatePattern("^[a-z]$")]
# Good
[ValidatePattern('^[a-z]$')]
# Bad
[ValidatePattern("^[a-z]$")]
# Good
[ValidatePattern('^[a-z]$')]