给定诸如此 MRE 之类的代码:
function Get-One {1}
Update-TypeData -TypeName 'Demo' -MemberType 'ScriptProperty' -MemberName 'Test1' -Value {Get-Date}
Update-TypeData -TypeName 'Demo' -MemberType 'ScriptProperty' -MemberName 'Test2' -Value {Get-One}
$example = [PSCustomObject]@{PSTypeName = 'Demo'}
$example
如果我调用它,pwsh -File '.\Demo.ps1'
那么一切都会按您的预期工作/我得到这个输出:
Test1 Test2
----- -----
2021-04-17 21:35:55 1
但是,如果我调用与我得到的相同的命令pwsh -Command '.\Demo.ps1'
(即 Test2 为空白);虽然我希望得到与上述相同的结果:
Test1 Test2
----- -----
2021-04-17 21:35:55
即当我通过-Command
参数调用时,ScriptProperty 无法访问脚本本身中定义的 cmdlet/函数;虽然可以访问标准的(例如Get-Date
)。
我认为这是一个错误;PWSH 和 PowerShell 中只有相同的行为;这使得这种可能性降低了一点。
这是一个错误吗?或者我在我的理解中遗漏了什么。