Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在多个函数之间使用hashtable可以为我提供System.Collections.hashtable_Powershell_Hashtable - Fatal编程技术网

Powershell 在多个函数之间使用hashtable可以为我提供System.Collections.hashtable

Powershell 在多个函数之间使用hashtable可以为我提供System.Collections.hashtable,powershell,hashtable,Powershell,Hashtable,我调用一个脚本并传入大约50个参数来创建一个哈希表。在脚本中,我调用了一个函数来创建哈希表。在这个函数中,它从$env:调用一些变量,这些变量是设置好的,基于此,我将哈希表解析为特定于服务器的,并将其返回到脚本中。因此,生成一个大的多级散列,然后根据服务器上的信息通过密钥从中创建一个新的$hash。然后,这个新的$var在脚本中用于调用其他脚本和传递此服务器特定散列的另一个脚本,但不是可用信息,而是使用System.Collections.Hashtable。最终,这个$hash会在一个计划任务

我调用一个脚本并传入大约50个参数来创建一个哈希表。在脚本中,我调用了一个函数来创建哈希表。在这个函数中,它从
$env:
调用一些变量,这些变量是设置好的,基于此,我将哈希表解析为特定于服务器的,并将其返回到脚本中。因此,生成一个大的多级散列,然后根据服务器上的信息通过密钥从中创建一个新的
$hash
。然后,这个新的
$var
在脚本中用于调用其他脚本和传递此服务器特定散列的另一个脚本,但不是可用信息,而是使用
System.Collections.Hashtable
。最终,这个
$hash
会在一个计划任务中结束,但到那时它只是
System.Collections.Hashtable

我可以在PowerShell中手动运行代码,得到一个哈希表,并可以对其进行操作。当我开始尝试使用它时,问题就会出现

第二个问题是我内置了这些脚本,它们被另一种方法调用,所以故障排除和获取日志记录是一件非常痛苦的事情。我确实有很多日志调用,它们最终会出现在一个文件中,不确定日志功能是否也会导致一些问题,比如
$hash
中的内容

我的脚本是代码签名的,这有问题吗

如果我调用函数或ps1,我可以将
$hash
传递给它吗?我有什么特别的事要做吗

我基本上只想传递包含所有信息的
$hash

foo-dostuff $hash

我开始觉得我做不到。

很可能您正在将此哈希表强制转换为字符串。哈希表的tostring()方法实际上只输出类型名:

(@{name = 'whatev'}).ToString()

检查您使用哈希表的函数参数是否为
[string]

类型,我知道我需要提供一些代码,但我正在使用的代码数量太多,不容易在线发布。我真的很抱歉

我发现的关键问题是,代码的前一位编写者利用Windows任务调度器在服务帐户上下文中运行代码,这是由于具有特殊权限

我遇到的问题是试图将包含哈希数据的变量传递给此计划任务。我最终将散列输出到一个文件,然后再次导入它

因此,不要尝试对计划任务使用哈希表

与其描述您的代码,不如向我们展示您的代码?准确地说,这是一个错误。