相关疑难解决方法(0)

PowerShell中的联盟和交集?

我有一系列具有以下结构的对象:

structure Disk
{
  int UID;
  String Computer;
}
Run Code Online (Sandbox Code Playgroud)

计算机可以具有一堆共享磁盘,并且可以在计算机之间共享磁盘.

我想找出所有计算机常用的所有磁盘.例如,我有计算机A,B和C; 磁盘阵列1,2和3.磁盘阵列为{1,A},{1,B},{2,A},{2,B},{2,C},{3,A}.我想要的结果应该是磁盘2,因为它出现在A,B和C上.

有没有有效的方法来实现这一目标?

有多个foreach循环,它是可以实现的,但绝对我想要一个更好的方法.我正在考虑像交集这样的操作,但是在PowerShell中没有找到它.

arrays powershell

42
推荐指数
4
解决办法
3万
查看次数

在Powershell中合并哈希表:如何?

我试图合并两个哈希表,如果第二个中存在相同的键,则覆盖第一个键值对.

为此,我编写了这个函数,如果第二个哈希表中存在相同的键,则首先删除第一个hastable中的所有键值对.

当我逐行输入Powershell时,它可以工作.但是当我运行整个函数时,Powershell要求我提供(它认为)缺少参数到foreach-object.

function mergehashtables($htold, $htnew)
{
    $htold.getenumerator() | foreach-object
    {
        $key = $_.key
        if ($htnew.containskey($key))
        {
            $htold.remove($key)
        }
    }
    $htnew = $htold + $htnew
    return $htnew
}
Run Code Online (Sandbox Code Playgroud)

输出:

PS C:\> mergehashtables $ht $ht2

cmdlet ForEach-Object at command pipeline position 1
Supply values for the following parameters:
Process[0]:
Run Code Online (Sandbox Code Playgroud)

$ ht和$ ht2是包含两个键值对的哈希表,其中一个键值对在两个哈希表中都带有键"name".

知道我做错了什么吗?

powershell hashtable

20
推荐指数
5
解决办法
2万
查看次数

标签 统计

powershell ×2

arrays ×1

hashtable ×1