我一直在尝试使用
VariableDefintions
在配置文件中定义 PowerShell JEA 会话的变量。
但是,对已定义变量的访问被拒绝。所有其他带有
VisibleCmdlets
、FunctionDefinitions
等的配置均有效。
VariableDefinitions @(
@{ Name = 'Test'; Value = 'blah' }
}
以交互方式成功进入配置的会话后,我被拒绝从控制台访问定义的变量。
[remotehost]: PS> $Test
Cannot access the variable '$Test' because it is a private variable.
+ ----
+ CategoryInfo : PermissionDenied (Test.String) [], SessionException
+ FullyQualifiedErrorId : VariableIsPrivate
但是由于我启用了 FullLanguage 模式,因此我无论如何都可以定义要在交互式会话中使用的变量。所以我用它作为解决方法。
正如@Mathias所说...
在 JEA 中使用
VariableDefintions
定义的变量仅适用于已定义的函数和脚本。
尝试从交互式 JEA 控制台会话访问它们是不可能的。
如果我需要隐藏敏感数据,非常好用。
当然,非常敏感的数据应尽可能使用
SecureString
或 SecretVault
系统进行处理。