变量
声明/定义变量使用$作为前缀,例如:$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重集合中选择匿名对象列表

Get-Service|Select-Object -first 5

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
获取从其他脚本调用的时候,传过来的参数,是一个数组

$PSCmdlet

提供WriteDebug,WriteError等调试信息

$ErrorActionPreference

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

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

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

PowerShell学习笔记二_变量、Select、Foreach、where、自动变量的更多相关文章

  1. python 学习笔记二_列表

    python不需要声明类型信息,因为Python的变量标识符没有类型. 在Python中创建一个列表时,解释器会在内存中创建一个类似数组的数据结构类存储数据,数据项自下而上堆放(形成一个堆栈).索引从 ...

  2. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  3. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  4. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  5. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  6. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  7. Django学习笔记二

    Django学习笔记二 模型类,字段,选项,查询,关联,聚合函数,管理器, 一 字段属性和选项 1.1 模型类属性命名限制 1)不能是python的保留关键字. 2)不允许使用连续的下划线,这是由dj ...

  8. Typescript 学习笔记二:数据类型

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. 学习笔记(二)--->《Java 8编程官方参考教程(第9版).pdf》:第七章到九章学习笔记

    注:本文声明事项. 本博文整理者:刘军 本博文出自于: <Java8 编程官方参考教程>一书 声明:1:转载请标注出处.本文不得作为商业活动.若有违本之,则本人不负法律责任.违法者自负一切 ...

  10. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

随机推荐

  1. taro框架开发微信小程序遇到的问题

    ios端,如果input放在了dispplay flex里面,会导致一系列问题 滑动屏幕,键盘不收起,input值随屏幕滚动 input之前切换,键盘不弹起来或有时弹有时不弹 键盘莫名收起 input ...

  2. git常规操作

    git拉代码 使用git clone命令从仓库下载代码,代码下载到了本地:git clone 链接 如果仓库代码又了更新,这时可以使用git pull命令将更新下载到本地 在对本地代码就行修改后,可以 ...

  3. 2022-05-16内部群每日三题-清辉PMP

    1.项目可交付成果已移交给客户,项目经理现在必须收集项目参与者的反馈意见.项目经理应该查阅哪份文件来确定哪些人应该被包含进请求反馈意见的名单中? A.相关方登记册 B.沟通管理计划 C.经验教训 D. ...

  4. xmind某一天突然打不开了

    某一天发现xmind双击后,应用未启动 感谢博主:https://www.cnblogs.com/helloLuoLuo/p/11926530.html 将安装目录下的两个ini文件 将文件中将App ...

  5. cenots7 rpm 包升级ssh

    rpm下载地址 也可以自行官网下载 链接: https://pan.baidu.com/s/1S945MehpmZbIriKK6l7Sfw 提取码: y5ua centos7rpm包升级ssh 逻辑思 ...

  6. 宝塔404 Not Found的解决方法-重启大法也适合服务器

    本来以为服务器不是随时重启的,浪费了好几的时间配置ssl一直无法成功,后来处理404问题重启后,发现ssl也好使了. 以下引自连接 https://www.chichisvip.com/post/37 ...

  7. 推荐ssh工具

    介绍一些我常用的ssh工具 1.Xshell ​ Xshell应该是一款家喻户晓的ssh连接工具,本人有幸也在很长一段时间都在使用Xshell,但是Xshell他是收费的!而且每次关闭后都会有一个提示 ...

  8. 12组-Alpha冲刺-总结

    组长博客链接 https://www.cnblogs.com/147258369k/p/15573118.html 一.基本情况 1.1 现场答辩总结 PPT制作方面略显粗糙,对于产品描述的具体内容不 ...

  9. mysql中的InnoDB和MyISAM

    InnoDB:支持事务,支持表级锁,行级锁,支持外键,是非聚集索引. MyISAM:不支持事务,支持表级锁,不支持外键,聚集索引. 聚集索引和非聚集索引的区别:InnoDB是聚集索引,使用B+Tree ...

  10. 【ubuntu20】设置静态IP

    sudo gedit /etc/netplan/01-network-manager-all.yaml 修改文件为: # Let NetworkManager manage all devices o ...