Sergey
Коллеги, кто-нибудь инвентаризацию сертификатов на рабочих станциях проводит? Для меня это стало актуально.
не так давно видел статейку, там делали классически, расширяли хинв + скрипт
Владимир
Sergey
ну вот помню что меня не сильно впечатлило
Владимир
Выносить динамическое свойство DaysToExpire так себе затея.
Dmitry
воначё... ну тогда @Panin собирай квери по другому
вот и думаю как :) видимо правда буду по мануфэкче
Владимир
Это таблица HIST засрётся не успев начаться.
Sergey
каждый цикл :)
Sergey
сильный ход
Sergey
@VladimirZelenov Володь а тебе что надо от этих сертификатов то?
Владимир
@VladimirZelenov Володь а тебе что надо от этих сертификатов то?
Делать репорты по протухающим сертификатам.
Quantum Yupiter
Один большой зеленый банк делал, вроде норм
Sergey
а то может комплайнса будет достаточно
Владимир
Сотрудников первой линии проще научить смотреть готовые отчеты, чем учить работе с отчетами по комплайнсу.
Владимир
Тем более, что в отчетах можно будет задать собственные фильтры.
Sergey
так и так отчёт писать свой
Владимир
так и так отчёт писать свой
Ну нее, для комплайнса можно готовый использовать.
Sergey
я имелл виду под себя
Dmitriy
Подскажите такой момент. Возможно ли создать коллекцию , кто не пользовался программой более 30 дней?
Sergey
Да, только сначала надо настроить сбор этой информации
Sergey
Это любимое демо мс было, про апп митиринг
Sergey
Отслеживание применения приложений с помощью функции контроля использования программных продуктов - Configuration Manager | Microsoft Docs https://docs.microsoft.com/ru-ru/sccm/apps/deploy-use/monitor-app-usage-with-software-metering
Sergey
Типа такого но только условие развернуть
Sergey
#WQL World Of Tanks runing last 30 days select distinct SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_SYSTEM inner join SMS_MonthlyUsageSummary on SMS_R_SYSTEM.ResourceID = SMS_MonthlyUsageSummary.ResourceID INNER JOIN SMS_MeteredFiles ON SMS_MonthlyUsageSummary.FileID = SMS_MeteredFilesf.MeteredFileID WHERE DateDiff(day, SMS_MonthlyUsageSummary.LastUsage, GetDate()) < 30 AND SMS_MeteredFiles.ProductName = 'World of Tanks'
Sergey
и там рядом несколько примеров
Sergey
#collection by #software #metering #rule Projects does not used > 180 days select distinct SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_SYSTEM inner join SMS_MonthlyUsageSummary on SMS_R_SYSTEM.ResourceID = SMS_MonthlyUsageSummary.ResourceID INNER JOIN SMS_MeteredFiles ON SMS_MonthlyUsageSummary.FileID =SMS_MeteredFilesf.MeteredFileID WHERE DateDiff(day, SMS_MonthlyUsageSummary.LastUsage, GetDate()) > 180 AND SMS_MeteredFiles.RuleID = '16777320'
jitesh kumar
How Can I Exclude Certain Machines from the Collections Looking to deploy certain apps in a collections where we don't want to deploy it for all systems added in collections Please let me know, How can we achieve it
Евгений
А целевые коллекции имеют какой-то отличительный признак, которого нет у других?
Anton
а не проще сделать коллекцию из 10 компьютеров и туда сделать деплой приложений? )
Quantum Yupiter
Статистика деплоев будет отдельной )
Anton
ну тогда пошем прогнать, делов то
Andrew
А пош это что?)
Quantum Yupiter
Powershell
Pavel pinky13
Поверщель
Quantum Yupiter
ну тогда пошем прогнать, делов то
Кстати, говорят допилили кмдлет Add-CMDeviceCollectionDirectRule, или как его там, и теперь он умеет сразу много машин за 1 присест закидывать
Anton
Add-CMDeviceCollectionDirectMembershipRule
Anton
ну да, можно сразу бахнуть из ткстешника
Anton
Get-Content "computers.txt" | foreach { Add-CMDeviceCollectionDirectMembershipRule -CollectionName "Abracadabra Collection" -ResourceID (Get-CMDevice -Name $_).ResourceID }
Anton
ну а для коллекций аля nested foreach
Quantum Yupiter
Это сколько будет бегать на 100 компах хотя бы? :)
Quantum Yupiter
Надо ж в БД найти машинку по имени (неиндексированное поле), а затем добавить её в коллекцию - и так 100 раз
Anton
https://skorotkov.wordpress.com/2018/06/24/sccm-powershell-add-cmdevicecollectiondirectmembershiprule/
Anton
Это сколько будет бегать на 100 компах хотя бы? :)
можно создать коллекцию с девайсами и добавить коллекцию в коллекции)
Quantum Yupiter
Quantum Yupiter
Впрочем гонять такой запрос к БД тоже не ахти, но надо
Владимир
Invoke-CMWmiQuery в помощь.
Владимир
Он понимает вхождения IN
Anton
чот по программистки сказал вроде
Anton
но это не точно )
Владимир
Invoke-CMWmiQuery -Query 'SELECT * FROM SMS_R_System WHERE Name IN ("computername1", "computername2")', далее эти данные отдавать в конвейер.
Sergey
не будет там много операций для 10 компов сделать коллекцию, а её уже директом / инклюдом в остальные
Sergey
а лучше за ранее делать бандлы таких коллекций типа all MS Office All MS Product
Sergey
хотя вон и так бандлы софтовые обещают, может и не актуально уже
Anton
да запустил и оставил и похуй )
Владимир
Через выполнение Get-CMDevice можно никогда не дождаться выполнения скрипта :)
Евгений
Invoke-CMWmiQuery -Query 'SELECT * FROM SMS_R_System WHERE Name IN ("computername1", "computername2")', далее эти данные отдавать в конвейер.
А зачем так мудрёно. Сделать коллекцию из этих 10 компов, а потом: фильтрануть сабжевые коллекции по папке, в которой они находятся, и добавить в каждую из них include collection правило
Евгений
Или я чего-то не понял в условии?
Anton
и ваще директмембершип не бест практис )
Евгений
в условии не было запрещения
Anton
а для теста показать заказчику пускай хоть 10 минут там добавляет
Anton
да, ТЗ не очень
Anton
пфешники тут вечно ворчат, а потом скидывают линк на свой пост про членство в коллекциях и как это отображается на производительности и ваще )))
Владимир
К примеру, у меня есть портал, где отражены назначенные лицензии. У меня есть коллекции, которые нужно динамически менять согласно этому списку. Но я, честно говоря, использую New-CMCollectionQueryMembershipRule.
Anton
напиши ему сразу запрос в бд 😉
Владимир
напиши ему сразу запрос в бд 😉
Доступ к БД закрыт, только RestAPI.
Anton
и ваще где там рест апи уже для конфига ... чот ждём всё и ждём
Anton
вот это вот всё дрочево давно уже надо методами в апи дёргать, а то всё пош-хуёшь, а тут чем удобно, тем и долбишься
Anton
в скоме правда вот они попробовали, но все полимеры проебали ;(
Владимир
Кстати, в SCCM нет командлета поменять Query Rule.
Владимир
function Set-CMCollectionQueryMembershipRule { [CmdletBinding(DefaultParameterSetName = "CollectionID")] param( [Parameter( Mandatory = $true, ValueFromPipeline = $true, ParameterSetName = "Collection")] [Alias("InputObject")] [Microsoft.ConfigurationManagement.ManagementProvider.IResultObject]$Collection, [Parameter( Mandatory = $true, ParameterSetName = "CollectionID")] [Alias("CollectionId")] [String]$Id, [Parameter( Mandatory = $true, ParameterSetName = "Name")] [String]$Name, [Parameter( Mandatory = $true)] [String]$RuleName, [Parameter( Mandatory = $true)] [String]$QueryExpression ) process { if ($PSCmdlet.ParameterSetName.Equals("CollectionID")) { $Collection = Get-CMCollection -Id $Id } elseif ($PSCmdlet.ParameterSetName.Equals("Name")) { $Collection = Get-CMCollection -Name $Name } $QueryMembershipRule = Get-CMCollectionQueryMembershipRule -InputObject $Collection -RuleName $RuleName if ($QueryMembershipRule -eq $null) { $QueryMembershipRule = $Collection.ConnectionManager.CreateInstance("SMS_CollectionRuleQuery") $QueryMembershipRule.RuleName = $RuleName } $QueryMembershipRule.QueryExpression = $QueryExpression $Properties = New-Object 'System.Collections.Generic.Dictionary[String,Object]' $Properties.Add("collectionRule", $QueryMembershipRule) $Collection.ExecuteMethod("AddMembershipRule", $Properties) | Out-Null } } Если вдруг кому-то надо.
Владимир
Я тут еще нашел, если нужно сделать Update Membership. В существующих командлетах тоже такого нет. function Update-CMCollectionMembership { param( [Parameter( Mandatory = $true, ParameterSetName = "SMS_Collection", ValueFromPipeline = $true)] [Microsoft.ConfigurationManagement.ManagementProvider.IResultObject]$Collection, [Parameter( Mandatory = $true, ParameterSetName = "Name")] [String]$Name, [Parameter( Mandatory = $true, ParameterSetName = "Id")] [Alias("CollectionId")] [String]$Id, [Switch]$IncludeSubcollections ) begin { if ($PSCmdlet.ParameterSetName.Equals("Name")) { $Collection = Get-CMCollection -Name $Name } elseif ($PSCmdlet.ParameterSetName.Equals("Id")) { $Collection = Get-CMCollection -Id $Id } } process { $Properties = New-Object 'System.Collections.Generic.Dictionary[String,Object]' $Properties.Add("includesubcollections", $IncludeSubcollections.IsPresent) $Collection.ExecuteMethod("RequestRefresh", $Properties) | Out-Null } }
Quantum Yupiter
и ваще где там рест апи уже для конфига ... чот ждём всё и ждём
Есть же давно, cmgraphprovider.exe или как его там, только не документирован никак
Quantum Yupiter
The System Center Configuration Manager AdminService Guide - A Square Dozen https://www.asquaredozen.com/2019/02/12/the-system-center-configuration-manager-adminservice-guide/
Quantum Yupiter
Из интернета рулить можно через cmg