I am trying to write a PowerShell script to enable a feature on all subwebs of a given site collection and everything was going swimmingly until I tried to get the actual feature to be enabled. I am successful in using the SharePoint API everywhere, but when i get to this:
$activatedFeature = $web.Features.Add($Feature.Id, $true)
I am getting a ridiculous exception that I cant seem to figure out.
System.Management.Automation.MethodException: Cannot find an overload for "Add" and the argument count: "2".
at System.Management.Automation.Adapter.FindBestMethod(String methodName, MethodInformation[] methods, Object[] arguments, Boolean& expandParamsOnBest)
at System.Management.Automation.DotNetAdapter.MethodInvokeDotNet(String methodName, Object target, MethodInformation[] methodInformation, Object[] arguments)
at System.Management.Automation.Adapter.BaseMethodInvoke(PSMethod method, Object[] arguments)
at System.Management.Automation.ParserOps.CallMethod(Token token, Object target, String methodName, Object[] paramArray, Boolean callStatic, Object valueToSet)
at System.Management.Automation.MethodCallNode.InvokeMethod(Object target, Object[] arguments, Object value)
at System.Management.Automation.MethodCallNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
at System.Management.Automation.AssignmentStatementNode.Execute(Array input, Pipe outputPipe, ExecutionContext context)
at System.Management.Automation.StatementListNode.ExecuteStatement(ParseTreeNode statement, Array input, Pipe outputPipe, ArrayList& resultList, ExecutionContext context)
I cant say that this exception makes much sense to me, nor can I find anything helpful from resources here or searching on key terms.
Has anyone experienced something like this before? If so, how do i correct it.
I had written a function to return the SPFeatureDefinition of the feature being activated and apparently it was returning an array of two items. The second item in the array was the SPFeatureDefinition and I was not aware of this. So, after calling that function i did this:
After this, everything worked fine.