PowerShell

【PowerShell】変数の基本的な使い方の説明

2018年5月16日


Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548

こんにちは!

 

 

 

今回は、PowerShell の変数について基本的な使い方を説明いたします。

 

 

 

変数の使い方

 

 

変数とは、ある値や文字列を埋め込んで、それを呼び出せるような便利なものです。

詳しく説明するより、見てもらえれば理解できるかと思います。

 

 

例えば、こんな感じです。

 

[code language="powershell"]
PS C:\Users\Administrator> $var = "Hello"
PS C:\Users\Administrator> $var
Hello
[/code]

 

 

 

上では、 $var という変数に Hello という文字列を指定しました。

Hello が $var という変数に埋めこまれた感じになります。

 

 

この $(ドル)ですが、変数の頭に付きます。変数はアルファベット(英語)で書きます。分かり易いのが良いでしょう。

ここでは便宜的に、変数は英語で variable  ですので、短縮して $var としています。

 

 

また、変数に複数の単語が続く場合は、_(アンダースコア)でつなぎます。

例えば、$file_copy などです。

 

 

 

変数の命名規則

 

 

変数を書くときは名前規則というのがありまして、以下のルールに沿って書かなければなりません。

 

 

  • $ で始めます。
  • 単語が 2 個以上続く場合は、_(アンダースコア)でつなぎます。余談ですが、これをスネークケースと呼びます。

 

 

変数はニックネームみたいなイメージですかね。例えば、浦島という名前が 10 という変数に埋め込まれるとします。

味気ないので下の画像では、浦島くんが 10 番と呼ばれるようにしました。つまり、10 というニックネームが付きました。

 

 

 

 

 

これを PowerShell に置き換えるとこうなります。

 

[code language="powershell"]
PS C:\Users\Administrator> $10 = "浦島"
[/code]

 

 

 

それで、今度は埋め込まれた変数を呼び出してみます。

みんなで浦島君に 10番で呼んでみます。

 

 

 

 

本当は浦島という名前ですが、10 というニックネームで浦島君が呼べたのです。

これを PowerShell に置き換えるとこうなります。

 

[code language="powershell"]
PS C:\Users\Administrator> $10
浦島
[/code]

 

 

 

これで変数の使い方がどんなものかお分かりいただけたかと思います。

複数の変数に値をいれて、一度に呼び出すこともできます。

例えばこんな感じです。

 

[code language="powershell"]
PS C:\Users\Administrator> $var1 = "Hello"
PS C:\Users\Administrator> $var2 = "World!"
PS C:\Users\Administrator> "$var1 $var2"
Hello World!
[/code]

 

 

 

$var1 という変数に Hello を埋め込んで、$var2 という変数に World! を埋め込みました。

それで、$var1 と $var2 を一度に呼びました。文字列なので、"(ダブルクォーテーション)で囲ってます。

 

 

 

ここまで、変数に文字列を埋め込んでから変数を読んで、埋め込まれた文字列を呼び出しました。

そこで、設定した変数を確認する事もできます。

 

[code language="powershell"]

PS C:\Users\Administrator> Get-Variable
...
PSVersionTable {PSVersion, PSEdition, PSCompatibleVersions, BuildVersion...}
PWD C:\Users\Administrator
ShellId Microsoft.PowerShell
...
<strong>10 浦島</strong>
<strong>var Hello</strong>
<strong>var1 Hello </strong>
<strong>var2 World!</strong>
...
VerbosePreference SilentlyContinue
WarningPreference Continue
WhatIfPreference False
[/code]

 

 

 

10 と var と var1 と var2 が確認できました。それぞれの変数の右には埋め込んだ文字列が表示されています。

また、別の方法で変数に文字列を埋め込むこともできます。

 

[code language="powershell"]
PS C:\Users\Administrator> Set-Variable -Name "goodmorning" -Value "おはようございます。"
PS C:\Users\Administrator> $goodmorning
おはようございます。
[/code]

 

 

 

変数に埋め込んだ文字列だけ消したい場合は Clear-Variable を使います。

ここでは、$10 に浦島という文字列が埋め込まれたとします。

 

[code language="powershell"]
PS C:\Users\Administrator> $10 = "浦島"
PS C:\Users\Administrator> $10
浦島
[/code]

 

 

 

この浦島という文字列を消したい場合はこう使います。

 

[code language="powershell"]
PS C:\Users\administrator> Clear-Variable
コマンド パイプライン位置 1 のコマンドレット Clear-Variable
次のパラメーターに値を指定してください:
Name[0]: 10
Name[1]:  ← Enter キーを押す
[/code]

 

 

 

変数 10 を呼び出しても、浦島は出てきません。ただ、変数そのものは未だあります。

 

[code language="powershell"]
PS C:\Users\Administrator> $10
[/code]

 

 

 

今度は、変数とそれに埋め込まれている文字列も一緒に消したい場合はこう書きます。

 

[code language="powershell"]
PS C:\Users\administrator> Clear-Variable
コマンド パイプライン位置 1 のコマンドレット Remove-Variable
次のパラメーターに値を指定してください:
Name[0]: 10
Name[1]:  ← Enter キーを押す
[/code]

 

 

 

文字列が格納されているかどうか、Get-Variable で確認できますが、こんな方法もあります。

ただし、どんな文字列かはここでは表示されません。以下のように、$変数.GetType と書きます。

ここでは、10 に浦島がまだ入っている状態とします。

 

[code language="powershell"]
PS C:\Users\administrator> $10.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
[/code]

 

 

 

True や String と表示されていますよね、これはまだ文字列が埋め込まれている結果になります。

Clear-Variable で消した状態ですとこうなります。

 

[code language="powershell"]
$10.GetType()
null 値の式ではメソッドを呼び出せません。
発生場所 行:1 文字:1
+ $var.GetType()
+ ~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) []、RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
[/code]

 

 

 

以上で変数の説明はここまでとさせていただきます。

 

 

いかがでしょうか。

変数は色々な使い方ができますので、まずはこの基本的な使い方を覚えておきましょう。

 

 

では最後までお読みいただきありがとうございました!

 

 

おすすめの本はこちら ↓↓↓

 

  • この記事を書いた人

そーまん

セキュリティエンジニアやってます。
ブログ歴3年。PVは月15万PV程度。
趣味はボクシング、筋トレ、登山です。
穏やかで人見知りな性格です。

人気記事

1

こんにちは!そーまんです。 今回は、PC に適用されている GPO を確認する方法について書きました。 本題に入る前に、一応参考までにGPOの適用タイミングについての記事をここに貼りましたので、必要に ...

2

こんにちは!そーまんです。 今回は sysprep について、全体的に PC をセットアップする観点から書いてみました。長々と書いてあります。まずは前置きからです。 まずはじめに 組織では PC のラ ...

3

こんにちは!そーまんです。 今回は、グループポリシー (GPO) を使って、特定のコンピューターに対して、ドメインユーザーに ローカル管理者権限 (以下は特権と記載) を付与する方法について書きました ...

4

こんにちは!そーまんです。 今回は、Windows サインイン後に一時ユーザープロファイルが読み込まれてしまった場合の解決方法について書きました。 Windows 10 の検証環境をいじってたらサイン ...

5

こんにちは!そーまんです。 今回は、ユーザープロファイルを削除する方法について書いてみました。 企業の場合よくあることですが、1 台の PC を共有 PC として複数人で使ったり、また余り無いかもしれ ...

6

こんにちは!SE ブログの相馬です。       今回は、繰り返し文について書いてみました。PowerShell では他のプログラミング言語同様、繰り返し処理を行うことが ...

7

コマンドを使って CPU とメモリの使用率をデータで取得してみましたので、例えば PC のトラブルシューティングで問題を再現させる際にデータを取得しておくと、原因の特定に役立つ場合があるかと思います。

8

既存の PC と同じ構成で別のメーカーの PC でマスターイメージを作る際、インストールされているアプリを同一にする為に必要になるかと思います。

9

企業で多くの GPO が適用されている環境では、PC に GPO が適用されなかったりする問題が発生する場合があるかと思います。その中でも、コンピューターの構成またはユーザーの構成のどちらかで、...

10

こんにちは!そーまんです。 今回は、Windows Server 2019 で NTP サーバーと同期する方法について書きました。 NTP サーバーの必要性や時刻同期の重要性を理解することは社内のシス ...

-PowerShell
-


Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637

Warning: Trying to access array offset on value of type null in /home/r5652521/public_html/soma-engineering.com/wp-content/plugins/amazonjs/amazonjs.php on line 637