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函数中调用字符串函数有一些技巧?
感谢您的帮助!
答案 0 :(得分: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
,还是用它来修改其他文件?如果你是并且不介意对象是[System.IO.FileInfo]
,你可以使用$file.fullname
来获取你的路径字符串。这假定您没有以它成为FileInfo对象集合的方式对其进行修改。