我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Powershell学习笔记3——has

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Powershell学习笔记3——has

Manning--Powershell In Action
Page 66
 
Collections:dicitonaries and hashtables
One of the most flexible datatypes supported in PowerShell is the hashtable. This atatype lets you map a set of keys to a set of values. For example, we may have a hashtable that maps “red” to 1, “green” to 2, and “yellow” to 4.
在Powershell中hashtable是一种非常方便的数据类型。这种数据类型允许你在一堆键和值之间建立映射关系。例如将红色映射为1,绿色映射为2等等。
 
Creating and inspecting hashtables
In Powershell,you use hash literals to create a hashtable inline a script.Here it is a simple example:
 
This example created a hashtable that contained three key-value pairs. The hashtable starts with the token “@{” and ends with “}”. Inside the delimiters, you define a set of key-value pairs where the key and value are separated by an equals sign “=”. Formally,the syntax for a hash literal is
例子中创建了一个hashtable,包含三个键值对。hashtable以“@{”开始,以“}”结束。在分号里,你定义了一套键值对,用等号表示。参数包括:
<hashLiteral> = '@{ <keyExpression> '=' <pipeline> [ <separator>
<keyExpression> '=' <pipeline> ] * '}'
<separator> = ';' | <newline>
Now that we’ve created a hashtable, let’s see how we can use it. PowerShell allows you to access members in a hashtable in two ways—through property notation and through array notation.
现在我们已经创建了一个hashtable,让我们看看如何使用。Powershell允许你使用两种办法来获取数据——通过property标记或者array标记。
Here’s what the property notation looks like:这就是property标记的样子:
PS (3) > $user.firstname
John
PS (4) > $user.lastname
Smith
This notation lets you treat a hashtable like an object. This access method is intended
to facilitate the use of hashtables as a kind of lightweight data record. Now let’s look
at using the array notation.
标记让你可以像处理对象一样处理hashtable。这使得对hashtable的使用变得十分简便,就像是轻量级的数据记录。现在在让我们来看一下array标记:
PS (5) > $user["firstname"]
John
PS (6) > $user["firstname","lastname"]
John
Smith
 
Property notation works pretty much the way you’d expect; you specify a property name and get the corresponding value back. Array notation, on the other hand, is more interesting. In the second command in the example, we provided two keys and got two values back.
Array标记比较Property标记更加有趣,在例子中,我们提供两个key,可以获得两个值
Here’s an example that shows some additional features of the underlying hashtable object. The underlying object for PowerShell hashtables is the .NET type System.Collections.Hashtable. This type has a number of properties and methods that you can use. One of these properties is the keys property. This property will give you a list of all of the keys in the hashtable.
下面这个例子中,我会展现一些hashtable隐藏的特性。Powershell中hashtable的隐藏对象是.NET中的System.collections.hashtable。这种类型有一些property和method可以使用。属性之一就是keys属性。这个属性会提供一份hashtable中的keys的列表
PS (7) > $user.keys
LastName
FirstName
PhoneNumber
In the array access notation, you can use keys to get a list of all of the values in the table.
PS (8) > $user[$user.keys]
Smith
John
555-1212
You might have noticed that the keys property didn’t return the keys in alphabetical order. This is because of the way hashtables work; i.e., keys are randomly distributed in the table to speed up access. If you do need to get the values in alphabetical order,here’s how you can do it:
你可能已经注意到,keys属性并不以字母表顺序返回值。这和hashtable的工作方式有关;例如,keys是随机地分布在表里,以加速读取。如果你需要以字母表顺序读取值,你可以这么做:
PS (10) > $user.keys | sort-object
FirstName
LastName
PhoneNumber
让我们以这个顺序来列出值
PS (11) > $user[[string[]] ($user.keys | sort)]
John
Smith
555-1212
You’ll notice something funny about the last example: we had to cast or convert the sorted list into an array of strings. This is because the hashtable keys mechanism expects strings, not objects, as keys. There’s much more on casts later in this chapter.
你会注意到最后一个例子中有些意思:我们不得不将分类号的列表转换到一个字符串的组。这是因为hashtable的keys机制需要字符类型,而不是对象。在这篇中还会有更多类似的况
 
Modifying and manipulating hashtables

Now let’s look at adding, changing, and removing elements from the hashtable. First let’s add the date and the city where the user lives to the $user table.
现在让我看看如何添加、修改和删除hashtable中的元素
PS (1) > $user.date = get-date
PS (2) > $user
Key Value
--- -----
LastName Smith
date 1/15/2006 12:01:10 PM
FirstName John
PhoneNumber 555-1212
 
PS (3) > $user["city"] = "Seattle"
PS (4) > $user
Key Value
--- -----
city Seattle
LastName Smith
date 1/15/2006 12:01:10 PM
FirstName John
PhoneNumber 555-1212
修改:
PS (5) > $user.city = "Detroit"
PS (6) > $user
Key Value
--- -----
city Detroit
LastName Smith
date 1/15/2006 12:01:10 PM
FirstName John
PhoneNumber 555-1212
删除:
PS (7) > $user.remove("city")
PS (8) > $user
Key Value
--- -----
LastName Smith
date 1/15/2006 12:01:10 PM
FirstName John
PhoneNumber 555-1212
 
Hashtables as reference types
Hashtables are reference types, so if you create a hashtable, assign it to a variable $foo,and assign $foo to another variable $bar, you will have two variables that point to or reference the same object. Consequently, any changes that are made to one variable will affect the other, because they’re pointing to the same object. Let’s try this out.Create a new hashtable and assign it to $foo.
Hashtable是引用类型,所以如果你创建了hashtable,可以把它赋予给变量$foo,并把$foo赋予给另一个变量$bar,你就得到了两个变量指向了同一个对象。因此,如何对一个变量的变化会影响到另一个变量。让我们尝试一下,建立一个新的hashtable并赋予给$foo.
 
PS (2) > $foo = @{
>> a = 1
>> b = 2
>> c = 3
>> }
>>
PS (3) > $foo
Key Value
--- -----
a 1
b 2
c 3
Now assign $foo to $bar and verify that it matches $foo as we expect.
PS (4) > $bar = $foo
PS (5) > $bar
Key Value
--- -----
a 1
b 2
c 3
Next assign a new value to the element "a" in $foo.
PS (6) > $foo.a = "Hi there"
PS (7) > $foo.a
Hi there
And let’s look at what happened to $bar:
PS (8) > $bar.a
Hi there
PS (9) > $bar
Key Value
--- -----
a Hi there
b 2
c 3
The change that was made to $foo has been reflected in $bar.
 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Powershell学习笔记3——has

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Powershell学习笔记3——has

Manning--Powershell In ActionPage 66 Collections:dicitonaries and hashtablesOne of the most flexible datatypes supported
2023-01-31

PowerShell 学习笔记(3)

获取对象的过程中,最好先筛选出对象,再进行操作。(即筛选在排序左边)不区分大小写get-process | where {$_.handles –ge 1000}使用where获取所有对象,用对象执行大括号里的代码,如果结果为rue,则返回
2023-01-31

学习笔记3

一文件查找和压缩1文件查找locate 搜索依赖于数据库,非实时搜索,搜索新建文件需手动更新,适于搜索稳定不频繁修改文件 find 实时搜索,精确搜索,默认当前目录递归搜索 find用法 -maxdepth l
2023-01-31

学习笔记(3)

1.* 匹配零个或多个字符(通配符中)2.ls 的-d选项不仅仅可以显示指定目录的信息,还可以用来表示不递归子文件夹。  # ls -dl /etc 显示/etc目录的信息  # ls -d /etc/* 显示/etc下面的文件和文件夹,并
2023-01-31

OSPF 学习笔记3

ospf特殊区域减少LSA洪泛,达到优化路由表的目的sub区域特点1、过滤了LSA4/52、通过ABR的LSA3学习到一条到达域外的缺省路由(O*IA)3、区域内所有的路由器都得设置为stub路由器4、stub区域内不能有ASBR5、stu
2023-01-31

CCNP学习笔记(3)

一、RIPv2:Routing Information Protocol 路由信息协议 1.特性: ①属于“距离矢量”路由协议 ②定期发送路由更新(30S一次,路由表中所有路由) ③依据“跳数”衡量路径好坏  //跳数(hop):route
2023-01-31

cisco学习笔记(3)

1. 交换机支持的命令:交换机基本状态: switch: ;ROM状态, 路由器是rommon>hostname> ;用户模式hostname# ;特权模式hostname(config)# ;全局配置模式hostname(config-i
2023-01-31

perl学习笔记(3)

条件结构:if(...){      ...;}elsif(...){      ...;}else{      ...;}数值关系运算符 ==,>,<,>=,<=,!=字符串关系     eq,gt,lt,ge,le,ne逻辑运算 与&&
2023-01-31

GEF学习笔记3

八、创建嵌套的视图 前面的步骤,创建了公司视图,下面再创建一个国家视图用来容纳公司视图。这就需要按前面的方法把MVC都重新创建一遍。ModelView(Figure)Control(EditPart)注意重写红框中标识的getModelCh
2023-01-31

python学习笔记(3)

在大概了解了程序之后,我也买了本python书学习一下,因为现在新版的python3.4.0已经不再兼容2.x.x的内容,书虽然很新,但是有些例子还是用的过去的。1.比如在3.0中print 42不能再产生输出了,要改成print(42)>
2023-01-31

PHP 学习笔记 (3)

昨天笔记2说道了PHP的标记以及短标记,今天记录下如何吧PHP从HTML分离手册参考:http://www.php.net/manual/zh/language.basic-syntax.phpmode.phpPHP手册告诉我们,PHP凡是
2023-01-31

shell 学习笔记3

####shell结构#!指定执行脚本的shell#注释行命令和控制结构 第一步:创建一个包含命令和控制结构的文件 第二步:修改这个文件的权限使它可以执行,chmod u+x 第三步:执行./example(或sh example,使用此方
2023-01-31

shell学习笔记(3)

一、if基础1、单分支1.1 语法if语句语法 单分支结构语法: if [条件]; then 指令 fi 或 if [条件] then 指令 fi1.2
2023-01-31

Python学习笔记(3)--- Fla

在安装flask前,首先安装pip安装地址:https://pip.pypa.io/en/stable/installing.html#install-pip下载(保存):在dos命令下执行 python get-pip.py安装然后 执行
2023-01-31

Python 3 学习笔记:Excel

安装模块OpenPyXL 模块是一个第三方模块,所以需要使用 pip 工具安装,pip install openpyxl文件结构首先,我们需要了解一下 Excel 文件的基本结构,一个 Excel 文件被称为一个工作薄,工作薄中可以包含多个
2023-01-31

MySQL学习笔记(3):SQL

本文章更新于2020-06-14,使用MySQL 5.7,操作系统为Deepin 15.9。目录DDL语句创建数据库删除数据库修改数据库创建表删除表修改表创建索引删除索引创建视图修改视图删除视图存储过程和函数创建事件修改事件删除事件创建触发器删除触发器DML语
MySQL学习笔记(3):SQL
2022-04-25

solaris学习笔记3:mount

mount学习 1.文件系统基本概念,UFS,ZFS,VxFS,WAFL 2./etc/vfstab 预定义挂载文件系统;   /etc/mnttab 已挂载文件系统 3.man mount   man mount_ufs   man mo
2023-01-31

Powershell进阶学习(3) Po

我们首先要理解什么是远程管理,远程管理方式有很多比如最常用的Windows远程桌面管理,linux的SSH等。那么今天说起的是Windows一种最新的远程管理方式winrm(windows远程管理),当然在windowsServer2003
2023-01-31

C#学习笔记(3)——枚举

1.枚举类型       枚举类型不仅可以提高程序的可读性,而且可以减少因底层值发生改变而导致的程序改动。另外一个好处是枚举类型是强类型,以enum类型作为参数传递时,接受方法必须有一个相同的匹配参数;否则编译器将会报错。       枚举
2023-01-31

2018-3-14 Linux学习笔记

Nginx访问日志的格式是在主配置文件中定义的.vim /usr/local/nginx/conf/nginx.conf //搜索log_format日志字段含义:$remote_addr 客户端IP(公网IP)$htt
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录