Powershellの「&」の意味とは

powershellの"&"の意味とは!?

まずこのアンドマークには別名が存在しており

名前を「アンパサンド」という

powershellにおけるアンパサンドは「実行演算子」と呼ばれる役割が与えられており

文字列をコードとして認識して実行することができます。

zenn.dev

"&"を使ったサンプルコード

&を使った実験です。

サンプルコードではGet-Processを文字列として変数$string_codeに格納し二つの方法 表示します。

パターンA:通常の文字列として表示

パターンB: コードとして実行し出力 Get-Processは""で囲まれているので文字列として普段は評価されますが、&を先頭に付け ることでコードとして評価できるようになるのです。

# 変数宣言
$string_code = "Get-Process"

#パターンA:通常の文字列として出力" 
$string_code 

#パターンB: コードとして実行して出力” 
& $string_code 

実行結果

パターンA:通常の文字列として出力 
Get-Process

パターンB: コードとして実行して出力 
Handles NPM(K) PM (K) WS (K)
CPU(s) Id SI Process Name

257 373
3540 9792
170000 aesm_service 12536 30108 1.20 9956 1 ApplicationFrame Host 147 1956 4496
58600 armsvc 369 5516 11788
58520 ast_CCore 127 1372 4588
10256 0 ast_CCoreComp

このようにコード内にあるコードを実行するプログラミングをメタプログラミングと呼びます

プログラミングのテクニックとしてはかなり高等技術です。

&に隠されたもう一つの意味

powershellパンパサンドにはもう一つの役割が与えられております。

それはバックグランドでの実行です。

バックグラウンドの実行とはユーザーから見えないところで実行してくれる仕組みのことです。

サンプルコード

Get-Process -Name pwsh & 

実行例(一例)

発生場所 行:1 文字:24 + Get-Process -Name pwsh & アンパサンド(&)文字は許可されていません。
& 演算子は、今後使用するために予約されています。
アンパサンドを二重引用符で囲 み(&")、文字列の一部として渡してください。 

しかし近年はバックグラウンド処理を目的とした&の実行は推奨されておらず

代わりにStart-Jobコマンドを使うことをおすすめしています。

Start-Job -ScriptBlock {Get-Process -Name pwsh} 

title:poewrshellの「&」の意味とは

description:powershellにおけるアンパサンドは「実行演算子」と呼ばれる役割が与えられており文字列をコードとして認識して実行することができます。

img:https://boeprox.files.wordpress.com/2016/01/image2.png category_script:page_name.startswith("16")