Configuration Managerを実行しているコンピューターのコンピューター変数を作成するには、SMS_MachineSettings クラスの配列プロパティに SMS_MachineVariable のインスタンスを追加MachineVariablesします。
コンピューター変数を作成するには
SMS プロバイダーへの接続をセットアップします。 詳細については、「 SMS プロバイダーの基礎」を参照してください。
SMS_MachineSettingsのインスタンスを取得します。追加する変数ごとに、埋め込みオブジェクトのインスタンスを
MachineVariables配列プロパティにSMS_MachineVariableを追加します。SMS_MachineSettingsクラス インスタンスに変更をコミットします。
例
次の例のメソッドでは、コレクション変数を作成し、指定された識別子で識別されるコレクションに追加します。
この例では、 LocaleID プロパティは英語 (米国) にハードコードされています。 米国以外のロケールが必要な場合 SMS_Identification Server WMI ClassLocaleID プロパティから取得できます。
サンプル コードの呼び出しの詳細については、「Configuration Manager コード スニペットの呼び出し」を参照してください。
Sub CreateComputerVariable(connection, siteCode, name, value, mask, computerId)
Dim computerSettings
Dim computerVariables
Dim computerVariable
Dim Settings
' See if the computer settings object already exists. if it does not, create it.
Set settings = connection.ExecQuery _
("Select * From SMS_MachineSettings Where ResourceID = '" & computerID & "'")
If settings.Count = 0 Then
Wscript.Echo "Creating computer settings object"
Set computerSettings = connection.Get("SMS_MachineSettings").SpawnInstance_
computerSettings.ResourceID = computerId
computerSettings.SourceSite = siteCode
computerSettings.LocaleID = 1033
computerSettings.Put_
End If
' Get the computer settings object.
Set computerSettings = connection.Get("SMS_MachineSettings.ResourceID='" & computerId &"'" )
' Get the computer variables.
computerVariables=computerSettings.MachineVariables
' Create and populate a new computer variable.
Set computerVariable = connection.Get("SMS_MachineVariable").SpawnInstance_
computerVariable.Name = name
computerVariable.Value = value
computerVariable.IsMasked = mask
' Add the new computer variable.
ReDim Preserve computerVariables (UBound (computerVariables)+1)
Set computerVariables(UBound(computerVariables)) = computerVariable
computerSettings.MachineVariables=computerVariables
computerSettings.Put_
End Sub
public void CreateComputerVariable(
WqlConnectionManager connection,
string siteCode,
string name,
string value,
bool mask,
int computerId)
{
try
{
// Get the computer settings.
IResultObject computerSettings=null;
IResultObject computerSettingsQuery = connection.QueryProcessor.ExecuteQuery(
"Select * from SMS_MachineSettings where ResourceId = '" + computerId + "'");
foreach (IResultObject settings in computerSettingsQuery)
{
computerSettings = settings;
}
if (computerSettings == null) // It does not exist, so create it.
{
computerSettings = connection.CreateInstance(@"SMS_MachineSettings");
computerSettings["ResourceID"].IntegerValue = computerId;
computerSettings["SourceSite"].StringValue = siteCode;
computerSettings["LocaleID"].IntegerValue = 1033;
computerSettings.Put();
computerSettings.Get();
}
// Create the computer variable.
List<IResultObject> computerVariables = computerSettings.GetArrayItems("MachineVariables");
IResultObject computerVariable = connection.CreateEmbeddedObjectInstance("SMS_MachineVariable");
computerVariable["Name"].StringValue = name;
computerVariable["Value"].StringValue = value;
computerVariable["IsMasked"].BooleanValue = mask;
// Add the computer variable to the computer settings.
computerVariables.Add(computerVariable);
computerSettings.SetArrayItems("MachineVariables", computerVariables);
computerSettings.Put();
}
catch (SmsException e)
{
Console.WriteLine("Failed to create computer variable: " + e.Message);
throw;
}
}
サンプル メソッドには、次のパラメータがあります:
| パラメーター | 型 | 説明 |
|---|---|---|
connection |
- 管理対象: WqlConnectionManager- VBScript: SWbemServices |
SMS プロバイダーへの有効な接続。 |
siteCode |
- 管理対象: String- VBScript: String |
ソース サイトのサイト コード。 |
name |
- 管理対象: String- VBScript: String |
作成する変数の名前。 |
value |
- 管理対象: String- VBScript: String |
変数の値。 |
mask |
- 管理対象: Boolean- VBScript: Boolean |
値が Configuration Manager コンソールに表示されるかどうかを指定します。true - 変数値は表示されません。false - 変数値が表示されます。 |
computerID |
- 管理対象: Integer- VBScript: Integer |
コンピューター識別子。 通常、これは SMS_R_System クラス ResourceID プロパティです。 |
コードのコンパイル
C# の例では、次のようなコンパイル要件があります。
名前空間
System
System.Collections.Generic
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Assembly
Microsoft.ConfigurationManagement.ManagementProvider
adminui.wqlqueryengine
堅牢なプログラミング
エラー処理の詳細については、「Configuration Manager のエラーについて」を参照してください。
.NET Framework のセキュリティ
Configuration Manager アプリケーションのセキュリティ保護の詳細については、「Configuration Manager ロールベースの管理」を参照してください。