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:消息窗口的按钮类型及其图标

    相关阅读:

  • 相关阅读:
    Codeforces Round #592 (Div. 2)C. The Football Season(暴力,循环节)
    Educational Codeforces Round 72 (Rated for Div. 2)D. Coloring Edges(想法)
    扩展KMP
    poj 1699 Best Sequence(dfs)
    KMP(思路分析)
    poj 1950 Dessert(dfs)
    poj 3278 Catch That Cow(BFS)
    素数环(回溯)
    sort与qsort
    poj 1952 buy low buy lower(DP)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310972.html
Copyright © 2011-2022 走看看