Powershell指令集_1
目录
前言
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 = 10
for($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.2346
dateObject1.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,64
if((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的更多相关文章
- Powershell指令集_2
目录 目录 获取证书 Get-Childitem 调用REST API Invoke-RestMethod 选择对象属性 Select-Object 导入模块 Invoke-Expression 路径 ...
- Powershell&TFS_Part 1
目录 目录 前言 TFS 对象模型 Powershell Powershell面向对象 Powershell默认会在PC中设置执行脚本权限 调试脚本 断点 Step Microsoft Visual ...
- 在PowerShell中使用curl(Invoke-WebRequest)
前言 习惯了windows的界面模式就很难转去命令行,甚至以命令行发家的git也涌现出各种界面tool.然而命令行真的会比界面快的多,如果你是一个码农. situation:接到需求分析bug,需要访 ...
- Windows 7上执行Cake 报错原因是Powershell 版本问题
在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...
- <译>通过PowerShell工具跨多台服务器执行SQL脚本
有时候,当我们并没有合适的第三方工具(大部分需要付费)去管理多台数据库服务器,那么如何做最省力.省心呢?!Powershell一个强大的工具,可以很方便帮到我们处理日常的数据库维护工作 .简单的几步搞 ...
- 利用PowerShell复制SQLServer账户的所有权限
问题 对于DBA或者其他运维人员来说授权一个账户的相同权限给另一个账户是一个很普通的任务.但是随着服务器.数据库.应用.使用人员地增加就变得很枯燥乏味又耗时费力的工作.那么有什么容易的办法来实现这个任 ...
- PowerShell 数组以及XML操作
PowerShell基础 PowerShell数组操作 将字符串拆分成数据的操作 cls #原始字符串 $str = "abc,def,ghi,mon" #数据定义 #$StrAr ...
- linux下mono,powershell安装教程
1简介 简单来说pash就是bash+powershell 2官网 https://github.com/Pash-Project/Pash 3下载fedora20---lxde桌面---32位版. ...
- Windows下PowerShell监控Keepalived
一.背景 某数据库服务器为CentOS,想要监控Keepalived的VIP是否有问题,通过邮件进行报警,但这台机器不能上外网,现在只能在Windows下通过PowerShell来完成发邮件预警. 二 ...
随机推荐
- django基础篇05-Form验证组件
Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 基本简单的操作: from django im ...
- Java web项目 本地配置https调试
一.创建密匙 网上有很多教程,就不在此赘述了. 假设最后生成的密匙为tomcat.keystore 密码为123456. 二.配置tomcat 首先,将密匙移到tomcat下根目录下. 进入conf文 ...
- Spring基础17——使用注解来配置Bean
1.组件扫描 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定的注解的组件. 特定组件包括: —@Component:基本注解,标 ...
- 3.17内存,进程,rpm和yum,python编译安装
一.内存 前面说过内存有寄存器.高速缓存和内存条 但在实际情况中有些文件比较大,内存不足以读取其内容,并且大部分内容不是被立即使用,所以有了交换分区,即用硬盘空间临时存储相关部分,当作缓存,这部分就是 ...
- numpy中的range()
1.arange返回一个array对象,arange(5)=([0,1,2,3,4]) 2.如果是两个参数,第一个参数是起点,第二个参数是终点 3.如果是三个参数,那么第三个参数就是步长
- [转载]转一篇Systemverilog的一个牛人总结
原文地址:转一篇Systemverilog的一个牛人总结作者:dreamylife Systemverilog 数据类型 l 合并数组和非合并数组 1)合并数组: 存储方式是连续的,中间没 ...
- pythonr-内置函数
pythonr-内置函数 all print (all([1,-5,3])) print (all([0,-5,3])) 如果有0 就不为真,非0就是为真 打印结果 True Flase all pr ...
- [git]git的基本原理|git branch|git
继续写一篇git的文章,介绍下git的历史和基本原理. 介绍下git的历史,据砖家考究,遥想当年,linux的创始人,牛人李纳斯,开发linux用的版本控制工具BitKeeper,出于公益或友好, 是 ...
- 最近关于Qt学习的一点碎碎念
最近关于Qt学习的一点碎碎念 一直在使用Qt,但是最近对Qt的认识更加多了一些.所以想把自己的一些想法记录下来. Qt最好的学习资料应该是官方的参考文档了.对Qt的每一个类都有非常详细的介绍.我做了一 ...
- "Host 'onlyyou-bridal.jp' is blocked because of many connection errors; unblock with 'mysqladminlush-hosts'"
错误链接数太多 ,清理mysqladminlush-hosts 这个文件 直接 service mysqld restart 解决了~~~ ccess denied for user 'root'@ ...