最近的错误是该数组中的第一个错误对象 ($Error[0])。 $False 包含 FALSE。可以使用此变量在命令和脚本中表示 FALSE,而不是使用字符串”false”。...$ForEach 包含 ForEach-Object 循环的枚举数。可以对 $ForEach 变量的值使用枚举数的属性和方法。 此变量仅在运行 For 循环时存在,循环完成即会删除。...通过此变量,脚本可以使用模块路径来访问其他资源。 $PsVersionTable 包含一个只读哈希表,该哈希表显示有关在当前会话中运行的 Windows PowerShell 版本的详 细信息。...将数组逆序输出 $books[($books.Count)..0] #给数组添加元素 $books+="元素4" #删除第3个元素 $books=$books[0..1]+$books[3] #复制数组...="令狐冲" #更新哈希表值 $stu.Name="赵强" #删除哈希表值 $stu.Remove("Name") #在哈希表中存储数组 $stu=@{ Name = "小明";Age="12";sex
(会将1024转换为字符串而非整形) $str.GetType().fullname System.String[] 哈希表(Hash) 描述:哈希表存放的是键值对(Key-Value),在哈希表中不再仅仅限制使用数字寻址...Tips: 在创建哈希表时就使用数组,因为创建数组和哈希表的的元素关键字不冲突一个是逗号,一个是分号。...#HASH表的键值对数量 2 # 2.在哈希表中存储数组 PS > $hash=@{ Name="WeiyiGeek";Age="15"; Books="C","C++","PYTHON"} PS...WeiyiGeek # Age 15 # Sex Woman # 3.在哈希表中存储数组哈希表值的更新和删除...Tips : 过滤器在函数中属于高级应用 (特殊的函数),因为它可以立即处理管道结果的每一个元素, 但是过滤器必须每次重复执行预定义命令的结果。
,三个不同平台的命令,在powershell中均可使用,即别名机制。...注意:输出多个变量时需要使用双引号,单引号是不会取变量中的值的。 也可使用New-Variable定义变量,此时可以指定变量的一些属性,如访问权限: 以下给num变量添加只读属性。 ?...数组: a.创建数组:常规数组可以使用逗号,连续数字数组可以使用。 ? 其中有以下两个特例: 空数组: ? 一个元素数组: ?...c.哈希表的使用:之前创建空数组是使用@(),而创建哈希表用到的是@{},此处的哈希表同python中的字典类型类似: ?...b).脚本执行策略:并不是每个.ps1后缀的powershell脚本都可以被执行,在powershell中有策略进行严格把控: ●Unrestricted: 权限最高,可以不受限制执行任何脚本。
[TOC] PS 数组和哈希表 描述:数组引入PS会将命令执行后的结果文本按每一行作为元素存为数组,在命令的返回值不止一个结果时,PS也会自动把结果存储为数组。...PS数组在内存中是顺序存储的,所以数组的大小必须是确定的方便分配存储空间 数组属于引用类型,使用默认的的赋值运算符在两个变量之间赋值只是复制了一个引用两个变量共享同一份数据,则改变一个另一个也会相应的改变...> $num += 999 PS > $num 1024 3 999 哈希表(HASH) 描述:哈希表存放的是键值对(Key-Value),在哈希表中不再仅仅限制使用数字寻址,可以使用任意类型的数据类型寻址...在创建哈希表时就使用数组,因为创建数组和哈希表的的元素关键字不冲突一个是逗号,一个是分号。...#HASH表的键值对数量 2 PS > $hash[email protected]{ Name="WeiyiGeek";Age="15"; Books="C","C++","PYTHON"} #在哈希表中存储数组
哈希函数的作用是将元素的关键字(或散列码)映射到哈希表的某个位置,这个位置被称为桶(bucket)。当元素需要查找或插入时,只需要使用哈希函数计算出元素对应的桶的位置,然后在该桶中查找或插入元素即可。...如果哈希函数的设计合理,那么大部分元素的查找和插入操作的时间复杂度将是常数级别的。在使用哈希表存储元素时,如果两个元素映射到了同一个桶中,这种情况被称为哈希冲突。...当出现哈希冲突时,HashSet使用链表来解决冲突。也就是说,哈希表的每个桶实际上是一个链表的头节点,当两个元素映射到同一个桶中时,它们将被添加到该桶对应链表的末尾。...需要注意的是,在使用HashSet时,如果元素的哈希值发生改变,可能会导致元素无法正确地被查找或删除。...HashSet的示例下面给出一个使用HashSet的示例,该示例演示了如何使用HashSet来去除数组中的重复元素。
具体地,哈希表中的每个元素都有一个唯一的键值,该键值通过哈希函数映射到一个数组的索引位置上。在查询、插入、删除数据时,只需通过哈希函数计算出对应的索引位置,然后在该位置直接访问数据。...C# 中哈希表(Hashtable)在进行常用的操作时,以下是一些常见的操作:添加元素:使用 Add 或者 [] 操作符添加元素,例如:Hashtable hashtable = new Hashtable...它的基本思想是在哈希表存储的每个位置上放置一个链表,当多个关键字哈希到同一位置时,将它们存储在同一个链表中,称为同义词链。...在链地址法中,哈希表的主要数据结构是一个数组,数组中的每个元素都是一个链表的头结点。...任务调度:哈希表可以用于实现任务调度器,将不同的任务分配到不同的桶中,定时执行任务。防止重复:哈希表可以用于防止重复操作,例如过滤重复的数据、判断是否已经处理过某些数据等。
基本数据类型 PowerShell本身是基于.Net开发出来的,所以在.Net中的基本数据类型,在PowerShell中也可以使用,只是在PowerShell中用”[]”来标识具体的数据类型。...$a='aaa','bb','c' 如果是申明一个空的集合,就必须写为: $a=@() 与C#不同的是,在PowerShell中,往集合中添加元素,可以使用+=符号。...{$_ -ne 'c'} Write-Host $a 访问某个元素使用[idx]即可和C#相同。至于对集合的各种操作,可以参见我上一篇博文。...如果要往哈希表中添加元素,可以使用.Add(Key,Value)方法。比如添加一个员工: $a.Add("Julia","Logisitcs") 这里需要注意的是Key必须要带引号。...而且哈希表的Key是不允许重复的,如果已经存在相同的值,添加会报错。
如何使用PowerShell批量删除注册表项 问题描述 注册表路径以及如何获得注册表子项 基于条件过滤删除项 For循环删除子项 问题描述 卸载了可牛压缩软件以后,发现右键菜单中仍然有可牛压缩的选项。...注册表编辑器还不支持按住Shift进行多选,所以只能使用脚本进行批量删除。 !!!...注册表路径以及如何获得注册表子项 在PowerShell中注册表也有路径,跟我们文件和文件夹路径类似,上面的注册表项的路径可以表示为: REGISTRY::\HKEY_USERS\S-1-5-21-3610452307..._符号代表迭代过程中的每个变量,是PSItem系统内置变量的别名。在这里即代表的是 For循环删除子项 通过?...命令选择出来要删除的元素以后,我们可以使用ForEach_Object命令(别名foreach或者%)遍历该数组删除所有元素,代码如下: $items | % {rm -Force -Recurse $
哈希表允许快速的数据查找、插入和删除操作,通常在平均情况下,这些操作的时间复杂度为O(1)。以下是哈希表的基本原理: 哈希函数(Hash Function):哈希表中的关键部分是哈希函数。...缓存:缓存系统通常使用哈希表来存储已检索的数据,以便快速的重新访问。这可以有效减少重复的计算和提高应用程序的性能。 词频统计:哈希表用于统计文档中单词的出现频率。...集合是在计算机程序中广泛使用的数据结构,用于管理一组唯一元素,例如存储不重复的数据、检查元素是否存在、处理键值对、实现高效的查找操作等。...以下是一些常见的C#集合类型的示例: List(列表):这是一个动态数组,用于存储元素。它允许在列表中添加、删除和访问元素。...在C#和Java中,可以使用内置集合类型实现哈希表和集合,提供高效的数据操作。
因此我们可以在脚本中判断数据的类型,只要使用-is或-isnot运算符即可,类型需要写到方括号中。这里的类型可以是所有合适的.NET类型。...所以脚本结束之后,我们可以访问脚本中的元素。 ::运算符用于调用类中的静态成员,例如下面就会调用.NET平台中DateTime类的Now属性。...格式化方法和C#中的完全相同,所以如果不熟悉的话直接看在C#中如何格式化数据就行了。...假如在脚本中有一个函数可能返回0、1或多个值,就可以使用这个操作符,将一系列值合并为一个数组,方便后续处理。 ,逗号运算符如果放置在单个值前面,就会创建一个包含这个值的单元素数组。...Powershell是一种强类型的脚本语言,所以可以在参数列表上添加参数类型,参数类型是可选的,不过我还是推荐写的时候带上类型,方便阅读和类型检查。
PHP数组的实现原理是基于哈希表(Hash Table),它是一种数据结构,用于存储键/值对。哈希表使用哈希函数将键映射到一个数组中的桶(bucket),从而实现快速查找。...哈希表使用哈希函数将键映射到一个数组中的桶(bucket),从而实现快速查找。 PHP数组可以使用array()函数来创建 1....添加元素:可以使用array_push()函数来向数组中添加元素,例如:array_push($arr, 'AI'); 3....删除元素:可以使用array_pop()函数来从数组中删除元素,例如:array_pop($arr); 4....()函数来从数组中删除元素, 例如:array_pop($arr); 可以使用array_search()函数来查找数组中的元素, 例如:array_search('AI', $arr); 可以使用foreach
HashSet 具备去重的特性,也就是说它可以将集合中的重复元素自动过滤掉,保证存储在 HashSet 中的元素都是唯一的。...这些方法的性能都是固定操作时间,如果哈希函数是将元素分散在桶中的正确位置。...4.HashSet 如何保证元素不重复? 我们只要了解了 HashSet 执行添加元素的流程,就能知道为什么 HashSet 能保证元素不重复了?...因此,如果向 HashSet 中添加一个已经存在的元素,新添加的集合元素不会覆盖已有元素,从而保证了元素的不重复。...HashSet 保证元素不重复是利用 HashMap 的 put 方法实现的,在存储之前先根据 key 的 hashCode 和 equals 判断是否已存在,如果存在就不在重复插入了,这样就保证了元素的不重复
向哈希表中添加元素(put) 跟字典的实现一样,同样也是接收两个参数,判断其是否有效 以key为参数,调用hashCode函数(我们自己来实现)计算其hash值 将得到的哈希值作为key存进哈希表中,其值与字典的保持一致...(remove) 将key进行hash运算,判断其哈希值是否在哈希中,如果不在则返回false key在哈希表中,将计算出来的hash值当作属性传给哈希表,调用delete方法删除目标元素的key,返回...处理哈希表中Hash值冲突 我们在使用HashMap时,如果调用的是loseloseHashCode方法来计算的哈希值,那么其冲突率会很高,此处介绍两种比较常用的处理哈希冲突问题的方法。...const hash = this.hashCode(key); // 从被删除元素位置的下一个开始遍历表直至找到一个空位置 // 当找到一个空位置后即表示元素在合适的位置上不需要移动...代码中我们使用的是loseloseHashCode来生成hash值,这种方法会生成比较多的重复元素,因此不建议使用此方法,因为处理冲突会消耗很多的性能。
注册表编辑器还不支持按住Shift进行多选,所以只能使用脚本进行批量删除。!!!友情提示,删除之前请进行注册表备份,或者你百分比确定你的代码没有问题,再执行,否则发生的任何损失,本文概不负责!!!...注册表路径以及如何获得注册表子项在PowerShell中注册表也有路径,跟我们文件和文件夹路径类似,上面的注册表项的路径可以表示为:REGISTRY::\HKEY_USERS\S-1-5-21-3610452307...那我们如何获得该注册表路径下面的所有子项呢?...$_符号代表迭代过程中的每个变量,是$PSItem系统内置变量的别名。在这里即代表的是$items数组中的每个元素。For循环删除子项通过?...命令选择出来要删除的元素以后,我们可以使用ForEach_Object命令(别名foreach或者%)遍历该数组删除所有元素,代码如下:$items | % {rm -Force -Recurse $_
1.ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理。在ArrayList中主要使用Add、Remove、RemoveAt、Insert四个方法对栈进行操作。...元素从栈的顶部插入(入栈操作),也从堆的顶部移除(出栈操作)。在Stack中主要使用Push,Pop,Peek三个方法对栈进行操作。...元素在队列的尾部插入(入队操作),并从队列的头部移出(出队操作)。在Queue中主要使用Enqueue、Dequeue、Peek三个方法对队进行操作。...在Hashtable中主要使用Add、Remove两个方法对哈希表进行操作。...如果调用Add 方法来添加一个keys数组中已有的key,就会抛出异常。为了避免这种情况,可以使用ContainsKey方法来测试哈希表中是否包含一个特定的Key。
本文我们将演示如何获取域控制器上的Ntds.dit文件并提取其中的域账户和密码哈希。 仅限于技术讨论与分享,严禁用于非法途径。...它包括域中所有用户的密码哈希值,为了进一步保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。...首先,在域控制器上执行如下命令启动卷影拷贝服务: cscript vssown.vbs /start cscript命令专用于执行要在命令行环境中运行的脚本。 2....在线提取Ntds.dit中的哈希 利用dcsync获取提取Ntds.dit中的哈希 DCSync是Mimikatz在2015年添加的一个功能,由Benjamin DELPY gentilkiwi和Vincent...Ending…… 本文我们总结了如何获取域控制器上的Ntds.dit文件并提取其中的域账户和密码哈希。
三.Powershell循环语句 1.foreach循环 这里定义数组采用“$arr=1…10”实现,表示1到10的数字,在调用foreach循环输出。 ? ?...四.Powershell数组 1.数组定义 数组定义一种方法是逗号隔开不同的元素,另一种是通过两个点来定义数组。 ? 判断是否是一个数组,使用如下语句。 ? ? 数组可以接受不同的数值。 ?...访问数组特定元素,第一个元素,获取两个元素,获取最后一个元素。 ? ? 获取数组元素大小调用count实现。 ? 如何将数组倒序输出呢?如下所示。 ? ? 数组添加一个元素代码如下: ? ?...在CMD中输入regedit即可打开注册表,如下图所示。 ? ? 注册表图形化界面显示如下,包括各种程序的配置信息,不能随便修改它,很容易造成系统故障。...在Powershell中显示注册表指令如下: ? ? 对应注册表图形界面。 ? ? ? 对应图形界面。 ? 其他访问也类似。 ? ? 对应图形界面: ? 读取键值 ? ? 设置键值 ?
Set 系列集合:添加的元素是无序(存取顺序),不重复,无索引的。...结论:如何避免并发修改异常? 就是在迭代器或增强for遍历集合时,避免使用集合的方法进行新增/修改。...②使用方式可以直接参考Map集合。 ③特点都是与键相关:存取无序、不重复、无索引。 ④HashMap和HashSet底层原理一致,都是哈希表。...哈希值:(复习) 根据hashCode()方法计算出来的int类型整数 **hashCode()**定义在Object类中,所有类都可以调用,默认使用地址值进行计算。...---- ④LinkedHashMap集合 LinkedHashMap特点: 由键决定:存取有序,不重复,无索引 原理:底层数据结构依旧是哈希表(参考HashMap),只是每个键对元素又额外多了一个双链表的机制来记录存储的顺序
(1)插入元素:插入元素时,如果发生冲突,算法将从该槽位向后遍历哈希表,直到找到表中的下一个空槽,并将该值放入到空槽当中。...(2)查找元素:查找元素时,首先散列值所指向的槽,如果没有找到匹配,则继续从该槽向后遍历哈希表,直到:1)找到相应的元素;2)找到一个空槽(指示查找的元素不存在);3)整个哈希表都遍历完毕(指示该元素不存在并且哈希表已满...一般可以设立一个溢出表,用来存放上述哈希表中放不下的记录。此溢出表最简单的结构是顺序表,查找方法可用顺序查找; (2)删除工作很复杂。...需要一种方法对删除元素进行标记; (3)由于每次都是线性递增,容易导致堆聚,即存入哈希表的记录在表中都连成一片,后续发生冲突的可能性会越大。...简单来说:就是初次发现这个下标被存储占用了(说明重复了)就会把下标自增1,然后继续查找空的下标用于存储信息 (二)分离链接 使用单链表存储hash对应的信息,如果插入时候发现重复了,就把这个最新的信息添加到链表头部
无序不重复,Set实质上使用的是Map的Key存储,如果要将自定义的类存储到Set中,需要重写equals和hashCode方法。...理解了以上过程就不难明白HashMap是如何解决hash冲突的问题,核心就是使用了数组的存储方式,然后将冲突的key的对象放入链表中,一旦发现冲突就在链表中做进一步的对比。...ConcurrentHashMap 使用分段锁的方式来实现线程安全,它将一个大的哈希表分成多个小的哈希表(段),每个小的哈希表都有自己的锁。...扩容的过程中,ConcurrentHashMap 会将原来的小哈希表逐一复制到新的大哈希表中,这个过程中仍然可以保证线程安全。...在对红黑树进行添加或删除之后,都会用到旋转方法。为什么呢?道理很简单,添加或删除红黑树中的结点之后,红黑树的结构就发生了变化,可能不满足上面三条性质,也就不再是一颗红黑树了,而是一颗普通的树。
领取专属 10元无门槛券
手把手带您无忧上云