目录

  • 目录
  • 前言
  • 程序进度条 Write-Progress
  • 执行表达式 Invoke-Expression
  • 表格化打印信息 Format-Table
  • 获取系统服务 Get-WmiObject
  • 循环 ForEach-Object
  • 获取系统时间 Get-Date
  • 创建一个对象 New-Object
    • ObjectPopup 弹出窗口

前言

Powershell指令集主要记录一些实用的cmdlet的使用方法和例子。

程序进度条 Write-Progress

Write-Progress cmdlet会在Windows PowerShell命令窗口中显示一个进度栏,描绘正在运行的命令或脚本的状态。您可以选择进度栏所反映的指示器,以及进度栏的上方和下方显示的文本。
格式

Write-Progress [-Activity] <string> [-Status] <string> [[-Id] <int>] [-Completed] [-CurrentOperation <string>] [-ParentId <int>] [-PercentComplete <int>] [-SecondsRemaining <int>] [-SourceId <int>] [<CommonParameters>]

选项
-Activity [String] 进度条上方的第一行文本信息,此文本描述正在报告其进度的活动。
-Status [String] 指定状态栏上方标题中的第二行文本,此文本描述活动的当前状态。
-secondsRemaining [int] ⇒ 还需多少时间来完成进度
-Completed⇒指示进度条是否可见,缺省为可见
-CurrentOperation [string]⇒进度条下方的文本信息
-Id [int] ⇒指定区分多个进度条的ID,在一条指令中创建多个进度条时,建议使用
-ParentId [int]⇒表示当前活动的父活动,与-Id配合使用
-PercentComplete [int]⇒指定已完成的活动的百分比。
-SoureId [int]⇒标识记录源
倒数读秒Start-Trcountdown

Function Start-TrCountdown()
{$Countdown = 10for($PercentComplete = $Countdown; $PercentComplete -ge 0; $PercentComplete–-){Write-Progress -Activity 'Seconds to Next Refresh' :: -SecondsRemaining $PercentComplete ; Sleep -Seconds 1;}

执行表达式 Invoke-Expression

Invoke-Expression cmdlet接受任何字符串输入并将它视为 PowerShell 代码。通过这种方式,您可以动态地创建代码,并执行它。(类似Python的eval()函数)
格式

Invoke-Expression [-Command] <String> [ <CommonParameters>]

例子:执行脚本文件

Invoke-Expression ".\start-minimal.ps1"

注意
Invoke-Expression 是一个非常危险的命令,因为不仅可以动态的创建代码。恶意的脚本可以隐藏它的邪恶目的,例如通过 web 站点下载代码。

Invoke-Expression -Command (Invoke-WebRequest -Uri 'webUrl' -UseBasicParsing).Content

表格化打印信息 Format-Table

Format-Table cmdlet 常与管道符一起使用,对管道左边的数据进行表格化输出。
格式

Format-Table <parameters,> -AutoSize

选项
-AutoSize 自动匹配表格大小

例子

Get-WmiObject Win32_Service | Format-Table -AutoSize status,DisplayName,ExitCode

获取系统服务 Get-WmiObject

例子

Get-WmiObject Win32_Service | ForEach-Object {if($_.ProcessId -gt 3000) { "{0}({1})" -f $_.DisplayName,$_.ProcessID}}
# {0}{1}表示第1、2个输出参数
# -f表示输出信息按照{0}({1})的格式化输出

循环 ForEach-Object

ForEach-Object 循环,可以对通过管道的数据逐个循环进行细致化处理。
例子

Get-WmiObject Win32_Service | ForEach-Object {"Name:"+ $_.DisplayName, ", Is ProcessId more than 100:" + ($_.ProcessId -gt 100)}
#$_ 代表当前迭代的对象
#$_.Equals() 判断当前迭代对象是否等于
Get-Process iexplore | ForEach-Object {$_.kill()} #杀死关于iexplore的所有进程

在ForEach-Object的语句块中,$_代表当前对象,当然也允许通过$_调用该对象支持的方法。

获取系统时间 Get-Date

Get-Date 获取当前系统时间
例子:两个时间戳相减,能显示下列比较信息:

$dateObject1 = get-date dateObject1.Subtract(dateObject2)
Days              : 0
Hours             : 0
Minutes           : -1
Seconds           : -19
Milliseconds      : -732
Ticks             : -797322346
TotalDays         : -0.000922826789351852
TotalHours        : -0.0221478429444444
TotalMinutes      : -1.32887057666667
TotalSeconds      : -79.7322346
TotalMilliseconds : -79732.2346dateObject1.Subtract(dateObject2).totalminutes #条用比较后的属性

创建一个对象 New-Object

New-Object cmdlet 创建一个.Net或COM对象的实例.你指定.Net类的类型或一个COM对象的Programmatic Identifier(ProgID).
默认情况下, 你键入.Net的完全限定名, cmdlet返回该类实例的一个引用.
要创建一个COM对象的实例, 使用ComObject参数并将对象的ProgID作为参数值.
格式

New-Object [-typeName] [[-argumentList] ] []
New-Object [-comObject] [-strict] []

选项
-typeName ⇒ 指定.Net类的完全限定名. 你不能同时指定TypeName参数和ComObject参数.
-argumentList ⇒ 为.Net类的构造器指定参数列表. 使用逗号(,)隔离列表中的元素.
-comObject ⇒ COM对象的Programmatic Identifier (ProgID).
-strict ⇒ 指定如果你试图创建的COM对象使用了互操作程序集, 应该给出错误. 这使得您能够区分实际的COM对象和COM可调用包装的.Net对象.

Object.Popup() 弹出窗口

在运行PowerShellScript时,某些重要信息需要通过弹出窗口来提示用户。PowerShell中没有现成的对象供我们调用,所以就需要先新建一个对象WScript.Shell,然后再通过对象所包含的方法来实现弹出窗口。
格式

object.Popup(strText,[nSecondsToWait],[strTitle],[nType])

选项
strText ⇒ 消息窗口所包含的文本信息;
nSecondsToWait ⇒ 等待n秒后该窗口自动关闭,如设置为0,则永不会自动关闭;
strTitle ⇒ 消息窗口的标题;
nType ⇒ 消息窗口的按钮类型及其图标
窗口按钮类型
0 ⇒ 显示“确定”按钮
1 ⇒ 显示“确定”+“取消”按钮
2 ⇒ 显示“终止”+“重试”+“忽略”按钮
3 ⇒ 显示“是”+“否”+“取消”按钮
4 ⇒ 显示“是”+“否”按钮
5 ⇒ 显示“重试”+“取消”按钮
6 ⇒ 显示“重试”+“取消”+“继续”按钮
窗口图标类型
16 ⇒ 红叉
32 ⇒ 问号
48 ⇒ 警告
64 ⇒ 注意
例子1

$ws = New-Object -ComObject WScript.Shell
$wsr = $ws.popup("你好吗?",5,"我的窗口",1 + 64)
#如果单击"确定"按钮,则$wsr值为1,单击"取消"按钮返回值为2

例子2

Function Show-PopUp{[CmdletBinding()][OutputType([int])]Param([parameter(Mandatory=$true, ValueFromPipeLine=$true)][Alias("Msg")][string]$Message,[parameter(Mandatory=$false, ValueFromPipeLine=$false)][Alias("Ttl")][string]$Title = $null,[parameter(Mandatory=$false, ValueFromPipeLine=$false)][Alias("Duration")][int]$TimeOut = 0,[parameter(Mandatory=$false, ValueFromPipeLine=$false)][Alias("But","BS")][ValidateSet( "OK", "OC", "AIR", "YNC" , "YN" , "RC")][string]$ButtonSet = "OK",[parameter(Mandatory=$false, ValueFromPipeLine=$false)][Alias("ICO")][ValidateSet( "None", "Critical", "Question", "Exclamation" , "Information" )][string]$IconType = "None")$ButtonSets = "OK", "OC", "AIR", "YNC" , "YN" , "RC"$IconTypes  = "None", "Critical", "Question", "Exclamation" , "Information"$IconVals = 0,16,32,48,64if((Get-Host).Version.Major -ge 3){$Button   = $ButtonSets.IndexOf($ButtonSet)$Icon     = $IconVals[$IconTypes.IndexOf($IconType)]}else{$ButtonSets|ForEach-Object -Begin{$Button = 0;$idx=0} -Process{ if($_.Equals($ButtonSet)){$Button = $idx           };$idx++ }$IconTypes |ForEach-Object -Begin{$Icon   = 0;$idx=0} -Process{ if($_.Equals($IconType) ){$Icon   = $IconVals[$idx]};$idx++ }}$objShell = New-Object -com "Wscript.Shell"$objShell.Popup($Message,$TimeOut,$Title,$Button+$Icon)
} #Show-PopUp
###Show-PopUp:显示弹窗,获取comObject.Popup()方法所需要的参数,再显示一个弹窗来确认
##(Get-Host).Version.Major获取PS版本
##ForEach-Object 循环,可以对通过管道的数据逐个循环进行细致化处理
#$_ 代表当前的数据
#$_.Equals() 判断当前对象是否等于
###New-Object -com "Wscript.Shell" 创建一个com对象并返回该对象的引用
##comObject.Popup(strText,[nSecondsToWait],[strTitle],[nType])
#strText :消息窗口所包含的文本信息;
#nSecondsToWait:等待n秒后该窗口自动关闭,如设置为0,则永不会自动关闭;
#strTitle:消息窗口的标题;
#nType:消息窗口的按钮类型及其图标

Powershell指令集_1相关推荐

  1. arm汇编指令集_1. 从0开始学ARM安装Keil MDK uVision集成开发环境

    关于ARM的一些基本概念,大家可以参考我之前的文章:<0.到底什么是Cortex.ARMv8.arm架构.ARM指令集.soc?一文帮你梳理基础概念[科普]> 0. 如何学习arm? AR ...

  2. Powershell指令集_2

    目录 目录 获取证书 Get-Childitem 调用REST API Invoke-RestMethod 选择对象属性 Select-Object 导入模块 Invoke-Expression 路径 ...

  3. 自己动手写CPU(5)简单算术操作指令实现_1

    自己动手写CPU(5)简单算数操作指令实现_1 指令介绍 MIPS32指令集架构定义的所有算术操作指令,共有21条 共有三类,分别是: 简单算术指令 乘累加.乘累减指令 除法指令 算术指令操作介绍 一 ...

  4. kali linux超级用户_如何优雅的在Linux上使用Powershell]

    点击上方"蓝字"关注我们吧! 译文声明 本文是翻译文章,文章原作者 TJ Null 文章来源:https://www.offensive-security.com 原文地址: ht ...

  5. anaconda prompt和cmd和powershell和anaconda powershell prompt和git bash有什么区别

    anaconda prompt和cmd和powershell和anaconda powershell prompt和git bash有什么区别? anaconda prompt和cmd和powersh ...

  6. 12864液晶深入学习笔记_1——基于msp430g2553

    12864液晶学习笔记 Created on: 2012-8-30 Author: zhang bin 这是我对12864的学习笔记,12864液晶功能很全面,使用起来也很方便,能够满足一般的研究和工 ...

  7. Powershell渗透框架

    文章目录 Powershell基础 Powershell简介 什么是 Windows PowerShell 为什么使用 Windows PowerShell 如何启动 Windows PowerShe ...

  8. 关于dorisdb 本地搭建virtual_box虚拟机设置CPU支持AVX2指令集

    dorisdb安装文档要求 https://docs.dorisdb.com/zh-cn/main/quick_start/Deploy 解决办法 Intel VT-x和AMD-V是intel和amd ...

  9. JIT Compiler编译器及指令集

    JIT Compiler编译器及指令集 LLVM一些编程语法语义特性 High Level Structure Module Structure LLVM 程序由Module's组成,每个 's 是输 ...

最新文章

  1. 《DNS与BIND(第5版)》——7.6 保持一切平稳运行
  2. 【BZOJ 1001】[BJOI2006]狼抓兔子(最大流)
  3. android 书架菜单,Android入门3--做一个书架
  4. RuoYi-Cloud 进阶篇_01( Seata 单机环境搭建)
  5. 计算机 旧词新说_如何使旧计算机再次有用
  6. tomcat下多个app 不同的图标_iOS平台设计规范(五)图标与图片
  7. 还在用递归查询 MySQL 的树形结构吗?教你一种更好的解决方案!
  8. appium java api文档_Appium常用API
  9. asp.net Code学习二(使用vs 2015 update 3)
  10. layey图片内容不居中
  11. 如何下载sci论文?
  12. 配置Firefox火狐浏览器burpsuite https抓包
  13. 如何显示计算机窗口的状态栏,如何让电脑任务栏不显示打开的程序或窗口方法...
  14. Win10运行pip install image-similarity-measures失败的处理方式(GDAL和rasterio安装)
  15. 显示前半内容后半内容用省略号_省略号前后的标点用法
  16. Linux pv显示进度条命令
  17. 1602液晶显示屏显示字符
  18. 透过脉脉的新闻“线”场看职场
  19. ICCID IMSI IMEI MEID
  20. efi linux win10,WIN10+UBUNTU15.04 kylin(EFI+GPT)

热门文章

  1. c语言三目运算程序,有C语言中三目运算符 联系到的 程序打trace
  2. html多重边框,中间空白,【基础】CSS实现多重边框的5种方式
  3. 交换机模拟配置软件_网络设备模拟器Packet Tracer实验
  4. 用美颜照当广告犯法!要么就标注“照骗”,挪威针对明星网红出手了
  5. 在B站如何不动一根手指,就可以养成6级大佬?大四学生发明养号神器,看完你也会...
  6. 推特900赞:开源AI画出超准街道地图,全球适用,刷新DeepGlobe最好成绩
  7. 一个API调用27个NLP预训练模型:BERT、GPT-2全囊括,像导入NumPy一样容易
  8. logback.xml配置
  9. Confluence 6 数据库结构图
  10. 运维工程师该干什么学些什么