0
컴퓨터를 특정 SCCM 모음으로 가져오고 싶습니다.컴퓨터를 SCCM에 추가하고 특정 컬렉션으로 가져 오기
private void button2_Click(object sender, EventArgs e)
{
AddNewComputer(PcNameBox.Text, MacAdrBox, PcNameBox.Text, CollectionDropDown.Text);
}
하지만 난 :
public int AddNewComputer(
WqlConnectionManager connection,
string netBiosName,
string smBiosGuid,
string macAddress)
{
try
{
if (smBiosGuid == null && macAddress == null)
{
throw new ArgumentNullException("smBiosGuid or macAddress must be defined");
}
// Reformat macAddress to : separator.
if (string.IsNullOrEmpty(macAddress) == false)
{
macAddress = macAddress.Replace("-", ":");
}
// Create the computer.
Dictionary<string, object> inParams = new Dictionary<string, object>();
inParams.Add("NetbiosName", netBiosName);
inParams.Add("SMBIOSGUID", smBiosGuid);
inParams.Add("MACAddress", macAddress);
inParams.Add("OverwriteExistingRecord", false);
IResultObject outParams = connection.ExecuteMethod(
"SMS_Site",
"ImportMachineEntry",
inParams);
// Add to All System collection.
IResultObject collection = connection.GetInstance("SMS_Collection.collectionId='ABC0000A'");
IResultObject collectionRule = connection.CreateEmbeddedObjectInstance("SMS_CollectionRuleDirect");
collectionRule["ResourceClassName"].StringValue = "SMS_R_System";
collectionRule["ResourceID"].IntegerValue = outParams["ResourceID"].IntegerValue;
Dictionary<string, object> inParams2 = new Dictionary<string, object>();
inParams2.Add("collectionRule", collectionRule);
collection.ExecuteMethod("AddMembershipRule", inParams2);
return outParams["ResourceID"].IntegerValue;
}
catch (SmsException e)
{
Console.WriteLine("failed to add the computer" + e.Message);
throw;
}
}
지금, 나는 버튼 이벤트로 호출하려고 :
은 내가 MSDN에서이 방법을 발견했습니다 미안하지만,이 시점에서 WQLConnectionManager를 호출하는 방법은 없습니다. 개체가 "PcNameBox.Text"전에 미리 설정되어야한다는 것을 알고 있습니다. 그게 내가 같이 호출, 다른 이벤트에 모든 :(
입니다 :.
SmsNamedValuesDictionary namedValues = new SmsNamedValuesDictionary();
WqlConnectionManager connection = new WqlConnectionManager(namedValues);
connection.Connect(PrimarySiteServer);
그러나이 방법은 나를 어려움을 겪고 사전에
감사합니다 (그것은, 관대 pleave 유일한 취미입니다) 힌트 용
크리스
링크 전용 답변을 제공하지 마십시오. 링크가 끊어지면 대답은 쓸모가 없습니다. –
요청한대로 Microsoft가 갑자기 사라지거나 지난 8 년간 아무렇지도 않게 그대로 남아있는 기사를 임의로 제거하기로 한 경우 복사 및 붙여 넣은 예제 코드입니다. (농담, 나는 당신의 요지를 얻는다.) – Matt
개인적으로이 Microsoft 예제에 대해 혼란스럽게 생각한 것은 처음에는 AdminUI.WqlQueryEngine.dll 및/또는 Microsoft.ConfigurationManagement.ManagementProvider.dll에 대한 참조가 필요하다는 것입니다. SCCM 콘솔 디렉토리 \ bin에 있습니다. 나는 왜 누군가가 참조를 언급하지 않고 샘플 코드를 게시 하겠지만 MS는 항상 그렇게하는지 모른다. 또한 기본적으로 WMI 호출이고 기본 메서드로 수행 할 수 있기 때문에 항상이 DLL을 예제로 사용하는 이유를 항상 혼란스러워했지만 그냥 숨겨진 점이 있기를 바랬습니다. – Syberdoor