zoukankan      html  css  js  c++  java
  • PowerShell Special Characters And Tokens

    $ (dollar sign)
    Declare/use a variable
    Example.
    $abc = "123"


    $_ (dollar underscore)

    'THIS' token. Typically refers to the item inside a foreach loop.
    Task: Print all items in a collection.
    Solution.
    ... | foreach { Write-Host $_ }


    $$ (double dollar, two dollars) 
    Last entered token. Does NOT refer to a whole command.
    Task: Say hello world twice.
    Solution.
    Write-Host "Hello, world!"
    $$


    $? (dollar sign + question mark) 
    Many google searches were looking for this information, so I experimentally found what it does.
    Returns True or False value indicating whether previous command ended with an error. For some reason it does not catch all errors, but most of the time it works. 
    Task 1: See if a powershell cmdlet exists in the system.
    Code.
    SomeCmdLet #does not exists
    $?
    $?
    Output.
    The term 'SomeCmdLet' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the
    spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:15
    +     SomeCmdLet <<<<  #does not exists
        + CategoryInfo          : ObjectNotFound: (SomeCmdLet:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    False    #error occured - previous cmdlet (SomeCmdLet) was not found
    True     #no errors returned by the previous command ($?)

    Task 2: See if a WMI class exists in the system
    Code.
    gwmi win32_processo -ErrorAction SilentlyContinue   #intentional error, win32_processor is the right one
    $?
    $?
    Output.
    False
    True


    | (pipeline)
    Catch output of the command and pass it to another command.
    Task: Get list of processes and select top 3 items.
    Solution.
    Get-Process | Select-Object -first 3


    % (percentage) 
    1. Shortcut to foreach.
    Task: Print all items in a collection.
    Solution.
    ... | % { Write-Host $_ }

    2. Same as Mod in VB.
    Example:
    5 % 2


    .. (double dot) 
    Specify a range.
    Task: Print numbers 1 through 5 without a foreach loop.
    Code.
    1..5
    Output. 
    1
    2
    3
    4
    5


    :: (double-colon) 
    Thanks to Darrell for asking about this one.
    Reference static member of a class.
    Task: Compare two strings.
    Code.
    [string]::Equals("a", "b")
    Output. 
    False


    ! (exclamation mark)
    Thanks to Leo for asking about this one. 
    Shortcut to -not.
    Code.
    $a = $null;
    if(!$a) { Write-Host '$a is null' }
    Output.
    $a is null


    ? (question mark)
    Output all items that conform with condition (shortcut to where). Shortcut to the following: 
    foreach { if (...) {return ... } }
    Task: Print all odd numbers between 1 and 5 (inclusive):
    Code.
    1..5 | ? { $_ % 2 }
    Output.
    1
    3
    5


    ` (backtick)
    1. Continue command on the next line.
    Code.
    Write-Host `
    "Hello, world!"
    Output.
    Hello, world!

    2. Include a special symbol into a string. Available options:
    `0 - Null. My preference is using $null instead.
    `a - Alert. Yes, it does make sound, and you can use multiple for multiple beeps.
    `b - Backspace
    `f - form feed - only affects printed documents.
    `n - New line
    `r - Carriage return
    `t - Horizontal tab
    `v - Vertical tab - only affects printed documents.
    `' - Single quote - I prefer using double quotes when I need to escape a single one, since I don't need any escaping in this case.
    `" - Double quote - you can use single quotes, and you don't need this symbol. My preference is use standard escaping instead, so 4 double quotes ("""") means a double quote.
    Official article by Microsoft with full description on every token: 
    http://technet.microsoft.com/en-us/library/hh847835.aspx


    # (pound sign)
    Single line comment.
    Example.
    #This is a commented line
    #This is a second one


    <# ... #> (less triangle / lt + pound ... pound + greater triangle / gt)
    Block/Multi-line comment.
    Example.
    <#This is
    a commented
    block#>


    & (ampersand)
    Execute string as command.
    Example.
    & "Get-Process"


    @( ) (email-at + round brackets)
    Declare arrays.
    Note: comma is used as a separator, in contrast to hash table declaration.
    Example.  
    $a = @("One", "Two", "Three")


    @{ } (email-at + curly brackets/braces)
    Declare hash tables.
    Note: semicolon is used as a separator, in contrast to array declaration.
    Example.  
    $a = @{"1" = "one"; "2" = "two"; "3" = "three"}


    @' ... '@ (email-at + single quote ... single quote + email-at)
    Here-string without embedded variables.
    Code.
    @'
    $(1+2)
    $(3+4)
    $(5+6) 
    '@
    Output.
    $(1+2)
    $(3+4)
    $(5+6)


    @" ... "@ (email-at + double quote ... double quote + email-at)
    Here-string with embedded variables.
    Code. 
    @"
    $(1+2)
    $(3+4)
    $(5+6)
    "@
    Output.
    3
    7
    11

  • 相关阅读:
    Qt 最简单的多线程方法QtConcurrent::run()
    Qt 串口收发数据
    QString使用split按照某字符进行分解
    QT新建QWidget提示框(包含设置QLabel文字大小和居中)
    Mac电脑Docker拉取Mysql报错 no matching manifest for linux/arm64/v8 in the manifest list entries
    Goframe因为axios的header导致的一个BUG解析
    PHP版本如何写出让人很难理解的代码,显得自己很有水平
    vue通用配置异步加载同时保证同步
    GO性能分析pprof
    GO runtime的用法
  • 原文地址:https://www.cnblogs.com/yonglianglee/p/2741402.html
Copyright © 2011-2022 走看看