Powershell对象选择,排序和变量存储
PowerShell基础教程(17)——对象的选择、排序和变量存储
可以使用 Select-Object cmdlet 来创建新的、自定义的 Windows PowerShell 对象,后者包含的属性是从用于创建他们的对象中选择的。键入以下命令可创建新对象,该对象仅包含 Win32_LogicalDisk WMI 类的 Name 和FreeSpace 属性:
PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace Name FreeSpace ---- --------- C: 50664845312 |
在发出该命令后,您将无法查看数据的类型,但如果在执行 Select-Object 命令后通过管道将结果传递给 Get-Member,则可发现,对象的新类型 PSCustomObject 已存在:
PS> Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace| Get-Member TypeName:System.Management.Automation.PSCustomObject Name MemberType Definition ---- ---------- ---------- Equals Method System.Boolean Equals(Object obj) GetHashCode Method System.Int32 GetHashCode() GetType Method System.Type GetType() ToString Method System.String ToString() FreeSpace NoteProperty FreeSpace=... Name NoteProperty System.String Name=C: |
Select-Object 有很多用途。其中之一就是复制可随后进行修改的数据。现在,我们可以解决上一节中遇到的问题了。我们可以更新最新创建的对象中的 FreeSpace 的值,而且输出将包括描述性标签:
Get-WmiObject -Class Win32_LogicalDisk | Select-Object -Property Name,FreeSpace | ForEach-Object -Process {$_.FreeSpace = ($_.FreeSpace)/1024.0/1024.0; $_} Name FreeSpace ---- --------- C:48317.7265625 |
对对象进行排序
通过使用 Sort-Object cmdlet 可以组织显示的数据,从而可更轻易地对这些数据进行扫描。Sort-Object 可获取排序所依据的一个或多个属性的名称,并返回按这些属性值排序的数据。
以 Win32_SystemDriver 实例列表的问题为例。若要按 State 排序,然后按 Name 排序,则可通过键入以下命令来实现:
Get-WmiObject -Class Win32_SystemDriver | Sort-Object -Property State,Name | Format-Table -Property Name,State,Started,DisplayName -AutoSize -Wrap |
尽管这会生成很长的数据显示,但还是可看出具有相同状态的项组合在一起:
Name State Started DisplayName ---- ----- ------- ----------- ACPI Running True Microsoft ACPI Driver AFD Running True AFD AmdK7 Running True AMD K7 Processor Driver AsyncMac Running True RAS Asynchronous Media Driver ... Abiosdsk Stopped False Abiosdsk ACPIEC Stopped False ACPIEC aec Stopped False Microsoft Kernel Acoustic Echo Canceller ... |
还可通过指定 Descending 参数以倒序顺序排序对象。这将颠倒排序的顺序,因此将按倒序的字母顺序排序名称,按降序的顺序排序数字。
PS> Get-WmiObject -Class Win32_SystemDriver | Sort-Object -Property State,Name -Descending | Format-Table -Property Name,State,Started,DisplayName -AutoSize -Wrap Name State Started DisplayName ---- ----- ------- ----------- WS2IFSL Stopped False Windows Socket 2.0 Non-IFS Service Provider Support Environment wceusbsh Stopped False Windows CE USB Serial Host Driver... ... wdmaud Running True Microsoft WINMM WDM Audio Compatibility Driver Wanarp Running True Remote Access IP ARP Driver ... |
使用变量存储对象
Windows PowerShell 可以使用对象。利用 Windows PowerShell,您可创建变量(本质上命名为对象)以保留输出以备后用。如果您已习惯于在其他外壳程序中处理变量,请谨记,Windows PowerShell 变量是对象,而非文本。
变量始终可通过首字符 $ 指定,并且在变量名称中可以包含所有的字母数字字符或下划线。
创建变量
通过键入有效的变量名称可以创建变量:
PS> $loc PS> |
由于 $loc 没有值,因此将不会返回任何结果。您可以创建变量,并可同时向其赋值。Windows PowerShell 只能创建目前尚不存在的变量,否则,它会将指定的值赋予已存在的变量。若要在变量 $loc 中存储当前位置,请键入:
$loc = Get-Location |
由于输出已发送到 $loc,因此在键入此命令后将不会显示任何输出。在 Windows PowerShell 中,显示的输出实际上是附加功能,因为未定向的数据始终会发送到屏幕上。键入 $loc 将显示当前位置:
PS> $loc Path ---- C:/temp |
您可以使用 Get-Member 来显示有关变量内容的信息。通过管道将 $loc 传递给 Get-Member 表示,$loc 为 PathInfo对象,这类似于 Get-Location 的输出:
PS> $loc | Get-Member -MemberType Property TypeName:System.Management.Automation.PathInfo Name MemberType Definition ---- ---------- ---------- Drive Property System.Management.Automation.PSDriveInfo Drive {get;} Path Property System.String Path {get;} Provider Property System.Management.Automation.ProviderInfo Provider {... ProviderPath Property System.String ProviderPath {get;} |
对变量进行操作
Windows PowerShell 提供了几条用于对变量进行操作的命令。通过键入以下命令可以查看极具可读性的完整列表:
Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap |
除了当前 Windows PowerShell 会话中创建的变量之外,还存在几个系统定义的变量。您可以使用 Remove-Variablecmdlet 来清除所有不受 Windows PowerShell 控制的变量。键入以下命令可清除所有变量:
Remove-Variable -Name * -Force -ErrorAction SilentlyContinue |
这将生成确认提示,如下所示:
确认 是否确实要执行此操作? 对目标“Name: Error”执行操作“Remove Variable”。[Y] 是 [A] 全是 [N] 否 [L] 全否 [S] 挂起 [?] 帮助(默认值为“Y”):A |
随后,如果运行 Get-Variable cmdlet,则可查看剩余的 Windows PowerShell 变量。由于还存在 Windows PowerShell 变量驱动器,因此也可通过键入以下命令来显示所有的 Windows PowerShell 变量:
Get-ChildItem variable: |
使用 Cmd.exe 变量
尽管 Windows PowerShell 不是 Cmd.exe,但它也运行于命令外壳程序环境中,并且可以在 Windows 的任意环境中使用相同的可用变量。这些变量是通过名为 env: 的驱动器公开的。键入以下命令可查看这些变量:
Get-ChildItem env: |
尽管未设计标准变量 cmdlet 来处理 env: 变量,但仍可通过指定 使用这些变量。例如,若要查看操作系统根目录,则可键入以下命令,使用 Windows PowerShell 中的命令外壳程序 %SystemRoot% 变量:
PS> $env:SystemRoot C:/WINDOWS |
也可创建和修改 Windows PowerShell 中的环境变量。从 Windows PowerShell 访问的环境变量符合 Windows 之外的环境变量标准规则。
说明:此文引用csdn博客erway的PowerShell基础教程(17)——对象的选择、排序和变量存储 一文
Powershell对象选择,排序和变量存储的更多相关文章
- Java基础知识强化之集合框架笔记69:Collections类之ArrayList存储自自定义对象并排序的案例
1. ArrayList存储自自定义对象并排序的案例: ArrayList存储自自定义对象,并使用Collections对ArrayList存储基本包装类的元素排序. 2. 代码实现: (1)Stud ...
- 对List对象按照某个成员变量进行排序
/** * 对List对象按照某个成员变量进行排序 * @param list List对象 * @param sortField 排序的属性名称 * @param sortMode 排序方式:ASC ...
- 冒泡排序 and 选择排序 变量打印斐波拉契数列 and 数组打印斐波拉契数列
1 排序 1.1 冒泡排序 #include <stdio.h> int main() { ]; printf("input six int numbers:\n"); ...
- 八大排序算法~简单选择排序【记录下标k变量的作用】
八大排序算法~简单选择排序[记录下标k变量的作用] 1,思想:打擂台法,数组中的前n-1个元素依次上擂台"装嫩",后边的元素一个挨着一个不服,一个一个上去换掉它 2,优化:通过记录 ...
- 使用C语言和Java分别实现冒泡排序和选择排序
经典排序算法--冒泡和选择排序法 Java实现冒泡排序 基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图: 我们要清楚 ...
- StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13
1:数组的高级操作(预习) (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每个元素都有从0开始的编号,方便我们获取.专业名称:索引. (3)数组操作: A:遍历 public stat ...
- [Swift]八大排序算法(三):选择排序 和 简单选择排序
排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...
- 冒泡排序、选择排序、直接插入排序、快速排序、折半查找>从零开始学JAVA系列
目录 冒泡排序.选择排序.直接插入排序 冒泡排序 选择排序 选择排序与冒泡排序的注意事项 小案例,使用选择排序完成对对象的排序 直接插入排序(插入排序) 快速排序(比较排序中效率最高的一种排序) 折半 ...
- C语言链表中数组实现数据选择排序,升序、降序功能主要难点
链表排序讲解: head指针指向链表的头结点,是找到整个链表的唯一依据,如果head指针丢失,整个链表就找不到了. head存储的是第一个节点的地址,head->next存储的是第二个节点的地址 ...
随机推荐
- 二十四种设计模式:命令模式(Command Pattern)
命令模式(Command Pattern) 介绍将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可取消的操作. 示例有一个Message实体类,某个 ...
- jquery触发/失去焦点事件
触发焦点: $("Element").focus() 触发每一个匹配元素获得焦点事件. $("Element").focus(function) 事件会在获得焦 ...
- tomcat下配置https环境(windows环境)
在网上搜了一下,内容不是很完善.现进行整理,做个学习笔记,以备以后使用. (1)进入到jdk下的bin目录 (2)输入如下指令“keytool -v -genkey -alias tomcat -ke ...
- centos关闭sudo的ldap认证
在新服务器上部署项目时,运行sudo命令会卡住很久,然后报错 sudo:ldap_start_tls_s(): Can't contact LDAP server 简直不能忍. 一番研究后发现是lda ...
- 爪哇国新游记之二----用于计算三角形面积的Point类和TAngle类
这次尝试用两个类完成一个面积计算任务: Point类代表平面上的点: public class Point { private float x; private float y; public Poi ...
- 关于jquery的on,你怎么绑定就怎么解除
打开jquery3.0一看,竟然把一大半的时间绑定的东西都废弃了 基本上绑定时间可以统一成了on,不管你是不是动态进来的dom节点 live我们知道1.7的时候就已经废弃了,还在觉得live很好用的同 ...
- ionic 项目使用百度地图插件(cordova-qdc-baidu-location)
现在我们使用'Weizhe He'提供的cordova-qdc-baidu-location来尝试创建简单的定位app. Stpe1:创建一个项目 Stpe2:申请百度地图API秘钥 应用类型 ...
- Unity UI代码自动生成
最近在做新项目跟同事讨论UI制作方案, 这里就说下根据节点来生成UI代码, 这个工具可以根据预设生成一个分布类.目前组件还不是很完善, 自己使用需要修改部分代码 组件功能如下: 1. 自动设置引用 ...
- RDS经典网络平滑迁移到VPC的混访方案
专有网络VPC(Virtual Private Cloud)之间在逻辑上彻底隔离,可以使您在阿里云上构建出一个隔离的网络环境,其安全性及性能都高于经典网络,已成为云上用户首选的网络类型.为满足日益增多 ...
- struct2常用标签
Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题.模板支持,极大地简化了视图页面的编写,而且,struts2的主题.模板都提供了很好的扩展性.实现了 ...