我知道我可以点源文件:
. .\MyFunctions.ps1
但是,我想在字符串变量中点源命令:
. $myFuctions
我看到这是可能的:
.{$x=2}
在获取脚本块之后,$x 等于 2。
但是...... .{$myFunctions}
不起作用。
我试过$myFunctions | Invoke-Expression
了,但它没有将源函数保持在当前范围内。我能想到的最接近的是将变量写入临时文件,点源文件,然后删除文件。
难免会有人问:“你到底想干什么?” 所以这是我的用例:
我想混淆一些我打算从另一个脚本调用的函数。我不想混淆主脚本,只是我的附加功能。我有一个用户群,需要根据他们的网络、目录结构和其他本地因素调整主脚本,但我不希望修改某些功能。我也想保护源代码。因此,另一个问题是:保护 PowerShell 脚本代码的好方法是什么?
我从 PowerShell 将执行 Base64 编码字符串的想法开始,但仅在使用 -EncodedCommand 在命令行上传递时。我首先想点源一个编码命令,但我想不通。然后我决定,如果我将 Base64 文件转换为解码字符串并点源字符串变量的值,那么它对于我的目的来说已经足够“模糊”了。但是,如果不将解码的源写入文件,我无法弄清楚如何点源它。
如果可以的话,它会满足我的需求Import-Module -EncodedCommand .\MyEncodedFile.dat