PowerShell学习笔记二_变量、Select、Foreach、where、自动变量

变量
声明/定义变量使用$作为前缀,例如:Avar等。
定义一:
$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(iteminservices)
{
  item.Name  services是字符数组
  Service=GetServiceNameitem
}
$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")

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

 

posted on   耀礼士多德  阅读(901)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
历史上的今天:
2018-01-14 学习笔记63_python反射
2018-01-14 学习笔记62_python文件操作
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示