PS常用命令之脚本编程常用命令
时间:2022-07-28
本文章向大家介绍PS常用命令之脚本编程常用命令,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
[TOC]
标准输入输出
Write-*
模块常用cmdlet:
- Write-Host: 自定义定制输出,您可以通过把ForegroundColor参数指定文本的颜色,你可以通过使用BACKGROUNDCOLOR参数中指定的背景色
Write-Host
[[-Object] <Object>]
[-NoNewline]
[-Separator <Object>]
[-ForegroundColor <ConsoleColor>]
[-BackgroundColor <ConsoleColor>]
[<CommonParameters>]
- Write-Output:发送指定对象在管道中的下一个命令。如果命令为最后一个命令在管道中,对象显示在控制台中。
Write-Output
[-InputObject] <PSObject[]>
[-NoEnumerate]
[<CommonParameters>]
- Write-Debug : 发送调试信息,并且显示错误信息;
基础示例:
#1.Write-Host示例
PS > Write-Host "Input"
Input
PS > Write-Host "no newline test " -NoNewline #写到控制台不增加新线
PS > Write-Host (2,4,6,8,10,12) -Separator ", -> " -ForegroundColor DarkGreen -BackgroundColor White #写有不同的文字和背景颜色
2, -> 4, -> 6, -> 8, -> 10, -> 12
PS > Write-host "Script Running now , please waiting it.." -ForegroundColor Green
#2.Write-output示例
PS > Write-Output "Input" | Get-Member
Input
TypeName:System.String
# Name MemberType Definition
# ---- ---------- ----------
# Clone Method System.Object Clone(), System.Object ICloneable.Clone()
# CompareTo Method int CompareTo(System.Object value), int CompareTo(string strB), int IComparab...
# Contains Method bool Contains(string value)
# CopyTo Method void CopyTo(int sourceIndex, char[] destination, int destinationIndex, int co... E
PS > (Write-Output "Input").startsWith("I") #验证第一位开始的字符
True
PS > (Write-Output "Input").startsWith("k")
False
#3.Write-Debug示例 (建议实用的方法:$host.UI.WriteDebugLine())
PS > Write-Debug -Message "Hello 2012 !" #首次执行没有任何输出这和$DebugPreference配置有关,
#因为$DebugPreference的默认值为:SilentlyContinue。
PS > [System.Enum]::GetNames([System.Management.Automation.ActionPreference])
SilentlyContinue
Stop
Continue
Inquire
PS > $DebugPreference="stop"
PS > Write-Debug "Hello 2012"
调试: Hello 2012
Write-Debug : 已停止执行命令,因为首选项变量“DebugPreference”或通用参数被设置为 Stop。
补充输出:
$host.UI.WriteDebugLine("Debug") #调试: Debug
$host.UI.WriteErrorLine("Error") #Error
$host.UI.WriteVerboseLine("Verbose") #详细信息: Verbose
$host.UI.WriteWarningLine("Warning") #警告: Warning
WeiyiGeek.
文件输入输出
Out-*
基础cmdlet:
- Out-File: 将输出发送到文件。
- Out-Null: 删除输出,不将其发送到控制台。相当于 /dev/null
- Out-Printer: 将输出发送到打印机(进行打印)。
- Out-String: 将对象作为一列字符串发送到主机。
- Out-Host: 管道输出内容类似于linux中的more命令,会将对象转换成为字符串,还可以控制管道的版式;
- Out-Default: 将输出发送到默认的格式化程序和默认的输出 cmdlet。默认输出格式会将对象转换成为字符串
- Out-GridView: 将输出发送到单独窗口中的交互表。
基础示例:
#Out-File 示例
PS > dir | Out-File .ls.html
#Out-String示例
PS > ipconfig | Out-String
PS > Out-String -InputObject (ls) -Width 256 #宽度参数被设置为每行100个字符,以防止截断。
# 目录:
# Mode LastWriteTime Length Name
# ---- ------------- ------ ----
# d----- 2019/7/26 8:45 .android
#Out-Host 示例
PS > dir | Out-Host -paging #该命令属于流出来模式
<SPACE> 下一页;<CR> 下一行;Q 退出
PS > pwd;Get-Service | Out-Host
#Out-Default 示例
PS > ls | Out-Default
PS > & { pwd;Get-Service} | Out-Default
# Status : Running
# Name : XLServicePlatform
# DisplayName : 迅雷下载基础服务(用于快速申请磁盘空间及接管浏览器下载请求)
#Out-Printer 示例
dir | Out-Printer
#Out-Null 示例
dir | Out-Null #命令Out-Null 或 >$null吸收输出结果。
dir > $null
对象属性和方法
New-Object
描述:.Net类型中的方法功能很强大。可以通过类型的构造函数创建新的对象,也可以将已存在的对象转换成指定的类型。 通过New-Object创建新对象,使用构造函数创建一个指定类型的实例对象,该类型必须至少包含一个签名相匹配的构造函数;
#1.例如.可以通过字符和数字创建一个包含指定个数字符的字符串
PS > New-Object String("*",100)
*************************************************************
#2.获取类的构造方法
PS > [String].GetConstructors() | foreach {$_.tostring()}
Void .ctor(Char, Int32) # 上面运用了该构造函数
#3.可以使用类进行强制类型转换
PS > $date="2019-11-29 17:30:30"
PS > $date.GetType().fullName
System.String
PS > [DateTime]$date=$date
PS > $date.GetType().fullName
System.DateTime
2019年11月29日 17:30:30
#4.直接将对象转换成为数组
PS C:UsersWeiyiGeekDesktop> [char[]]"WeiyiGeek"
W
e
i
y
i
G
e
e
k
PS C:UsersWeiyiGeekDesktop> [int[]][char[]]"WeiyiGeek"
87
101
105
121
105
71
101
101
107
Get-Member
描述:查询处理的对象拥有哪一些属性/方法;
MemberType包括:
- AliasProperty:另外一个属性的别名
- CodeProperty:通过静态的.Net方法返回属性的内容
- Property:真正的属性
- NoteProperty:随后增加的属性
- ScriptProperty:通过脚本执行返回一个属性的值
- ParameterizedProperty:需要传递参数的属性
- CodeMethod:映射到静态的.NET方法
- Method:正常的方法
- ScriptMethod:一个执行Powershell脚本的方法
基础示例:
- $Host | Get-Member -MemberType Property #查看你对象的属性
- $Host | Get-Member -MemberType Method #查看对象的方法
- Get-Member -static -memberType *Method #查看对象的静态方法
Get-service | Select-Object -First 1 | Get-Member -MemberType #显示具体属性说明(如下)
Get-service | Select-Object -First 1 | Format-List * #显示具体的属性值
get-service | Where-Object {$_.Status -eq "Running"} #对象有哪些属性后就可以采取过滤 $_表示当前对象
# TypeName:System.ServiceProcess.ServiceController
# Name MemberType Definition
# ---- ---------- ----------
# Name AliasProperty Name = ServiceName
# RequiredServices AliasProperty RequiredServices = ServicesDependedOn
# CanPauseAndContinue Property bool CanPauseAndContinue {get;}
# CanShutdown Property bool CanShutdown {get;}
# CanStop Property bool CanStop {get;}
# Container Property System.ComponentModel.IContainer Container {get;}
# DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;}
# DisplayName Property string DisplayName {get;set;}
# MachineName Property string MachineName {get;set;}
# ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;}
# ServiceName Property string ServiceName {get;set;}
# ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;}
# ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;}
# Site Property System.ComponentModel.ISite Site {get;set;}
# StartType Property System.ServiceProcess.ServiceStartMode StartType {get;}
# Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
Add-Member
描述:未知对象格式化ETS遵循一个规律如果对象的属性少于5个则表格显示,否则列表显示
。
重要参数:
- -MemberType NoteProperty(属性) | ScriptMethod(方法)
#添加对象属性
PS > $obj=New-Object PSObject
PS > Add-Member -MemberType NoteProperty -Name "A" -Value "1" -InputObject $obj
PS > Add-Member -MemberType NoteProperty -Name "B" -Value "2" -InputObject $obj
PS > Add-Member -MemberType NoteProperty -Name "C" -Value "3" -InputObject $obj
PS > Add-Member -MemberType NoteProperty -Name "D" -Value "4" -InputObject $obj
PS > $obj
# A B C D
# - - - -
# 1 2 3 4
PS > Add-Member -MemberType NoteProperty -Name "E" -Value "5" -InputObject $obj
PS > $obj
# A : 1
# B : 2
# C : 3
# D : 4
# E : 5
#添加对象方法
PS > Add-member -MemberType ScriptMethod -InputObject $obj script {"I'm is function, $obj.name "}
PS > Add-Member -memberType ScriptMethod -InputObject $obj -Name fun -Value { "I'm whittling now" }
PS > $obj | Add-Member ScriptMethod corkscrew { "Pop! Cheers!" } #直接通过管道增加一个新方法
统计和对比
Measure-Object
描述:Measure-Object允许指定待统计对象的属性如求最小值、最大值、平均值、和。
#1例如.要查看当前目录文件占用空间的情况。
PS > ls | measure length -Average -Sum -Maximum -Minimum
Count : 26
Average : 6109027.96153846
Sum : 158834727
Maximum : 97612275
Minimum : 250
Property : length
#2.统计文本文件中的字符数,单词数,行数
PS > Get-Content .word.txt | measure -Line -Word -Character
Lines Words Characters Property
----- ----- ---------- --------
3 23 141
Compare-Object
描述:比较前后两个时间段开启了那些进程,服务状态有什么变化,新增和减少了对象。
#比较不同时间段进程信息 (=>表示新增的对象, <=表示剔除的对象>)
PS > $before=Get-Process
PS > $after=get-process
PS > Compare-Object $before $after
# InputObject SideIndicator
# ----------- -------------
# System.Diagnostics.Process (YoudaoDict) <=
# System.Diagnostics.Process (YoudaoDictHelper) <=
# System.Diagnostics.Process (YoudaoDictHelper) <=
# System.Diagnostics.Process (YoudaoEH) <=
# System.Diagnostics.Process (YoudaoOcr) <=
# System.Diagnostics.Process (YoudaoWSH) <=
#比较每个对象的属性变化,因为它有一个参数-property
PS > $svc1=Get-Service wsearch
PS > $svc1.stop()
PS > $svc2=Get-Service wsearch
PS > Compare-Object $svc1 $svc2 -Property Status,Name
# Status Name SideIndicator
# ------ ---- -------------
# StartPending wsearch =>
# Running wsearch
Compare-Object (Get-Content .a.txt) (Get-Content .b.txt) #比较文件的内容
Compare-Object -ReferenceObject $before -DifferenceObject $after #比较两个对象
- 加强的alert confirm js自定义对话框 多个按钮 ICO自定义
- js用于树型结构级联选择 支持三态级联选择
- 修改prototype使Event支持observe任何对象
- 两个小例子带你看懂什么是比特币分叉和2018必将大热的IFO
- 用c#添加Networkservice对文件夹的写权限
- 游标清除重复数据
- 研究人员警示智能音箱等物联网设备存在较多安全问题
- Tootip小程序,整理一下自己用
- 滴滴电单车--“街兔” 无奈相关域名已被注册
- 联发科将推出两款芯片,拥有AI和人脸识别技术,能和高通叫板吗?
- 谷歌AI黑科技曝光:合成语音与真人声音难以区分
- 小程序是什么?有什么用?
- Aibee融资1.65亿元 曾16.8万元秒下aibee.cn
- 小程序审核攻略
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 简单了解如何封装自己的Python包
- python求解汉诺塔游戏
- Python第三方包PrettyTable安装及用法解析
- 如何让python的运行速度得到提升
- 在keras中对单一输入图像进行预测并返回预测结果操作
- python中数字是否为可变类型
- ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解
- PHP示例演示发送邮件给某个邮箱
- PHP设计模式之观察者模式定义与用法分析
- PHP实现数组向任意位置插入,删除,替换数据操作示例
- 实例讲解Python 迭代器与生成器
- opencv 图像轮廓的实现示例
- 基于python实现可视化生成二维码工具
- Python word实现读取及导出代码解析
- Python项目跨域问题解决方案