PowerShell与其他Shell语言相比,其优势在于处理对象的能力。在PowerShell中,任何一件事情都可视为一个对象。这种对象通过多种性能和方法、以机构形式呈现信息。 然而,并不是每一件事情都是结构化对象。
管理人员会遇到几次不得不处理非结构化数据的时候,例如遗留程序所输出的大字符串。管理人员不得不将这类数据转换成某种结构化形式。 管理人员会青睐于微软Powershell 5中所包含的许多新功能,尤其是喜欢处理非结构化数据的功能。最为人熟知的是ConvertFrom-String命令,明显地减少了非结构化字符串转为对象的转换时间。
最初,微软研究院为完成FlashExtract项目而开……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
PowerShell与其他Shell语言相比,其优势在于处理对象的能力。在PowerShell中,任何一件事情都可视为一个对象。这种对象通过多种性能和方法、以机构形式呈现信息。
然而,并不是每一件事情都是结构化对象。管理人员会遇到几次不得不处理非结构化数据的时候,例如遗留程序所输出的大字符串。管理人员不得不将这类数据转换成某种结构化形式。
管理人员会青睐于微软Powershell 5中所包含的许多新功能,尤其是喜欢处理非结构化数据的功能。最为人熟知的是ConvertFrom-String命令,明显地减少了非结构化字符串转为对象的转换时间。
最初,微软研究院为完成FlashExtract项目而开发了ConvertFrom-String命令,通过一种分隔符或者样板,而分析字符串并将其转换为非结构化字符串。接下来让我们首次谈谈 ConvertFrom-String是如何使用分隔符分析并将字符串转化成结构化对象的。
使用定界符参数
通过使用分隔符参数,我们可以选定一个正则表达式,将字符串分隔成多个元素。例如,有一串由不同字母所组成的字符串,被分隔在两个空间中。你可以使用双空间分隔符来检测工作群组,并使用字符串作为ConvertFrom-String命令的输入信息。
以上图片为例,使用分隔符参数分离非结构化字符
你可以看出,PowerShell输出了三个属性对象,分别为P1、P2 和P3。从这一点来看,必要时,你可以使用这些属性对象。然而,P1、P2 和P3并不能直观的展现其所表达的数据。为这些属性附加一些标签后,你便可以使用PropertyNames参数来更好地进行描述,如Group 1、Group 2和Group 3。
尽管这是一个不错的功能,但是PowerShell 5通过ConvertFrom-StringData也可以具备同样的功能。更有趣的是,ConvertFrom-String组件可以分析样本字符串。
ConvertFrom-String命令样本分隔符的工作原理是,供应字符串模板某些特定图案。通过这种模式,该命令可以解读字符串结构,可以更好地做出分析决策。例如,包含如下文本的文件:
Name: Craig Trudeau
Name: Merle Baldridge
Name: Adam Bertram
Name: George Lucas
你可以通过一个指定模板,告知ConvertFrom-String命令第一个名称和第二个名称的位置,例如:
Name:{FirstName*:Adam} {LastName:Bertram}
Name:{FirstName*:Merdfdfle} {LastName:Baldfdfd}
FirstName和LastName会产生四个属性。
通过分析两个实例,该命令也可以决定如何分析其他实例。
每行都要以“Name:”为开始,但是,我却并不情愿使用这种形式,因此,我必须将其收藏到模板中。“Name:”可以表示为ConvertFrom-String命令的一串属性。接下来,你可以看到由花括号所区分的几个组别,这表明,无论花括号内被认为是哪种形式,终将是你期望输出的内容。这一次,我不必使用 PropertyNames参数就可以有序地输入所需内容。我可以详细说明样本内各属性名称。同时,如果字符串包含了与样本匹配的多种表达,那么我就必须使用星号加以区分。星号是新组别的开始标识。
我所使用的模板字符串与数据中的其他命名方式都不一样,你仅仅需要需要表达出字符串看起来是什么样子的即可。该命令将会自动计算出剩余的部门。想要测试效果,你可以发现下面的代码库,用之构建一个文本文件、读写到存储器中,然后用ConvertFrom-String进行分析。
上图为命令分析案例,这段代码编写了一个文本文件,之后用ConvertFrom-String进行了结构分析。
工作中与许多复杂的数据集合打交道,那么,你势必将需要做一些修补工作。而如果你可以正确地提供模板结构,那么,该命令便可分析任何类型的字符串。想要咨询其他实例,并期望了解如何使用该命令进行更深入分析,你可以搜索一下Stephen Owen所写的关于 ConvertFrom-String高级解析的博客。
相关推荐
-
PowerShell 5值得拥有的四大特性
PowerShell 5中有四项新特性是值得关注的,包括更出色的文件管理命令、本地.zip支持功能以及本地符号链接功能等等。
-
Windows Server 10技术预览版十大最佳特性
微软在本月初大手笔发布了Windows 10、Windows Server 10和系统中心的技术预览版本。这些预览版本很明显是微软背离常态的产品。不知道给您带来了多少惊喜呢?