zoukankan      html  css  js  c++  java
  • PowerShell学习笔记二_变量、Select、Foreach、where

    变量
    声明/定义变量使用$作为前缀,例如:$A、$var等。
    定义一:
    $mysqlservice=Get-Service -Name mysql ,获取mysql服务对象
    获取所有服务
    $services=Get-Sercice
    定义二:
    [System.String]$A="124"

    [System.String]$A=124

    数组变量
    $items=“aa”,“bb”,“cc”  在2.0,那么 $items=@(“aa”,“bb”,“cc”,为了兼容性,推荐用@()形式定义数组

    问:如何知道变量的类型?

    输入: $var | Get -Member 

    数组

    键入:1...5能快速生成int数组

     foreach($a in (1..5)) {Write-Host $a}

    得到:

    TypeName: System. xxxxx

    问:如何得到类型的基类,或者如何知道其是否为枚举?

    输入:[System. xxxxx]

     注意:[System. xxxxx] 本身是一个描述"System. xxxxx"的对象,它的类型是System.RuntimeType

    筛选
    $someservices=$services | where-object {$_.name -like “my”}
    解析 :
    | :进入管道
    where-object:是一个命令
    $_:类似于c#linq的匿名委托形参
    -like:是一个运算符,有很多,例如-eq(相当于==)、-nq(相当于!=)等等

    运算符参考:https://www.cnblogs.com/lwme/archive/2010/04/16/1713955.html

    遍历
    $someservices=$services |ForEach-Object {$_.name}
    或者
    $someservices=$services | foreach {$_.Stop()}
    效果:获取所有name
    注意:ForEach-Object必须跟在 管道符号| 后边


    foreach($item in $services)
    {
      $item.Name
      或者如果$services是字符数组
      $Service=Get-Service -Name $item
    }
    $items=“aa”,“bb”,“cc”
    for($i=0; $i -lt $items.Count ;$i++)
    {
      $items[$i]

      //也可以   $items[$i] | 进入管道干其他事,或者调用方法,属性等操作
    }
    注意:powershell运算符是类似于-lt

    $items.Count 是属性调用

    方法调用
    $obj.Equals,就这样不加括号,就会得到
    bool Equals(object obj)
    bool Equals(int obj)
    得到的是方法本身的介绍

    如果
    $obj.Equals($b),就会得到返回值。

    PowerShell版console.writeline
    $Host.UI.WriteDebugLine("hellow")

    Write-Host "Hellow"
    注意,如有$var="Hellow"

    Write-Host "$var",那么输出“hellow”,意思是“""”号会有转义功能
    但是
    Write-Host '$var' ,那么输出
    $var

    命令行超长时,可以使用符号“'”,再使用回车就行了

    使用Select-Object命令
    Get-Service | Select-Object Status,Name
    有点类似于c#的linq重集合中选择匿名对象列表

    PowerShell中的自动变量

    例如:$?,$Error,有点像C++的全局静态变量。

    特殊的自动变量

    $Error

    用于记录所有的发生的错误,类似于一个List,每一个元素的类型是[System.Management.Automation.ErrorRecord]

    例如:Get-Service -Name bhjjsjj
    当bhjjsjj不存在时,会报错,错误信息存储在$Error,而且是以类似于List对象的形式存储。

    使用:

    $isSomeTypeEx = $Error[0].Exception -is [ServiceCommandException]  用于判断错误类型

    $env
    用法也很特殊$env:
    加了“:”,用于获取各种环境变量

    $PSScriptRoot
    获取当前执行的.ps脚本所在目录,常用,例如:
    $log=$PSScriptRoot +“log.txt”

    $args
    获取从其他脚本调用的时候,传过来的参数,是一个数组

    $ErrorActionPreference 

    用于设置命令执行失败后,是否继续执行下一条命令

    $ErrorActionPreference = [System.Management.Automation.ActionPreference]::Continue (或  = "continue")

    注意:这个一般要动态使用,不要一开始执行脚本就预先设置了

  • 相关阅读:
    第四章之Hadoop I/O
    第五章之MapReduce应用开发
    数据预处理
    SQL Server Migration Assistant for MySQL!
    【转载】.NET设计模式之工厂方法模式(Factory Method)
    "lc.exe"已退出 代码为1 的解决方法
    【转载】.NET设计模式之抽象工厂模式(Abstract Factory)
    【转载】(收藏)《博客园精华集》分类索引
    【转载】.NET设计模式之观察者模式(Observer Pattern)
    【转载】使用Visual Studio 2010调试断点不起作用的问题解决办法(AutoCAD)
  • 原文地址:https://www.cnblogs.com/pylblog/p/14276585.html
Copyright © 2011-2022 走看看