PowerShell

【PowerShell】データの種類について(整数型と文字列型)

2018年5月20日


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

こんにちは!

 

今回は、データ型についてまとめてみました。

 

整数型と文字列型について

 

 

  • 整数型は、数値のみになります。1 とか 100 などです。用途としては、例えば ID 番号などに使用されます。
  • 文字列型は、文字になります。名前や住所などになります。

 

PowerShell はデータ型を自動的に割り当てられます。

例えばこんな感じです。

 

まず、$var という変数に 100 を代入します。

[code language="poweshell"]
PS C:\Users\User> $var = 100
[/code]

 

 

$varのデータ型を見てみます。$var の後に ドットを付けて.gettype() と入力します。

gettype というのはメソッドといいます。データ型を取得します。

結果、Int32 というのが表示されました。これが整数型になります。

 

[code language="poweshell"]
PS C:\Users\User> $var.gettype()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
[/code]

 

 

今度は 100 をダブルクォーテーションで文字列にして $var に代入します。

(シングルクォーテーションだと文字列に変換してくれませんので注意が必要です。)

[code language="poweshell"]
$var = "100"
[/code]

 

 

$varのデータ型を見てみます。Stringというのが表示されました。これは文字列型になります。

ダブルクォーテーションを入れた事で、自動的に文字列型になりました。

[code language="poweshell"]
PS C:\Users\user> $var.gettype()

IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True String System.Object
[/code]

 

 

文字数を確認してみます。

まず、変数 $var に文字を代入し、文字数を表示します。

$var の変数の後にドットを付け、.Length と入力します。Length メソッドは文字数を取得します。

[code language="poweshell"]
PS C:\Users\User> $var = "PowerShell"

PS C:\Users\User> $var.Length
10
[/code]

 

 

特定の文字が入っているかいないか判定します。

まず、変数 $var に PowerShell という文字を代入し、 $var.Contains("Power") で Power という文字が入っているか判定します。

Contains はメソッドで、文字列に指定した文字が含まれているかどうか、True か False で結果を返します、

ここでは、指定した文字が入っているので、True が表示されます。

[code language="poweshell"]
PS C:\Users\User> $var = "PowerShell"

PS C:\Users\User> $var.Contains("Power")
True

PS C:\Users\User> $var.Contains("DOS")
False
[/code]

 

 

変数 $var に Windows PowerShell という文字を代入し、$var.IndexOf("PowerShell") で PowerShell の先頭の文字が何文字目か確認します。

IndexOf はメソッドで、指定した文字が、先頭から何文字目か確認します。また、0 番目から数えて返します。

ここでは 9 番目に 先頭の P があるので、 8 が表示されます。

[code language="poweshell"]
PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.IndexOf("PowerShell")
8
[/code]

 

 

変数に代入した文字を全て大文字にしてみます。

ToUpper メソッドは文字列を全て大文字に変換します。

[code language="powershell"]
PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.ToUpper()
WINDOWS POWERSHELL
[/code]

 

 

変数に代入した文字を全て小文字にしてみます。

ToUpper メソッドは文字列を全て小文字に変換します。

[code language="powershell"]
PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.ToUpper()
windows powershell
[/code]

 

 

特定の文字を別の文字に置き換えてみます。

Replace メソッドは第一引数を第二引数の文字に変換します。

PowerShell が第一引数で、パワーシェルが第二引数になります。

[code language="powershell"]
PS C:\Users\User> $var = "Windows PowerShell"

PS C:\Users\User> $var.Replace("PowerShell" , "パワーシェル")
Windows パワーシェル
[/code]

 

 

何かのメッセージや選択肢など、例えば以下のようにダブルクォーテーションで文字列にしたものが複数行入っているものを変数に格納してみます。

こういう場合は、@" で始まり、"@ で終わります。これを入れないとエラーになります。

[code language="powershell"]
PS C:\Users\User> $var = @"
Question: "How are you doing ?"
Answer: "I am good, thanks."
"@

PS C:\Users\User> $var
Question: "How are you doing ?"
Answer: "I am good, thanks."
[/code]

 

 

@" で始まり、"@ を入れないとエラーになります。

[code language="powershell"]
PS C:\Users\User> $var =
Question: "How are you doing ?"
Answer: "I am good, thanks."
Question: : 用語 'Question:' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されているこ
とを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:2 文字:1
+ Question: "How are you doing ?"
+ ~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (Question::String) [], CommandNotFoundExcepti
on
+ FullyQualifiedErrorId : CommandNotFoundException

Answer: : 用語 'Answer:' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認
し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。
発生場所 行:3 文字:1
+ Answer: "I'm good, thanks."
+ ~~~~~~~
+ CategoryInfo : ObjectNotFound: (Answer::String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
[/code]

 

 

変数の中に変数に入れたものを表示したい時、例えば以下のように年齢を変数に代入しておく事ができます。

これをヒヤドキュメントと呼ばれます。

[code language="powershell"]
$age = 40

$var = @"
Question: "How old are you?"
Answer: I am 40 years old.
"@
[/code]

 

 

メソッドの一覧を確認したい場合は、Get-Member を書きます。

変数が文字列の場合は、文字列のメソッドが表示されます。

[code language="powershell"]
PS C:\Users\User> $var = PowerShell

PS C:\Users\User> $var | Get-Member

TypeName: System.String

Name MemberType Definition
---- ---------- ----------
Clone Method System.Object Clone(), System.Object ICloneable.Cl...
CompareTo Method int CompareTo(System.Object value), int CompareTo(...
Contains Method bool Contains(string value)
...
TrimStart Method string TrimStart(Params char[] trimChars)
Chars ParameterizedProperty char Chars(int index) {get;}
Length Property int Length {get;}
[/code]

 

 

変数が整数の場合は、整数のメソッドが表示されます。

[code language="powershell"]
PS C:\Users\User> $var = 100

PS C:\Users\masasoma> $var | Get-Member

TypeName: System.Int32

Name MemberType Definition
---- ---------- ----------
CompareTo Method int CompareTo(System.Object value), int CompareTo(int value), int ...
Equals Method bool Equals(System.Object obj), bool Equals(int obj), bool IEquata...
GetHashCode Method int GetHashCode()
...
ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
[/code]

 

 

変数に代入されるデータを整数型に固定する事ができます。

変数の前に、[int] と入力します。こうする事で、特定のデータ型に固定させる事ができます。

また、代入した後に文字列を代入すると、エラーが出て代入に失敗します。

[code language="powershell"]
PS C:\Users\User> [int]$var = 100
PS C:\Users\User> $var.GetType()

PS C:\Users\User> $var = "PowerShell"
値 "PowerShell" を型 "System.Int32" に変換できません。エラー: "入力文字列の形式が正しくありません。"
発生場所 行:1 文字:1
+ $var = "PowerShell"
+ ~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : MetadataError: (:) [], ArgumentTransformationMetadataExceptio
n
+ FullyQualifiedErrorId : RuntimeException
[/code]

 

 

逆に、変数に代入されるデータを整数型に固定させない方法もあります。

変数の前ではなく、変数に代入する値の前に [int] と入力します。

[code language="powershell"]

$var = [int]100
$var.GetType()

$var = "PowerShell"
[/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