Я пытаюсь создать новую рекламу с помощью Powershell. Я осмотрелся и нашел несколько скриптов, использующих WMI. Использование Set-WMIInstance на SMS_Реклама класс. Я могу это сделать!
Моя проблема в том, что кажется, что есть другой класс SMS_AdvertiseInfo. Когда я использую консоль SCCM 2007 и создаю новое объявление, оба класса обновляются и имеют элементы для нового объявления.
Мне нужна помощь в понимании потока. Похоже, что документации по классу SMS_AdvertiseInfo нет, и все просто ссылаются на добавление экземпляров в класс SMS_Advertise.
Что я делаю не так? Приведенный ниже код создает новую рекламу из существующей.
# Get all the advertisements for the specific package
$adv = Get-WmiObject -Namespace "root\SMS\$SMSSite" -Query "Select * from SMS_Advertisement WHERE PackageID = '$($pkg.PackageID)'" -ComputerName $SMSServer
# Get SMS Parts for creating the new Advertisement: CollectionID, PackageID, Program
$collectionID = (Get-WmiObject -Namespace "root\SMS\$SMSSite" -ComputerName $SMSServer -Query "Select * from SMS_Collection WHERE Name = '$AdvCollectionName'").CollectionID
$packageID = (Get-WmiObject -Namespace "root\SMS\$SMSSite" -ComputerName $SMSServer -Query "Select PackageID from SMS_Package WHERE Name = '$PkgName'").PackageID
$prg = Get-WmiObject -Namespace "root\SMS\$SMSSite" -ComputerName $SMSServer -Query "Select * from SMS_Program WHERE PackageID = '$($_.packageID)'"
$adv[2] | ForEach-Object {
# Build hashtable of arguments for the creation
$arguments = @{
AdvertFlags = $_.AdvertFlags;
AdvertisementName = "WIN7x64TEST - $($_.AdvertisementName)";
CollectionID = $collectionID;
PackageID = $_.packageID;
DeviceFlags = $_.DeviceFlags;
ProgramName = "WIN7x64TEST - $($_.ProgramName)";
RemoteClientFlags = $_.RemoteClientFlags;
SourceSite = $_.SourceSite;
TimeFlags = $_.TimeFlags
}
}
# Create the advertisement using the SMS_Advertisement WMI Class
Set-WmiInstance -class SMS_Advertisement -arguments $arguments -namespace "root\SMS\$SMSSite" -ComputerName $SMSServer