【发布时间】:2021-07-12 12:22:45
【问题描述】:
给定的代码比如这个 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 中只有相同的行为;这使得这种可能性降低了一点。
这是一个错误吗?还是我的理解中遗漏了什么。
【问题讨论】:
标签: powershell powershell-core powershell-5.1