4
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函数中调用字符串函数有一些技巧?

谢谢您的帮助!

4

1 回答 1

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

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

于 2013-09-25T01:10:20.567 回答