powershell函数内部的$ string.IndexOf('.')返回方法调用失败

Dan*_*ton 4 powershell powershell-2.0

Function doSomething($param1 $param2 $file)
{
...doing stuff
$pos = $file.IndexOf('.')
}

doSomething -param1 'stuff' -param2 'more stuff' -file 'C:\test.txt'
Run Code Online (Sandbox Code Playgroud)

返回错误:方法调用失败,因为[System.IO.FileInfo]不包含名为"IndexOf"的方法.

但是在函数外部或从命令行调用它可以解决问题.

这是powershell的限制还是在powershell函数中调用字符串函数有一些技巧?

谢谢您的帮助!

Ant*_*ace 11

IndexOf是一种类型的方法string.我怀疑在某个地方...doing stuff,你正在$file以这样的方式运行它被视为System.IO.FileInfo.

我怀疑这部分是因为我试图在我的环境中复制它并使其工作:

function doSomething ($file) 
{ 
    # This gets the index of . in 'C:\test.txt', which should be at position 7.
    $pos = $file.IndexOf('.')
    $pos
    $file.GetType() 
}
doSomething -file 'C:\test.txt'
7

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     String                                   System.Object
Run Code Online (Sandbox Code Playgroud)

您是否正在运行$file,或使用它来修改其他文件?如果你是并且不介意对象是a [System.IO.FileInfo],你可以$file.fullname用来获取你的路径字符串.这假定您没有以它已成为FileInfo对象集合的方式对其进行修改.