powershell基础介绍和运维场景

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了powershell基础介绍和运维场景相关的知识,希望对你有一定的参考价值。

powershell语法介绍

powershell相当于Windows cmd的升级版,但是语法更为友好,并且支持tab自动补全,不用记住繁琐的命令。

基础语法规则

powershell最基础的语法结构为:

(动词-名词)/别名+空格+-+参数名称+空格+参数内容

比如:

#获取系统日志
Get-WinEvent -LogName system

#开启服务
Start-Service -Name BITS

#设置服务启动状态为自启动
Set-Service -Name BITS -StartupType Automatic

判断

判断基本语法规则:

if(条件)

符合条件时,执行的命令行

else

不符合条件时,执行的命令行

其中,条件中涉及的比较运算符常见的有

-eq :等于
-ne :不等于
-gt :大于
-ge :大于等于
-lt :小于
-le :小于等于
-contains :包含
-notcontains :不包含
!($a): 求反
-and :和
-or :或
-xor :异或
-not :逆

如,判断2大于3是否正确

if(2 -gt 3)
Write-Output "right"
else
Write-Output "wrong"

循环

最常用的是for循环,循环的基本语法规则:

for(条件)

每一次循环执行的命令行

如,计算1到100的和

$sum=0
for($i=1;$i -le 100;$i++)

$sum+=$i

$sum

变量

变量以​$​开头,调用变量前需提前赋值,变量名称对大小写不敏感。

如下,最终返回的就是Alice这个名字

 $name="Alice"
echo $name

powershell在运维中常用场景

powershell直接设置系统参数

比如开启和停止服务,以及设置服务的启动方式

获取服务状态Get-Service

powershell基础介绍和运维场景_powershell

开启服务Start-Service和停止服务Stop-Service

powershell基础介绍和运维场景_powershell_02

配合条件判断,如果BITS服务是停止状态,就启动它,写一个简单的脚本。

$status=(Get-Service -Name BITS).Status
if($status -eq "Stopped")
Start-Service -Name BITS
else
echo "services already started"

Windows会逐步完善系统对powershell的支持,让更多的系统设置项可以直接用powershell的set命令完成,比如Windows server 2016以前系统的powershell,是不支持Get-LocalUser/Set-LocalUser这种直接对本地用户进行编辑的命令的,2016和之后的版本才支持,当然对于2016以前的版本你也可以直接升级powershell,去获取更多命令的支持。

注册表编辑

注册表是Windows环境设置的一种强大工具,借助powershell可以自动批量对Windows注册表进行编辑,这样就不用打开注册表界面人工编辑了。

以设置关闭自动播放为例,如果要关闭自动播放,则注册表的"Registry::HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"路径下,NoDriveTypeAutoRun的键值要设置成255,如下分别为获取值和设置值举例:

获取注册表键值Get-ItemProperty

powershell基础介绍和运维场景_Windows_03

设置注册表键值Set-ItemProperty

powershell基础介绍和运维场景_Windows_04


wmi

wmi是Windows管理规范,通过wmi可以从Windows收集大量系统信息,powershell可以利用wmi接口获取本地或者远程的计算机信息。

使用Get-WmiObject命令,指定一个类,可以查询计算机的属性内容。

如查看Windows内核版本和操作系统版本

(Get-WmiObject -Class Win32_OperatingSystem).Version

(Get-WmiObject -Class Win32_OperatingSystem).caption

查看系统序列号,uuid

(Get-WmiObject Win32_Bios).SerialNumber

(get-wmiobject Win32_ComputerSystemProduct).UUID

还可以通过-computername参数查询其他机器的属性




以上是关于powershell基础介绍和运维场景的主要内容,如果未能解决你的问题,请参考以下文章

单表60亿记录等大数据场景的MySQL优化和运维之道

redis 简单整理——开发和运维中的问题[二十四]

面对海量资产运维的行云管家应对之道

单表60亿记录等大数据场景的MySQL优化和运维之道 | 高可用架构

云上Prometheus监控运维最佳实践

CMDB和运维自动化