zoukankan      html  css  js  c++  java
  • 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:消息窗口的按钮类型及其图标
  • 相关阅读:
    物理分页和逻辑分页扫盲
    JAVA集合操作的利器:CollectionUtils
    关于MYSQL表记录字段换行符回车符处理
    JSONObject依赖包
    Spring Mvc中@ResponseBody中文乱码解决,以及修改返回的Content-Type
    Python运行出错情况
    Python编码相关理解
    Python访问Access数据库
    Python
    android开发(1)
  • 原文地址:https://www.cnblogs.com/jmilkfan-fanguiju/p/7533764.html
Copyright © 2011-2022 走看看