Ta bort en platsroll för tillståndsmigrering
Du tar bort rollen tillståndsmigreringsplats i Configuration Manager genom att ta bort rollens SMS_SCI_SysResUse WMI-klassobjekt för server.
Ta bort en platsroll för tillståndsmigrering
Konfigurera en anslutning till SMS-providern. Mer information finns i grunderna för SMS-provider.
Hämta SMS_SCI_SysResUse WMI-klassobjekt för rollen tillståndsmigreringsplats.
Ange motsvarande tillståndsmigreringsplats till ingen.
Ta bort tillståndsmigreringsplatsen SMS_SCI_SysResUse WMI-klassobjektet för servern .
Exempel
Följande exempelmetod tar bort den tillståndsmigreringsplats som identifieras av sökvägen platskod och nätverksabstraktionsnivå (NAL). Exemplet avgör om tillståndsmigreringsplatsen har några ofullständiga återställningar av tillståndsmigrering. Om det finns några tar den aktuella implementeringen fortfarande bort tillståndsmigreringsplatsen.
Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.
public void DeleteSmpRole(
WqlConnectionManager connection,
string siteCode,
string nalPath)
{
try
{
bool smpFound = false;
Console.WriteLine("About to delete the state migration point");
string query = string.Format(CultureInfo.InvariantCulture,
@"SELECT * from SMS_SCI_SysResUse where SiteCode='{0}' AND FileType=2 AND RoleName='{1}'AND NALPath='{2}'",
siteCode,
"SMS State Migration Point",
nalPath.Replace(@"\", @"\\"));
IResultObject resultObjs = connection.QueryProcessor.ExecuteQuery(query);
foreach (IResultObject resultObj in resultObjs)
{
smpFound = true;
if (DeleteSmpOK(resultObj) == true)
{
resultObj.Delete();
}
Console.WriteLine("Deleted");
}
if (smpFound == false)
{
Console.WriteLine("No state migration point was found");
}
}
catch (SmsException e)
{
Console.WriteLine("Couldn't delete the state migration point: " + e.Message);
throw;
}
}
public bool DeleteSmpOK(IResultObject selectedResultObject)
{
IResultObject resultObjs = null;
try
{
// Locate this state migration point, and determine if it is in QuiesceState or not, normal deletion
// if it is not.
string query = string.Format(CultureInfo.InvariantCulture,
@"SELECT * from SMS_SCI_SysResUse where SiteCode='{0}' AND FileType=2 AND NALPath='{1}' AND RoleName='{2}'",
selectedResultObject["SiteCode"].StringValue,
selectedResultObject["NALPath"].StringValue.Replace(@"\", @"\\"),
"SMS State Migration Point");
resultObjs = selectedResultObject.ConnectionManager.QueryProcessor.ExecuteQuery(query);
// Retrieve the state migration point server name because there could be more than one state migration point on the site, and you want to
// determine if there are unrestored data stores on only this one.
string smpServer = selectedResultObject["NetworkOsPath"].StringValue;
smpServer = smpServer.Replace(@"\", "");
foreach (IResultObject resultObj in resultObjs)
{
if (resultObj.EmbeddedProperties.ContainsKey("SMPQuiesceState") == true &&
resultObj.EmbeddedProperties["SMPQuiesceState"].Properties["Value"].IntegerValue != 0)
{
// Find out whether this state migration point contains any stateMigrationRestores that are incomplete on this
// server that is to be deleted.
string query2 = string.Format(CultureInfo.InvariantCulture, @"SELECT * from SMS_StateMigration where StorePath Like '%{0}%'", smpServer);
IResultObject resultObjs2 = selectedResultObject.ConnectionManager.QueryProcessor.ExecuteQuery(query2);
foreach (IResultObject resultObj2 in resultObjs2)
{
// Look for state migration objects without a StoreReleaseData/Migration date
// it's the one that will cause an exception when reading releasetime because it is not a valid datetime.
try
{
DateTime releaseTime = resultObj2["StoreReleaseDate"].DateTimeValue;
}
catch (ArgumentOutOfRangeException)
{
// Alternatively return false if you do not to delete.
return true;
}
}
}
}
}
catch (SmsQueryException ex)
{
Console.WriteLine("Failed during smp state determination" + ex.Message);
throw;
}
finally
{
if (resultObjs != null)
{
resultObjs.Dispose();
}
}
// Delete the role.
return true;
}
Exempelmetoden har följande parametrar:
Parameter | Typ | Beskrivning |
---|---|---|
connection |
Hanterade: WqlConnectionManager |
En giltig anslutning till SMS-providern. |
siteCode |
Hanterade: String |
Configuration Manager platskod. |
nalPath |
Hanterade: String |
NAL-sökvägen till tillståndsmigreringsplatsen. Till exempel ["Display=\\SERVERNAME\"]MSWNET:["SMS_SITE=SITECODE"]\\SERVERNAME\ |
Kompilera koden
C#-exemplet har följande kompileringskrav:
Namnområden
System
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Globalization
Församlingen
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Robust programmering
Mer information om felhantering finns i Om Configuration Manager fel.
.NET Framework Säkerhet
Mer information om hur du skyddar Configuration Manager program finns i Configuration Manager rollbaserad administration.
Se även
SMS_SCI_SysResUse, serverns WMI-klass
Om konfiguration av platsrollen för operativsystemdistributionSå här läser och skriver du till Configuration Manager platskontrollfil med hjälp av hanterad kod