1. 程式人生 > >powershell指令碼,命令列引數傳值,並繫結變數的例子

powershell指令碼,命令列引數傳值,並繫結變數的例子

        這是小技巧文章,所以文章不長。但原創唯一,非常重要。我搜了下,還真沒有人發 powershell怎樣 【命令列 引數 繫結】,所以我決定寫成部落格。

搜尋關鍵字如下:

powershell 命令列 引數 繫結

powershell 傳入 引數

powershell 傳遞 引數

powershell CmdletBinding

powershell 命令列 引數 繫結 傳入 傳遞 parameter CmdletBinding

powershell 傳教士 原創文章。始於 2016-09-26 允許轉載,但必須保留名字和出處,否則追究法律責任

---【寫文章初衷】---

powershell 前人寫了幾篇powershell傳值的帖子,但那些都是講$args的。而我這篇主要講CmdletBinding的。大家不可不知。

---【powershell 指令碼的 命令列引數繫結】---

問:什麼是$args傳值法?

答:我把它稱為【引數位置傳值法】。 $args 是一個物件陣列。陣列中的值,分別為 【第一個引數】,【第二個引數】,【第三個引數】

設命令列為:

ps>a指令碼1.ps1 引數1 引數2 引數3    

那麼 $args[0] 的值為【引數1】, $args[1] 的值為【引數2】, $args[2] 的值為【引數3】,

我個人喜歡這種傳值方法。因為寫起來用起來簡單。 但是有個缺點,位置固定。

問:什麼是CmdletBinding傳值法?

答:我把它稱為【給指令碼內部變數名】傳值法。 這種傳值法適合於傳遞多個引數值,並且引數值的位置隨機。

設命令列為:

ps>b指令碼2.ps1 -嫦娥姐姐剛走_國慶節就要來了_十一吃點啥好呢 “攢錢等雙十一剁手中”  -中國的英文單詞是什麼 ‘china’

那麼指令碼應該這樣寫:

[CmdletBinding()]
Param(
    [string]$嫦娥姐姐剛走_國慶節就要來了_十一吃點啥好呢,
    #指令碼命令列引數繫結例子 powershell傳教士 製作 分享     
    [string]$中國的英文單詞是什麼
, [string]$aAaa = 'k', [Int32]$數字 = 17 ) $a = 'xxx' + $嫦娥姐姐剛走_國慶節就要來了_十一吃點啥好呢 + 'yyy' write-host $a write-host $中國的英文單詞是什麼

---【powershell 函式 的命令列繫結】---

函式的命令列繫結,也是一樣,請看程式碼:a.psm1

function aaa 
{
    [CmdletBinding()]
    Param(
        [string]$今天好心情_老熊請吃,
        #指令碼命令列引數繫結例子 powershell傳教士 製作 分享
        [int32]$a = 123     
    )

    write-host "老熊今天請吃 ? $今天好心情_老熊請吃 !!!"
    Write-Host $a
}

a.psm1使用方法:

import-module d:\xxx\a.psm1

 aaa      -今天好心情_老熊請吃        'ji'

返回:

老熊今天請吃 ? ji !!!

123

---【指令碼的知識點】---

1 必須在Param前面加上一行 “ [CmdletBinding()] ”,才能用【給指令碼內部變數名傳值法】。同時$args變數將為空。即這兩種傳值方法魚與熊掌不可兼得。

2 powershell命令列 支援:單引號,雙引號,中文的單引號,中文的雙引號。(linux版的powershell也完全支援這些)

3 powershell指令碼 支援:中文變數名,中文引數名。(linux版的powershell也完全支援這些)

4 tab補全:

4.1 輸入b,然後打【tab鍵】,即可補全出【b指令碼2.ps1】。

4.2 出現【b指令碼2.ps1】後,輸入【空格】,然後打【-】,然後打【tab鍵】,即可補全出【嫦娥姐姐剛走_國慶節就要來了_十一吃點啥好呢】。當然英文也能補全出來。

5 【給指令碼內部變數名傳值法】,【$args引數位置傳值法】。這兩種傳值方法,支援從powershell 2.0到最新版 powershell 5.1。

-完-

相關推薦

powershell指令碼命令數傳變數例子

        這是小技巧文章,所以文章不長。但原創唯一,非常重要。我搜了下,還真沒有人發 powershell怎樣 【命令列 引數 繫結】,所以我決定寫成部落格。 搜尋關鍵字如下: powershell 命令列 引數 繫結 powershell 傳入 引數 powershell 傳遞 引數 p

Windows小知識(關聯檔案開啟型別快捷鍵命令語句執行原理快速編輯模式)

如何關聯檔案的開啟型別 開啟命令執行工具,注意,win7,win8及以上的環境,要用管理員方式執行執行assoc.java=nppfile執行ftype nppfile="C:\ProgramFile

java中包的理解普通類、抽象類、介面作為方法數傳情況作為返回的傳遞情況。

一、包的概念 用於存放類檔案,包含原始檔還有.class檔案。通過包的分類管理讓功能相同的類放在一個資料夾裡。作用:為類檔案進行分類管理。 二、包的宣告格式 通常使用公司網址反寫。包名全部採用小寫字母。多層包用.連線。包的宣告必須在有效程式碼的第一行。 導包: impo

201403-3命令選項(c++字串處理)

試題編號: 201403-3 試題名稱: 命令列選項 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問

【第8天】Java方法過載、方法重寫(覆蓋)、構造方法及數傳

1 方法過載(overload) 2 方法重寫(覆蓋)(override) 3 構造方法 4 引數傳值 1 方法過載(overload) 方法過載的作用? 同時滿足使用者的不同需求。 同一個方法,使用者可以傳入不同

Linux終端下命令顏色的設定三步解決

要實現的效果如下: 步驟: 1,在命令列輸入: vim  ~/ .bashrc 2,進入vim編輯器內容頁,然後在vim的最後一行(正文的最後一行),輸入 PS1='\[\033[1;31;1m\]\[email

Python 處理指令碼命令引數

# -*- coding:utf-8 -*- import sys def test(): """ 引數列表:sys.argv 引數個數:len(sys.argv) 指令碼名: sys.argv[0] 引數1: sys.argv[1] 引數2:

遠端管理KVM命令控制KVMconsole連線透傳

遠端管理虛擬機器 首先,將虛擬機器改成橋接模式,才可以相互連線。 開啟宿主機的虛擬系統管理器     輸入要遠端管理的IP地址。     然後輸入密碼,顯示連線。     開啟遠端管理的主機的設定,設定VNC伺服器和所有介面,就

在Linux伺服器上命令下執行Matlab的.m檔案

1、採用shell工具例如xshell連線伺服器,鍵入 matlab ,或者含有matlab的相關命令,按照提示要求安裝Xmanager工具,只需官網下載,按說明安裝。 2、直接執行Matlab:$matlab,然後可以開啟matlab工具,根據xmanager工具可以在本地開啟matlab

命令中執行Python找不到匯入包

命令列中執行python,匯入其他目錄包時報找不到包的錯誤,原因是命令列中執行只會搜尋當前目錄下的包, import sys import os curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.sp

考慮以下 Python 程式碼如果執行結束命令中的執行結果是什麼?

l = [] for i in xrange(10):   l.append({‘num’:i}) print l在考慮以下程式碼,執行結束後的結果是什麼? l = [] a = {‘num’:0} for i in xrange(10):   a[‘num’] = i   l.append(a) prin

基本型別數傳(持續整理中)

一 、值傳遞 測試: 分析: 值傳遞的過程中會給形參分配一個同等型別的記憶體空間,將實參的內容深拷貝到為該形參分配的記憶體空間中,後續都是對形參的這塊空間進行操作,對實參的記憶體空間沒有影響; 二 、引用傳值 測試: 分析: 引用傳值,在函式中不用重新分配一個型別空間,形

12.15有一種數叫回文數正讀和反讀都一樣如12321便是一個迴文數。編寫一個程式命令得到一個整數判斷該數是不是迴文數

有一種數叫回文數,正讀和反讀都一樣,如12321便是一個迴文數。編寫一個程式,從命令列得到一個整數,判斷該數是不是迴文數 package Text6; import java.util.Scanner; public class Zuoyexuanzuo5 { public st

Java的知識點10——static關鍵字、靜態初始化塊、 數傳機制、包、匯入類import、 靜態匯入

static 關鍵字 在類中,用static宣告的成員變數為靜態成員變數,也稱為類變數。 類變數的生命週期和類相同,在整個應用程式執行期間都有效。它有如下特點:   1. 為該類的公用變數,屬於類,被該類的所有例項共享,在類被載入時被顯式初始化。   2. 對於該類的所

React Link 帶數傳

2018年11月09日 13:23:32 obf13 閱讀數:12 標籤: React 傳參

JAVA學習筆記 數傳機制

一。程式碼 public class user3 {int id;String name;String pass;static String company;public user3(int id,String name){ this.id=id; this.name=name;}public v

JavaScript各種定向攜帶數傳問題。(window.location.href)

帶變數 string id = Request.QueryString["id"].ToString(); Response.Write("<script>alert('成功');window.location.href('reply.aspx?word_id=

【舊文章搬運】獲取修改PEB中的映像路徑命令和當前目錄

原文發表於百度空間,2008-7-24 當時對UNICODE_STRING的使用還有點問題,導致最終效果圖中字串被截斷了========================================================================== 先從分析PEB開始吧.感覺分析這個東

Linux下Mongodb安裝命令操作和sql語句

--logappend --port=27017 --fork 5. 引數解釋: --dbpath 資料庫路徑(資料檔案)--logpath 日誌檔案路徑--master 指定為主機器--slave 指定為從機器--source 指定主機器的IP地址--pologSize 指定日誌檔案大小不超過64M.因為

使用shell指令碼命令 新增crontab 定時任務

crontab 是運維過程中常用的定時任務執行工具         一般情況下在有新的定時任務要執行時,使用crontab -e ,將開啟一個vi編輯介面,配置好後儲存退出,但是在自動化運維的過程中往往需要使用shell指令碼或命令自動新增定時任務。接下來結束三種(Cent