我调用一个脚本并传递约50个参数来创建哈希表。在脚本中,我调用了一个函数来创建哈希表。在此函数中,它调用$env:
中设置的一些变量,并基于此变量将哈希表解析为服务器特定的,并将其返回到脚本。因此,生成1个大的多级哈希,然后根据服务器上的信息通过密钥从中创建一个新的$hash
。然后,这个新的$var
会在脚本中稍后使用,以调用其他脚本,并在此服务器特定的哈希中传递另一个脚本,但是我得到的不是可用信息,而是System.Collections.Hashtable
。最终,这个$hash
最终完成了预定任务,但那时它只是System.Collections.Hashtable
。
我可以在PowerShell中手动运行代码,并获得一个哈希表,并且可以对其进行操作,当我开始尝试使用它时会出现问题。
第二个问题是我滥用了这些脚本,并用另一种方法调用它们,因此进行故障排除和获取日志记录确实是一个痛苦。我确实有很多日志调用,它们最终都存储在一个文件中,不确定该日志功能是否也引起了$hash
的实际问题。
我的脚本经过代码签名,这有问题吗?
如果我调用函数或ps1,我可以将$hash
传递给它吗?我有什么特别的事吗?
我基本上只想将所有信息传递给$hash
:
foo-dostuff $hash
开始以为我做不到。
答案 0 :(得分:1)
最有可能您正在将该哈希表强制转换/强制转换为字符串。哈希表的tostring()方法实际上只输出类型名称:
(@{name = 'whatev'}).ToString()
检查使用哈希表的函数参数之一是否为[string]
类型。
答案 1 :(得分:0)
我知道我需要提供一些代码,但是要在网上发布大量的代码并不容易。我深感抱歉。
我发现的关键是代码的先前编写者由于特殊权限而利用Windows Task Scheduler在服务帐户上下文中运行代码。
我遇到的问题是试图将包含哈希数据的变量传递给此计划任务。我最终将哈希输出到文件,然后再次导入。
因此,请勿尝试将哈希表与计划任务一起使用。