0
現在の作業ディレクトリを$ dp0に取得する方法が見つかりました。変数をパラメータとして使用すると、変数のソースを使用できない
PS C:\src\powershell> Get-Content .\curdir2.ps1
$dp0 = [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
Set-Location -Path $dp0
Write-Host "location is set"
Set-Location -Path [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition)
Write-Host (Get-Location).Path
は、なぜそれが私がSet-Location
にパラメータと同じ方法を使用しようとすると、それは誤りであるということですか?私はこれがPowerShellのオブジェクトに関する基本的なものかもしれないと思います。私は何を知る必要がありますか?
Set-Location : A positional parameter cannot be found that accepts argument 'C:\src\powershell\curdir2.ps1'.
At C:\src\powershell\curdir2.ps1:6 char:1
+ Set-Location -Path [System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.De ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Set-Location], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
私はあなたにチェックマークを与えています。あなたはカッコが必要な理由についてもっと何か言えますか?私は他の言語でそれを見たことはないと思う。 – lit
PowerShellの構文は、引用符で囲まれていないテキストを 'string'や' string [] '(文字列の配列)型の文字列として扱うため、非常に奇妙です。文字列の中と同様に、変数 '$ var'と式' $(....) 'だけを認識します。裸のかっこは基本的に引用符を使用しないときの後者の省略形です。 – wOxxOm