在ISE中运行此代码即可。

Push-Location -Path $(Split-Path -Parent $myInvocation.MyCommand.Path)
Get-Location
$file = '.\ex.txt'
$reader = New-Object System.IO.StreamReader($file)

在控制台中运行相同的代码失败。我想念什么?
PS H:\src\powershell> .\ccount.ps1

Path
----
H:\src\powershell
New-Object : Exception calling ".ctor" with "1" argument(s): "Could not find file
'C:\src\powershell\ex.txt'."
At H:\src\powershell\ccount.ps1:9 char:11
+ $reader = New-Object System.IO.StreamReader($file)
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [New-Object], MethodInvocationException
    + FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands
   .NewObjectCommand

这与建议的重复有何不同

另一个问题/答案确实说明了为什么在这种情况下PowerShell会失败。但是,它没有提供任何暗示为什么在ISE中有效。这似乎是控制台和ISE主机之间的重大差异。

我在Windows 7 Enterprise SP1上运行PSVersion 5.0.10586.117。

最佳答案

Push-Location -Path $(Split-Path -Parent $myInvocation.MyCommand.Path)
$myInvocation.MyCommand.Path
Get-Location
$file = Resolve-Path '.\ex.txt'
$reader = New-Object System.IO.StreamReader($file)

关于powershell - 当前目录显然不是当前目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44162443/

10-10 16:47