免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1128 | 回复: 6

[文本处理] PowerShell - 找不到类型了? [复制链接]

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-08-16 21:29 |显示全部楼层
  1. $data = New-Object 'System.Collections.Generic.Dictionary[string,string]'
  2. $data.GetType()
复制代码

控制台输出:
IsPublic IsSerial Name                                     BaseType                                                                                   
-------- -------- ----                                     --------                                                                                                                                                            
True     True     ArrayList                                System.Object                                                                              

哪里出问题了?

论坛徽章:
130
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
发表于 2017-08-16 23:23 |显示全部楼层
回复 1# sunzhiguolu

没人跟你说的真象...

1. powershell已经十年了(2006年第一版),到现在(2017年)用的人少的可怜...
  在TIOBE排名前50名都没看到,在50到100名中的后面部分...
  https://www.tiobe.com/tiobe-index/

2. powershell不是真的面向对象,也不是shell
http://blog.csdn.net/powershell/article/details/1725880

==================================================

1. powershell已经十年了(2006年第一版),到现在(2017年)用的人少的可怜...

在TIOBE排名前50名都没看到...
50到100名中的后面部分...
https://www.tiobe.com/tiobe-index/

-------------------------------------------------
TIOBE公布2008年4月编程语言的排行榜(powershell 46名)
http://blog.sina.com.cn/s/blog_51409e8f01009eph.html

-------------------------------------------------
微软新一代的shell:Windows PowerShell,在TIOBE编程社区索引的7月排名一举冲上了第15名。

这是2008年7月10的....
https://social.technet.microsoft ... rum=powershellzhcht

-------------------------------------------------
至今2017年连前50名都排不上


====================================================
2. powershell不是真的面向对象,也不是shell ...
http://blog.csdn.net/powershell/article/details/1725880
  ..., PowerShell v1(版本1.0)希望使用者与对象交互, 但没有真正提供面向对象创建的语法,...
  ... 为什么不使用已有的shell或扩展cmd.exe呢?....
  ..., PowerShell开发队伍为了能够为Windows提供更好的优化, 因此选择了重新创建一门新的语言.


评分

参与人数 2信誉积分 +18 收起 理由
dorodaloo + 10 赞一个!
sunzhiguolu + 8 没人跟你说的真象。。。^_^

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-08-17 00:38 |显示全部楼层
本帖最后由 sunzhiguolu 于 2017-08-17 00:47 编辑

回复 2# jason680
我再碰碰运气。。。


      





论坛徽章:
0
发表于 2017-08-17 13:46 |显示全部楼层
本帖最后由 本友会机友会摄友会 于 2017-08-17 14:29 编辑
  1. $data = New-Object 'System.Collections.Generic.Dictionary[string,string]'
  2. $data |get-member
复制代码


返回:
   TypeName:System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String
, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]

Name              MemberType            Definition
----              ----------            ----------
Add               Method                void Add(string key, string value), void IDictionary[string,string].Add(string key, string value), void ICollection[...
Clear             Method                void Clear(), void ICollection[KeyValuePair[string,string]].Clear(), void IDictionary.Clear()
Contains          Method                bool ICollection[KeyValuePair[string,string]].Contains(System.Collections.Generic.KeyValuePair[string,string] item),...
ContainsKey       Method                bool ContainsKey(string key), bool IDictionary[string,string].ContainsKey(string key), bool IReadOnlyDictionary[stri...
ContainsValue     Method                bool ContainsValue(string value)
CopyTo            Method                void ICollection[KeyValuePair[string,string]].CopyTo(System.Collections.Generic.KeyValuePair[string,string][] array,...
Equals            Method                bool Equals(System.Object obj)
GetEnumerator     Method                System.Collections.Generic.Dictionary`2+Enumerator[string,string] GetEnumerator(), System.Collections.Generic.IEnume...
GetHashCode       Method                int GetHashCode()
GetObjectData     Method                void GetObjectData(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContex...
GetType           Method                type GetType()
OnDeserialization Method                void OnDeserialization(System.Object sender), void IDeserializationCallback.OnDeserialization(System.Object sender)
Remove            Method                bool Remove(string key), bool IDictionary[string,string].Remove(string key), bool ICollection[KeyValuePair[string,st...
ToString          Method                string ToString()
TryGetValue       Method                bool TryGetValue(string key, [ref] string value), bool IDictionary[string,string].TryGetValue(string key, [ref] stri...
Item              ParameterizedProperty string Item(string key) {get;set;}, System.Object IDictionary.Item(System.Object key) {get;set;}
Comparer          Property              System.Collections.Generic.IEqualityComparer[string] Comparer {get;}
Count             Property              int Count {get;}
IsFixedSize       Property              bool IsFixedSize {get;}
IsReadOnly        Property              bool IsReadOnly {get;}
IsSynchronized    Property              bool IsSynchronized {get;}
Keys              Property              System.Collections.Generic.Dictionary`2+KeyCollection[string,string] Keys {get;}
SyncRoot          Property              System.Object SyncRoot {get;}
Values            Property              System.Collections.Generic.Dictionary`2+ValueCollection[string,string] Values {get;}



红色为对象类型,这里是一个哈希表对象。
绿色为名字,
蓝色为成员类型,这里表示add是一个方法。


手册
https://msdn.microsoft.com/zh-cn/library/xfhwa508.aspx


点评:
[backcolor=rgb(0, 0, 12]

[backcolor=rgb(0, 0, 12]





正常脚本情况下,我们用$hash = @{} 建立哈希表,用法和这个类似。是单线程的。


而。net对象的这个哈希表。是泛型的,是线程安全的。可以多线程同时读写,其内部维护了锁。






问:get-member 有啥用?
答:
Get-Member 获取对象的“成员”(属性和方法)。
-MemberType <SMemberTypes>
仅获取具有指定成员类型的成员。默认值为 All。

此参数的有效值为:

-- AliasProperty:一种可为现有属性定义新名称的属性。

-- CodeMethod:一种可引用 .NET Framework 类的静态方法的方法。

-- CodeProperty:一种可引用 .NET Framework 类的静态属性的属性。

-- Event:指示对象将发送消息来指示某项操作或状态更改。

-- MemberSet:属性和方法的预定义集合,如 PSBase、PSObject 和 PSTypeNames。

-- Method:基础 .NET Framework 对象的方法。

-- NoteProperty:具有静态值的属性。

-- ParameterizedProperty:具有参数和参数值的属性。

-- Property:基础 .NET Framework 对象的属性。

-- PropertySet:对象属性的预定义集合。

-- ScriptMethod:其值是脚本输出的方法。

-- ScriptProperty:其值是脚本输出的属性。

-- All:获取全部成员类型。

-- Methods:获取对象的所有方法类型(如 Method、CodeMethod、ScriptMethod)。

-- Properties:获取对象的所有类型的属性(如 Property、CodeProperty、AliasProperty、ScriptProperty)。




论坛徽章:
0
发表于 2017-08-17 19:24 |显示全部楼层
老汉我名叫【抠脚老汉】,是一名樵夫,每天背着“【铁】【面向对象】【shell】”来到shell版,不砍柴,专砍【shell问题】。


这一天,酷暑难耐,老汉我砍完问题,就在树下睡着了。醒来却发现我的【铁】【面向对象】【shell】不见了。


应该被人偷走了吧,没了【铁】【面向对象】【shell】,老汉的衣食无靠,哪个挨千刀的,老汉我伤心的哭了起来。



这是树林里跑来了一个童,头上系着【ja】小辫,道:“老爷爷,你为什么哭啊”



“我的【铁】【面向对象】【shell】被人偷走了,挨千刀的” 我哭道。


只见小童面不改色心不跳,噌噌从身后拿出了【金awk】,【银sed】道:“老爷爷,这是你丢的砍shell问题工具吗?”


我看了一眼道:“不是”。

小童道:“可是这是金的和银的,难道你不心动吗?”,说罢还当当敲着【金awk】,【银sed】。


我道:“我只要我的【铁】【面向对象】【shell】”


小童道:“真是个诚实的老爷子,告诉你吧,你砍柴的斧子,是我趁你睡着,悄悄偷走的,可我不会还给你的”

“为什么”

小童道:“因为我是煮熟的鸭子,嘴硬,不承认powershell是【面向对象】,不承认它是【shell】”

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
发表于 2017-08-17 21:22 |显示全部楼层
回复 5# 本友会机友会摄友会
【抠脚老汉】,
麻烦您老人家专业点行不行,每次回帖都没有给出问题的缘由。(可能我并未能将问题描述清楚,可关键是图片您老人家看不见啊)

这是近些天学习 PowerShell 曾经遇到的问题,几乎都是无疾而终。
如何创建自定义对象 - 半途而废
文件名排序 - 数据奇葩,要求古怪
智能感知没有了 - 要着眼于赚大钱
如何找到占用文件的真凶 - 移花接木 -> Process Explorer

这是为什么妮?

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
发表于 2017-08-18 10:11 |显示全部楼层
这个哈希表极其繁琐
$data = New-Object 'System.Collections.Generic.Dictionary[string,string]'
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP