Author Posts

October 10, 2016 at 2:13 pm

I would like to get the assigned site, set it and get it again to make sure it changed. I got this from the web:

$([WmiClass]"\\ny7D20360\ROOT\ccm:SMS_Client").GetAssignedSite()| Select sSiteCode 
$([WmiClass]"\\ny7D20360\ROOT\ccm:SMS_Client").SetAssignedSite("exe",$null)

errors with get:
Exception calling "GetAssignedSite" : ""
At line:1 char:3
+ $([WmiClass]"\\ny7D20360\ROOT\ccm:SMS_Client").GetAssignedSite()| Select sSiteCo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : WMIMethodException
error with set:
Cannot find an overload for "SetAssignedSite" and the argument count: "2".
At line:1 char:3
+ $([WmiClass]"\\ny7D20360\ROOT\ccm:SMS_Client").SetAssignedSite("exe",$null)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest
Can some please help.

October 10, 2016 at 2:17 pm

So, this is really more an SCCM question, unfortunately, but what it's telling you is that it can't find a version of SetAssignedSite() that accepts the two arguments you provided. I went to https://msdn.microsoft.com/en-us/library/cc146123.aspx, and it seems to want a site code as a string (like "exe" I suppose), but then it wants a long integer as a set of flags. You might try passing a zero instead of $null?

This is really outside PowerShell per se, and even worse it's an old COM class (the docs are from 2009!). COM doesn't always intro cleanly with .NET and PowerShell, so it may take some fiddling to figure out. It could also be a problem with the version of SCCM you're using – the docs indicate compatibility with 2007, but nothing later.