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

时间:2013-09-25 01:01:25

标签: powershell powershell-v2.0

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

doSomething -param1 'stuff' -param2 'more stuff' -file 'C:\test.txt'

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

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:11)

IndexOfstring类型的方法。我怀疑在...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

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