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对象选择,排序和变量存储

时间: 2024-10-22 03:56:29

Powershell对象选择,排序和变量存储的相关文章

SelectSort 选择排序

# SelectSort选择排序_Python实现 def select_sort(li): for i in range(len(li)): min_index = i # 此处确定刚刚所排序好的最小值的次序 for j in range(i+1, len(li) ): # 此处range最大值为index最高位数+1, 因为遍历是从i+1开始和i对比. if li[j] < li[min_index]: min_index = j li[i], li[min_index] = li[min_

用block变量来对字符数组对象进行排序

<span style="font-size:18px;">降序排序</span> <span style="font-size:18px;">NSMutableArray *arr = [NSMutableArray arrayWithObjects:@"abc",@"bcd",@"123",@"9987", nil]; NSComparisonRe

冒泡排序 and 选择排序 变量打印斐波拉契数列 and 数组打印斐波拉契数列

1 排序 1.1 冒泡排序 1 #include <stdio.h> 2 int main() 3 { 4 int i,j,tmp,a[6]; 5 printf("input six int numbers:\n"); 6 for(i=0;i<6;i++) 7 { 8 scanf("%d",&a[i]); 9 } 10 for(j=1;j<6;j++)//比较的趟数(6个数比较5趟) 11 for(i=0;i<6-j;i++)/

StringBuffer、StringBuilder、冒泡与选择排序、二分查找、基本数据类型包装类_DAY13

1:数组的高级操作(预习) (1)数组:存储同一种数据类型的多个元素的容器. (2)特点:每个元素都有从0开始的编号,方便我们获取.专业名称:索引. (3)数组操作: A:遍历 public static void printArray(int[] arr) { for(int x=0; x<arr.length; x++) { System.out.println(arr[x]); } } B:获取最值 public static int getMax(int[] arr) { int max

使用C语言和Java分别实现冒泡排序和选择排序

经典排序算法--冒泡和选择排序法 Java实现冒泡排序 基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图: 我们要清楚一点,冒泡排序是相邻元素的两两比较,再看下图是否会清晰些: 输入的数据为:10 30 40 33 5 78 11 100 23 66 第一次排序,从第一个数10依次比较,若10比后者小,则进行交换,当比较到5时,10比5大,所以10就停在第四个位置,再用5去比较,后面的数都比5大,所以5就排到最后了

第三节 java 数组(循环遍历、获取数组的最值(最大值和最小值)、选择排序、冒泡排序、练习控制台输出大写的A)

获取数组的最值(最大值和最小值) 思路: 1.获取最值需要进行比较,每一次比较都会有一个较大的值,因为该 值不确定,需要一个变量进行临储. 2.让数组中的每一个元素都和这个变量中的值进行比较,如果大于了 变量中的值,就用该变量记录较大值. 3.当所有的元素都比较完成,那么该变量中存储的就是数组中最大值 例子://最大值 int arr[] = {1,2,3,4,5,}; int max = arr[0]; for(int a=0;a<arr.length;a++){ {if(arr[a])>a

javascript选择排序法

选择排序原理: 1.第一次遍历中,找到最小的数组元素然后用第一个数组元素交换它. 2.第二次遍历中,找到第二小的数组元素然后用第二个数组元素交换它. 3.依次类推.如果包含N个元素,那么将在最多N-1次遍历之后完成排序. 示例: 示例结果显示: <!doctype html><html><head><meta charset="utf-8"><title>选择排序法</title><script> va

数据结构排序算法之选择排序

今天继续介绍一种排序算法:选择排序. 选择排序的基本思想就是从待排序列中选择出最小的,然后将被选出元素和序列的第一个元素互换位置(当前默认是升序排列),则互换完成后第一个元素就是整个序列的最小的元素,则一次选择排序结束.然后我们从剩下的子序列中选择出最小的,然后将该被选出来的元素和该子序列的第一个元素(即整个序列的第二个元素)互换位置,则当前整个序列的第二个元素就是当前序列中的次最小值,第二次选择排序结束.以此类推,直到该待排序列只剩下一个元素后,则整个序列有序. 具体过程如下图所示: 下面就不

(23)Powershell中的首选项变量

上一节介绍了 Powershell 中的环境变量,本节介绍 Powershell 中的首选项变量,这些变量的作用与环境变量类似,都是Powershell中的内置变量,也可以对这些值进行更改.需要注意的是,首选项变量影响 PowerShell 操作环境以及在该环境中运行的所有命令.在很多情况下,cmdlet 带有的参数可用于替代特定命令的首选行为. 以下是 Powershell 中常见的首选项变量及其默认值. 首选项变量 默认值及说明 $ConfirmPreference  High $Debug