web-dev-qa-db-ja.com

期間は何ですか '。'オペレーターはPowerShellで実行しますか?

これは奇妙なものです。通常、PowerShellから外部コマンドを実行するときは、次のように&演算子を使用します。

& somecommand.exe -p somearguments

しかし、今日、私は次のように使用される.演算子に出くわしました。

.$env:systemdrive\chocolatey\chocolateyinstall\chocolatey.cmd install notepadplusplus

このシナリオでは、期間はどのような目的に役立ちますか?わかりません。

27
Micah

「。」呼び出し演算子は、呼び出した他のスクリプトから変数を送受信します。 「&」呼び出し演算子は変数のみを送信します。

たとえば、次のことを考慮してください。

スクリプト1(call-operator.ps1):

clear

$funny = "laughing"

$scriptpath = split-path -parent $MyInvocation.MyCommand.Definition
$filename = "laughing.ps1"

"Example 1:" # Call another script. Variables are passed only forward.

& $scriptpath\$filename

"Example 2:" # Call another script. Variables are passed backwards and forwards.

. $scriptpath\$filename
$variableDefinedInOtherScript

スクリプト2(laughing.ps1):

# This is to test the passing of variables from call-operator.ps1

"I am $funny so hard. Passing variables is so hilarious."

$variableDefinedInOtherScript = "Hello World!"

両方のスクリプトを作成し、最初のスクリプトのみを実行します。 「。」が表示されます。呼び出し演算子は変数を送受信します。

どちらにも用途がありますので、創造力を発揮してください。たとえば、「&」呼び出し演算子は、現在のスクリプトの元の値を保持しながら、別のスクリプトの変数の値を変更する場合に役立ちます。ちょっとセーフガード。 ;)

25
Vippy

ショート:通常の演算子では達成できないことを達成するために使用される特殊演算子です。この特定の演算子_._には、実際には2つの明確に異なる特殊演算子のユースケースがあります。

ロング:

他の言語、スクリプト、その他と同様に、PowerShellスクリプトは、値の操作に役立つさまざまな種類の演算子もサポートしています。これらの通常の演算子は次のとおりです。

  • 算術
  • 割り当て
  • 比較
  • 論理的
  • リダイレクション
  • リストアイテム
  • 分割して参加する
  • タイプ
  • 単項

ただし、PowerShellは、他の種類の演算子では実行できないタスクを実行するために使用される特殊演算子と呼ばれるものもサポートしています。

これらの特別な演算子には以下が含まれます:

  • @()配列部分式演算子
  • _&_通話オペレーター
  • _[ ]_キャスト演算子
  • _,_コンマ演算子
  • _._ドットソーシングオペレーター
  • _-f_フォーマット演算子
  • _[ ]_インデックス演算子
  • _|_パイプラインオペレーター
  • _._プロパティ逆参照演算子
  • _.._範囲演算子
  • _::_静的メンバー演算子
  • $( )部分式演算子

_._ドットソーシング演算子:は、このコンテキストで使用され、スクリプトを現在のスコープで実行できるようにし、基本的にすべての関数、エイリアス、および現在のスクリプトに追加されるスクリプトによって作成された変数。

例:

_. c:\scripts.sample.ps1 
_

この_._特殊演算子のアプリケーションの後には、(_._)記号と区別するためのスペースが続きます。現在のディレクトリを表します

例:

_. .\sample.ps1
_

_._プロパティ逆参照演算子:_._に続くオブジェクトのプロパティとメソッドへのアクセスを許可します。 _._文字の左側の式はオブジェクトであり、の右側の式はオブジェクトメンバー(プロパティまたはメソッド)です。

例:

_$myProcess.peakWorkingSet  
(get-process PowerShell).kill()
_

免責事項と出典:

PowerShellスクリプトを見ているときに、その機能セットを拡張しようとしていたのと同じ質問があり、答えを探すときにここにたどり着きました。しかし、 this を使用して答えを見つけることができました。MicrosoftDevelopmentNetworkに、同じアイデアをさらに拡張した this を追加した壮大な記事があります。 ITプロから。

乾杯。

9
codeRetard

ドットは呼び出し演算子です。

$a = "Get-ChildItem" 
. $a # (executes Get-ChildItem in the current scope)

しかし、あなたの場合、それが何をするのかわかりません。

6
David Brabant

オブジェクトプロパティの.Periodまたは.fullstop;お気に入り

$CompSys.TotalPhysicalMemory

ここを参照してください: http://www.computerperformance.co.uk/powershell/powershell_syntax.htm#Operators_

1
Rahul