Windows PowerShellにおける変数と演算子の使用方法について学びます。今回は代表的な演算子として、算術演算子、代入演算子、論理演算子、比較演算子、範囲演算子、置換演算子、ビット演算子、型演算子、包含演算子、単項演算子を取り上げます。

対象読者

  • Windows PowerShellでコマンドレット操作ができる方
  • 何らかのプログラミング経験があればなお良い

必要環境

  • Windows PowerShell

変数

変数を宣言する

 PowerShellでは、変数は必ず$記号で始まり、文字、数字、記号、およびスペースを組み合わせて指定します。

 変数を宣言するには

$var = "Test"

 のように変数に値を割り当てるか、New-Variableコマンドレットを使用して

New-Variable var -value "Test"

 のように入力します。

 また、コンソールウィンドウ上で変数の中身を確認するには、単純に変数名の後に[Enter]キーを押します。

$var[Enter]

 変数名は大文字/小文字を区別しないので$var$Var$VARと記述しても同じ変数を指します。

 スペースを組み合わせた変数を作成して使用する場合は

${var x} = "Test"

 のように、{} を使用します。

変数の型を確認する

 先ほどの変数への代入

$var = "Test"

 では、文字列(2重引用符で括ることで文字列を表現します)を代入してるため、$varは.NET FrameworkのString型となります。

 $varの型を実際に確かめるにはコンソールウィンドウで

$var.GetType()

 と入力し、[Enter]キーを押してください。

 

 $varString型であることを確認できました。

 今度は、現時点でString型である$varに数値を代入してみましょう。コンソールウィンドウで

$var = 3
$var.GetType()

 と入力し、[Enter]キーを押してください。

 

 Int32に変更されていることが分かります。このように、PowerShellの変数は代入した値に合わせて型が自動で決定されます。

 PowerShellでは変数の型を明示的に指定することもできます。試しにコンソールウィンドウでint型の変数$intを作成し、その後に文字列"Test"を代入するという実験を行ってみましょう。

[int]$int = 3
$int = "Test"
 
値 "Test" を型 "System.Int32" に変換できません。
エラー: "入力文字列の形式が正しくありません。"
発生場所 行:1 文字:5
+ $int <<<< = "Test"

 というエラーが発生します。

 このように、明示的に型を指定した場合には、その型以外のデータは代入できなくなります。

演算子

 演算子と一口に言っても、PowerShellで使用可能な演算子は多数あります。代表的な演算子について例を挙げながら説明していきます。

算術演算子

 算術演算子は四則演算を表す演算子です。PowerShellで使用可能な算術演算子は次のとおりです。

算術演算子
演算子 説明
+ 2つの値を加算する
- 一方の値から他方の値を減算する
- 値を負の数値に変換する
* 2つの値を乗算する
/ 2つの値で除算を行う
% 除算で発生した余りを返す

 また、演算子には次の優先順位があります。演算の順番を変更するには、優先したい演算を「かっこ ()」で括ります。

  1. - (負の数を表すマイナス記号)
  2. *、/、%
  3. +、- (減算を表すマイナス記号)

 では、算術演算子を使用して四則演算を行ってみましょう。コンソールウィンドウで下記のように入力してみてください。

PS C:\Work> 2 + 8 * 3

 優先順位に従って、8 * 3を実行した後に 2 を加算したので、結果として26が返されます。

代入演算子

 代入演算子は文字通り、値を代入するための演算子です。代入演算子には次のものがあります。

代入演算子
演算子 説明
= 指定した値を変数に設定します。
+= 指定した値を変数の値に加算するか、指定した値を既存の値に追加します。
-= 指定した値を変数の値から減算します。
*= 指定した値で変数の値を乗算するか、指定した値を既存の値に追加します。
/= 指定した値で変数の値を除算します。
%= 指定した値で変数の値を除算し、余りを変数に代入します。

 いくつか例を示します。

 まず = 演算子です。変数の項でも触れましたが、= 演算子を使用することで変数に値を代入できます。

PS C:\Work> $val = "Test"

 次に += 演算子ですが、この演算子は変数の値を増加(インクリメント)または追加します。

 下記は、初期値として変数 $a に 1を与え、その後に += 演算子で2を加算しています。結果として 3 が変数にセットされます。

PS C:\Work> $a = 1
PS C:\Work> $a += 2
PS C:\Work> $a
3

 +=演算子は(*=演算子も)文字列に対しても使用することができます。

 文字列の場合は、変数に直前に入っていた文字列に対して、新しい文字列を追加します。下記を実行すると、それぞれの文字列が連結して"Windows PowerShell"という文字列が変数にセットされます。

PS C:\Work> $a = "Windows "
PS C:\Work> $a += "Power"
PS C:\Work> $a += "Shell"
PS C:\Work> $a
Windows PowerShell

 *=演算子は、1つの文字列を指定した数値分だけ連結して返します。

 下記は "Test" という文字列を3つ連結し、結果として "TestTestTest"という文字列が変数にセットされます。

PS C:\Work4> $a = "Test"
PS C:\Work4> $a *= 3
PS C:\Work4> $a
TestTestTest

論理演算子

 論理演算子は与えられた引数を評価し、1つの出力(TrueまたはFalse)を返します。論理演算子には次のものがあります。

論理演算子
演算子 説明
-and 論理積
-or 論理和
-not 論理否定
-! 論理否定

 下記は変数$ageが30以上で40より小さいかどうかを-andで判定しています(-ge-ltに関しては、本記事の「比較演算子」の項を参照ください)。

PS C:\Work> $age = 35
PS C:\Work> ($age -ge 30) -and ($age -lt 40)
PS C:\Work> True

比較演算子

 比較演算子は与えられた引数を評価し、1つの出力(TrueまたはFalse)を返します。比較演算子には次のものがあります。

比較演算子
演算子 説明
-eq 等しい
-ne 等しくない
-gt より大きい
-ge 以上
-lt より小さい
-le 以下
-like ワイルドカードによる比較
-notlike ワイルドカードによる比較
-match 正規表現による比較
-notmatch 正規表現による比較

 下記は変数 $val が 数値の3に等しいか評価しています。

PS C:\Work> $val = 3
PS C:\Work> $val -eq 3
True

 次に -like演算子の例ですが、下記は文字列"PowerShell"が"Power"で始まっているかをlike検索しています。

PS C:\Work> "PowerShell" -like "Power*"
True

 -match演算子は、文字列を正規表現と比較し一致するかどうかに応じてTrueまたはFalseを返します

PS C:\Work> "PowerShell" -match "Shell"
True

範囲演算子

 範囲演算子を使用すると、ステートメント内で使用できる値の範囲を指定することができます。範囲演算子は2つのピリオド(..)で表現されます。

 範囲演算子は次のように記述します。

範囲の開始値..範囲の終了値

 下記は、1~5までの繰り返しを意味しています。

PS C:\Work> foreach ( $cnt in 1..5 )
>> {
>> Write-Host $cnt
>> }
>>
1
2
3
4
5

置換演算子

 置換演算子は、指定した値で元の値の一部または全体を置き換えることができます。置換演算子は下記に示すように3つあります。

置換演算子
演算子 説明
-replace 半角英字の大文字/小文字を区別しないで置換する。
-ireplace 同上。
-creplace 半角英字の大文字/小文字を区別して置換する。

 演算子の先頭に"i"をつけた場合(-ireplace)と、先頭に何も文字を付加しない場合(-replace)は大文字と小文字を区別しません。また、演算子の先頭に"c"を付けた場合(-creplaces)は大文字と小文字を区別します。

 文字を置換するという意味では一緒ですが、半角英字の大文字/小文字の区別をするかどうかで使用する演算子が異なることに注意してください。

 置換演算子は下記のようにして使用します

"置換対象文字列" -replace "置換したい文字(列)", "置換後の文字(列)"

 下記は"MagaZine"という文字列を"CodeZine"へ置換します

PS C:\Work> "MagaZine" -replace "Maga","Code"

ビット演算子

 ビット演算子は、ビットの比較によって生成された値を返します。ビット演算子には次のものがあります。

ビット演算子
演算子 説明
-band ビット And
-bor ビット Or

 下記は数値10と12のビットAND演算を行います。

PS C:\Work> 10 -band 12
8

 なぜ8を返しているかですが、上記は2進数で計算してみると

    1010 (10)
AND 1100 (12)
-------------
1000 (8)

 となるからです。

型演算子

 型演算子を使用すると、指定した値の型を判定することができます。型演算子には次のものがあります。

型演算子
演算子 説明
-is 指定された型である。
-isnot 指定された型ではない。

 演算結果は TRUEまたはFALSEで返されます。下記は数値の3がint型であるかを確認します。

PS C:\Work> 3 -is [int]
True

包含演算子

 包含演算子を用いると、コレクションの中に指定した値が含まれているかどうかを確認することができます。包含演算子には次のものがあります。

包含演算子
演算子 説明
-contains コレクションに指定した値が含まれている
-notcontains コレクションに指定した値が含まれていない

 演算子の先頭に"i"をつけた場合(-icontains および -inotcontains)と先頭に何も文字を付加しない場合(-contains-notcontains)は大文字と小文字を区別しません。また、演算子の先頭に"c"を付けた場合(-ccontains-cnotcontains)は大文字と小文字を区別します。

 下記は数値1,2,3,4,5のいずれかに3が含まれているかを評価します

PS C:\Work> 1,2,3,4,5 -contains 3
True

 下記は"ORANGE","BANANA","GRAPES" のいずれかに"BANANA"が含まれているかを評価します。

PS C:\Users\HIRO> "ORANGE","BANANA","GRAPES" -contains "BANANA"
True

単項演算子

 単項演算子には次のものがあります。

単項演算子
演算子 説明
++ インクリメント
-- デクリメント
+ 正の数を表す
- 負の数を表す

 下記は変数の値をインクリメントします

PS C:\Work> $a = 1
PS C:\Work> $a++

 下記は負の数を表します

PS C:\Work> $a = -1

まとめ

 Windows PowerShellにおける変数と演算子の使用方法について見てきました。今回紹介した内容をリファレンスとして活用いただければ幸いです。

 次回は制御構文について説明したいと思います。

Windows PowerShell 入門(4)-変数と演算子的更多相关文章

  1. Windows PowerShell 入門(7)-関数編2

    この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.前回に引き続きPowerShellにおける関数の取り扱いとして.変数と関数のスコ ...

  2. Windows PowerShell 入門(3)-スクリプト編

    これまでの記事 Windows PowerShell 入門(1)-基本操作編 Windows PowerShell 入門(2)-基本操作編 2 対象読者 Windows PowerShellでコマンド ...

  3. Windows PowerShell 入門(2)-基本操作編 2

    前回に引き続きMicrosoftが提供している新しいシェル.Windows Power Shellの基本操作方法を学びます.基本操作編第2弾の今回は.パイプの使用方法を中心としたコマンドレットの操作方 ...

  4. Windows PowerShell 入門(6)-関数編1

    この連載では.Microsoftが提供している新しいシェル.Windows Power Shellの使い方を解説します.今回は.関数の作成基礎と引数.戻り値.Switchパラメータについて説明します. ...

  5. Windows PowerShell 入門(8)-関数編3

    この連載では.Microsoftが提供している新しいシェル.Windows PowerShellの使い方を解説します.今回は.フィルタ.スクリプトブロック.変数のスコープについて取り上げます. はじめ ...

  6. Windows PowerShell 入門(9)-エラー編

    対象読者 Windows PowerShellでコマンドレット操作ができる方 何らかのプログラミング経験があればなお良い 必要環境 Windows PowerShell エラーをリダイレクトする リダ ...

  7. Windows PowerShell 入門(10)-デバッグ編

    対象読者 Windows PowerShellでコマンドレット操作ができる方 何らかのプログラミング経験があればなお良い 必要環境 Windows PowerShell デバッグメッセージの出力 Po ...

  8. Windows PowerShell 入門(5)-制御構文

    Windows PowerShellにおける制御構文について学びます.数ある制御構文の中でもSwitch文は.他の言語に比べ豊富な機能が用意されています. 対象読者 Windows PowerShel ...

  9. Windows PowerShell 入門(1)-基本操作編

    Microsoftが提供している新しいシェル.Windows Power Shellの基本操作方法を学びます.インストール.起動終了方法.コマンドレット.命名規則.エイリアス.操作方法の調べ方について ...

随机推荐

  1. 新硬盘挂载-fdisk+mount案例实操

    新硬盘挂载-fdisk+mount案例实操 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 现在很多服务器都支持热插拔了,当有新的硬盘插入到服务器上我们需要将其分区,格式化,然后挂载 ...

  2. Java从resources文件夹读取配置文件

    列举了2种方式,第一种是绝对路径,就是写死路径,不推荐 第二种是相对路径,使用到了ClassLoader package com.StadyJava.day22; import java.io.Fil ...

  3. 原生JavaScript运动功能系列(二):缓冲运动

    匀速运动实现回顾 缓冲运动剖析 示例实现 方法提取 匀速运动实现回顾及缓冲运动剖析: 在这个系列的上一篇博客中原生JavaScript运动功能系列(一):运动功能剖析与匀速运动实现就运动的核心功能组成 ...

  4. Set实现数组去重

    ES6 提供了新的数据结构 Set 它类似于数组,但是成员的值都是唯一的,没有重复的值 (set本身是一个构造函数,用来生成 Set 数据结构)   使用Set实现数组去重要简单很多.   第一种数组 ...

  5. python模块之序列化

    序列化 什么是序列化 序列化是将字典.列表等数据类型转化成一个字符串的过程 序列化的目的 1. 以某种存储形式使自定义对象持久化(存储) 2. 将对象从一个地方传递到另一个我地方(传输) 3. 使程序 ...

  6. 在ServiceModel客户端配置部分中,找不到引用协定“”的默认终结点元素

    鄙人自己写了一个读取文件的ASP.NET服务,在Silverlight工程中添加服务引用(名字为FileIOService)后,出现了如上的错误. 出错原因:服务是在项目B中调用的,但是主项目是A,所 ...

  7. Weex Ui - Weex Conf 2018 干货分享

    本文是2018年 Weex Conf 中议题<Weex + Ui>的内容文档整理,主要给大家介绍飞猪 Weex 技术体系从无到有的过程,包括 Weex Ui 组件库的开发和发展,重点分享在 ...

  8. 【游记】关于NOIP2017

    -2017.11.13- Day0.到达酒店无所事事.跟着两个大佬拉着窗帘玩恐怖游戏留下了心理阴影,然后跑去找葱葱一起复习.晚上很晚才睡.Day1.T1结论题,以前写过.T2模拟,细节有点多.T3Di ...

  9. 【BZOJ3697】采药人的路径 点分治

    [BZOJ3697]采药人的路径 Description 采药人的药田是一个树状结构,每条路径上都种植着同种药材.采药人以自己对药材独到的见解,对每种药材进行了分类.大致分为两类,一种是阴性的,一种是 ...

  10. web渗透测试基本步骤

       基本常见步骤: 一 .信息收集 要检测一个站首先应先收集信息如whois信息.网站真实IP.旁注.C段网站.服务器系统版本.容器版本.程序版本.数据库类型.二级域名.防火墙.维护者信息有哪些等等 ...