none
ошибка в PowerShell в SCCM 2012 R2 RRS feed

  • Вопрос

  • пытаюсь вывести некоторую информацию с помощью PS. При вводе командлета get-cmdistributionpoint (и других) получаю ошибку: 

    This command cannot be run from the current drive. To run this command you must first connect to a Configuration Manager drive.

    Сам SCCM-сервер установлен на диске D.  как теперь использовать PS ?? что нужно сделать??

    12 июня 2018 г. 9:05

Ответы

  • https://msdn.microsoft.com/en-us/library/dn528996.aspx?f=255&MSPPError=-2147217396

    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа serg_23 12 июня 2018 г. 9:29
    • Снята пометка об ответе serg_23 12 июня 2018 г. 11:03
    • Помечено в качестве ответа serg_23 12 июня 2018 г. 11:34
    12 июня 2018 г. 9:12
    Модератор
  • Добрый день!

    можно попробовать конструкцию 

    Get-CMDevice -CollectionName 'All Systems' | where {$_.name -like 'OW*'} | Remove-CMDevice

    Коллекцию по выбору или же без выбора коллекции. Так же  после LIKE укажите условие, если известные вам буквы в центре имени то поместите их в * например *PC*  123PC123 . Так же перед добавлением после пайплайна удаление рекомендую посмотреть вывод. 

    • Предложено в качестве ответа Vector BCOModerator 12 июня 2018 г. 12:06
    • Помечено в качестве ответа Vector BCOModerator 12 июня 2018 г. 12:06
    12 июня 2018 г. 12:00
  • Добрый день. Сохраните модуль и используйте на здоровье его где удобно. 

    "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1" 

    После импорта локализуетесь на сайт сервере и управляйте, например:

    Set-location P01:

    • Изменено Демин Илья 14 июня 2018 г. 8:50
    • Помечено в качестве ответа serg_23 14 июня 2018 г. 8:51
    14 июня 2018 г. 8:49
  • часть новых командлетов в 1802, 1706 , 1710:

    https://docs.microsoft.com/en-us/powershell/sccm/1802_release_notes?view=sccm-ps

    все остальные командлеты до версии 1702:

    https://docs.microsoft.com/en-us/powershell/sccm/1702_release_notes?view=sccm-ps

    Дерзайте.

    Пример создания пакета:

    # Код сайта
      
    $SiteCode = "P01"
    
    # Имя пакета
       
    $Pkg = "name"
    
    # Месторасположение исполняемого файла
       
    $Source = "\\srv\content$\application\" # параметр опционален,в данном случае просто пример пути
    
    # Необходимое место
       
    $DiskSpace = "500"
    
    # Обьем в KB, MB , GB
       
    $DiskUnit = "MB"
    
    #Комнда командной строки
    $CommandLine = "setup.exe /q"
    
    # Максимум разрешеных запусков
       
    $Duration = "16"
    
    # Может запускаться следующими способами: "WhetherOrNotUserIsLoggedOn", "OnlyWhenNoUserIsLoggedOn", "OnlyWhenUserIsLoggedOn"
       
    $RunType = "WhetherOrNotUserIsLoggedOn"
    
    # Выбор режима запуска 
       
    $RunMode = "RunWithUserRights"
       
    $UserInteraction = $False
    
    # Разрешить установку из последовательности задач
       
    $EnableTS = $True
    
    # Распространение на слелующие группы распространения
       
    $DPG = "All Distribution Points"
     
    
    # Импортируем модуль
     
    Import-Module 'C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
    $Drive = $SiteCode + ':'
    Set-Location $Drive
    $ErrorActionPreference = "Stop"
     
     
    # Создание пакета
     
    write-host 'Creating Package'
    $Package = New-CMPackage -Name $Pkg -Path $Source
     
     
    # Создание программы
     
    write-host 'Adding Program'
    $Program = New-CMProgram `
        -PackageName $Pkg `
        -StandardProgramName $Pkg `
        -CommandLine $CommandLine `
        -DiskSpaceRequirement $DiskSpace `
        -DiskSpaceUnit $DiskUnit `
        -Duration $Duration `
        -ProgramRunType $RunType `
        -RunMode $RunMode `
        -UserInteraction $UserInteraction
     
     
    # Обновление
     
    $ProgramUpdate = Set-CMProgram `
        -Name $Pkg `
        -StandardProgramName $Pkg `
        -EnableTaskSequence $EnableTS
     
     
    # Распространение контента на точки распространения
     
    Write-Warning 'Распросранение контента на DP'
    Start-CMContentDistribution -PackageName $Pkg -DistributionPointGroupName $DPG
     
    Write-Host 'Выполнено!' -ForegroundColor Yellow






    • Изменено Демин Илья 22 июня 2018 г. 7:32
    • Помечено в качестве ответа serg_23 22 июня 2018 г. 8:08
    22 июня 2018 г. 7:20
  • да, так работает, но есть большой недостаток. после каждого компа спрашивается, готов ли я удалить его, нажать Y.  а если 50 компов, то это неудобно. как можно отключить этот вопрос или игнорировать, но так, чтобы команда отрабатывала??

    для справки по командлетам используйте конструкцию  help <cmdlet> -full. Например help Remove-CMDevice  -full

    Конкретно по вашему вопросу вам нужен ключ -Force


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа serg_23 12 июня 2018 г. 13:20
    12 июня 2018 г. 13:15
    Модератор

Все ответы

  • https://msdn.microsoft.com/en-us/library/dn528996.aspx?f=255&MSPPError=-2147217396

    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа serg_23 12 июня 2018 г. 9:29
    • Снята пометка об ответе serg_23 12 июня 2018 г. 11:03
    • Помечено в качестве ответа serg_23 12 июня 2018 г. 11:34
    12 июня 2018 г. 9:12
    Модератор
  • а как можно удалить все компы отдела, если в названии известны буквы  ??

    remove-cmdevice buh1  - удаление 1 компа. а всех с буквами buh как ??

    12 июня 2018 г. 10:01
  • Добрый день!

    можно попробовать конструкцию 

    Get-CMDevice -CollectionName 'All Systems' | where {$_.name -like 'OW*'} | Remove-CMDevice

    Коллекцию по выбору или же без выбора коллекции. Так же  после LIKE укажите условие, если известные вам буквы в центре имени то поместите их в * например *PC*  123PC123 . Так же перед добавлением после пайплайна удаление рекомендую посмотреть вывод. 

    • Предложено в качестве ответа Vector BCOModerator 12 июня 2018 г. 12:06
    • Помечено в качестве ответа Vector BCOModerator 12 июня 2018 г. 12:06
    12 июня 2018 г. 12:00
  • да, так работает, но есть большой недостаток. после каждого компа спрашивается, готов ли я удалить его, нажать Y.  а если 50 компов, то это неудобно. как можно отключить этот вопрос или игнорировать, но так, чтобы команда отрабатывала??
    12 июня 2018 г. 12:34
  • да, так работает, но есть большой недостаток. после каждого компа спрашивается, готов ли я удалить его, нажать Y.  а если 50 компов, то это неудобно. как можно отключить этот вопрос или игнорировать, но так, чтобы команда отрабатывала??

    для справки по командлетам используйте конструкцию  help <cmdlet> -full. Например help Remove-CMDevice  -full

    Конкретно по вашему вопросу вам нужен ключ -Force


    The opinion expressed by me is not an official position of Microsoft

    • Помечено в качестве ответа serg_23 12 июня 2018 г. 13:20
    12 июня 2018 г. 13:15
    Модератор
  • а можно подключиться PS к SCCM не через консоль ?? например консоль вообще удалена или просто не открывать, а пользоваться PS.
    14 июня 2018 г. 8:31
  • Добрый день. Сохраните модуль и используйте на здоровье его где удобно. 

    "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1" 

    После импорта локализуетесь на сайт сервере и управляйте, например:

    Set-location P01:

    • Изменено Демин Илья 14 июня 2018 г. 8:50
    • Помечено в качестве ответа serg_23 14 июня 2018 г. 8:51
    14 июня 2018 г. 8:49
  • а в каких случаях лучше PS использовать, чем консоль СЦЦМ ?? например, в S4B есть некоторые действия относительно админа, которые только в PS выполняются. есть какие-то примеры для СЦЦМ ??
    21 июня 2018 г. 14:57
  • Например я использую скрипты PowerShell в планировщике, для автоматического создания приложений, которые при выходе новой версии скриптом закачиваются в определенную папку. Для инженеров написал вот такой скрипт на открытие инвентаризации любого узла с клиентом без использования консоли:

    ##################################################################################################################
    Import-Module "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1" 
    
    Set-Location P01:
    ##################################################################################################################
    [void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') 
    $name = [Microsoft.VisualBasic.Interaction]::InputBox('Enter PC name', 'Enter PC or Server name') 
    function Get-ResourceExplorer { 
        Param 
        (
            [Parameter(Mandatory = $true, Position = 0)]
            [ValidateLength(1, 15)]
            [ValidateScript( {$_ -notmatch '\s+' -and $_ -match '\w+'})]
            [String]$Pcname,
            # Enter your site code and Site name 
            [Parameter(Mandatory = $false, Position = 1)] $SiteCode = "SiteCode", 
            [Parameter(Mandatory = $false, Position = 2)] $SiteServer = "SiteName" 
        ) 
        $device = "`'$Pcname`'" 
        $ResourceExplorer = Join-Path (Split-Path $env:SMS_ADMIN_UI_PATH) resourceexplorer.exe 
        $arguments = "-s -sms:ResExplrQuery=""SELECT ResourceID FROM SMS_R_SYSTEM WHERE Name = $device"" -sms:Connection=\\$SiteServer\root\sms\site_$SiteCode" 
        Start-Process $ResourceExplorer -ArgumentList $arguments 
    }
    Get-ResourceExplorer -Pcname $name
    Примеров масса и в основном все связанно с автоматизацией, ограничивается лишь вашей фантазией.  Обязательных рекомендаций вроде таких как "Только в PS  и никак иначе" не встречал.






    21 июня 2018 г. 16:24
  • вот массу примеров и хотелось бы узнать.
    22 июня 2018 г. 5:00
  • часть новых командлетов в 1802, 1706 , 1710:

    https://docs.microsoft.com/en-us/powershell/sccm/1802_release_notes?view=sccm-ps

    все остальные командлеты до версии 1702:

    https://docs.microsoft.com/en-us/powershell/sccm/1702_release_notes?view=sccm-ps

    Дерзайте.

    Пример создания пакета:

    # Код сайта
      
    $SiteCode = "P01"
    
    # Имя пакета
       
    $Pkg = "name"
    
    # Месторасположение исполняемого файла
       
    $Source = "\\srv\content$\application\" # параметр опционален,в данном случае просто пример пути
    
    # Необходимое место
       
    $DiskSpace = "500"
    
    # Обьем в KB, MB , GB
       
    $DiskUnit = "MB"
    
    #Комнда командной строки
    $CommandLine = "setup.exe /q"
    
    # Максимум разрешеных запусков
       
    $Duration = "16"
    
    # Может запускаться следующими способами: "WhetherOrNotUserIsLoggedOn", "OnlyWhenNoUserIsLoggedOn", "OnlyWhenUserIsLoggedOn"
       
    $RunType = "WhetherOrNotUserIsLoggedOn"
    
    # Выбор режима запуска 
       
    $RunMode = "RunWithUserRights"
       
    $UserInteraction = $False
    
    # Разрешить установку из последовательности задач
       
    $EnableTS = $True
    
    # Распространение на слелующие группы распространения
       
    $DPG = "All Distribution Points"
     
    
    # Импортируем модуль
     
    Import-Module 'C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1'
    $Drive = $SiteCode + ':'
    Set-Location $Drive
    $ErrorActionPreference = "Stop"
     
     
    # Создание пакета
     
    write-host 'Creating Package'
    $Package = New-CMPackage -Name $Pkg -Path $Source
     
     
    # Создание программы
     
    write-host 'Adding Program'
    $Program = New-CMProgram `
        -PackageName $Pkg `
        -StandardProgramName $Pkg `
        -CommandLine $CommandLine `
        -DiskSpaceRequirement $DiskSpace `
        -DiskSpaceUnit $DiskUnit `
        -Duration $Duration `
        -ProgramRunType $RunType `
        -RunMode $RunMode `
        -UserInteraction $UserInteraction
     
     
    # Обновление
     
    $ProgramUpdate = Set-CMProgram `
        -Name $Pkg `
        -StandardProgramName $Pkg `
        -EnableTaskSequence $EnableTS
     
     
    # Распространение контента на точки распространения
     
    Write-Warning 'Распросранение контента на DP'
    Start-CMContentDistribution -PackageName $Pkg -DistributionPointGroupName $DPG
     
    Write-Host 'Выполнено!' -ForegroundColor Yellow






    • Изменено Демин Илья 22 июня 2018 г. 7:32
    • Помечено в качестве ответа serg_23 22 июня 2018 г. 8:08
    22 июня 2018 г. 7:20
  • нашёл, как можно дать пользователю права к ОС, драйверам, пакету по имени или ID. Но не могу найти, как можно добавить аккаунт не одного пользователя, а сразу всю группу техподдержки из AD it_support, в которую входят, например 50 человек, чтобы не по одному отдельно добавлять.   или так нельзя??

    27 июня 2018 г. 11:46
  • Добрый день! Можно отчегож нельзя. Пример, получаем членов группы и добавляем в коллекцию


    $users = (Get-ADGroupMember it_support | select samaccountname).samaccountname
        foreach ($user in $users)
            {
                Import-Module "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1" 
                Set-Location P01:
                Add-CMUserCollectionDirectMembershipRule -CollectionName TEST -ResourceId (Get-CMUser -Name domain\$user).resourceid
            }


    В блоке между {} указываете что данному пользователю нужно дать следующие права , или любые другие действия. И данные права будут переданы каждому отдельному пользователю из массива полученных. Не забудьте импортировать модуль только и локализоваться на сайте





    27 июня 2018 г. 12:42
  • в какую коллекцию добавятся пользователи??? которая в Asset&Compliance->UserCollections ??

    в Administrative Users 2 пользователя-админа, права FullAdministrator. сюда можно добавить целую группу ?? 

    27 июня 2018 г. 13:18
  • Если разбирать пример который я привел, то в Asset&Compliance->UserCollections . Там указана коллекция с именем TEST.  Хоть весь домен добавить можете в Security roles - Full Administator

    Написанный цикл перебора foreach работает с каждым элементом массива отдельно, количество не важно.

    27 июня 2018 г. 13:25
  • в Administrative Users 2 пользователя-админа, права FullAdministrator. можно ли добавить группу 123 (в ней 20 юзеров) с правами ReadOnly, кроме Пушкина и Мушкина (их вообще исключить, не давать никаких прав)  ??
    28 июня 2018 г. 6:07
  • Добрый день!

    Вам нужно будет добавить блок if else пример:

    $users = (Get-ADGroupMember 123| select samaccountname).samaccountname
        foreach ($user in $users)
            {
            if ($user -like '*Pushkin*' -or $user -like '*Mushkin*')
                {
                Import-Module "C:\Program Files (x86)\Microsoft Configuration Manager\AdminConsole\bin\ConfigurationManager.psd1" 
                Set-Location P01:
                # Этим двоим следующие права
                }
            else
            {
                # Всем остальным такие права
            }
            }

    28 июня 2018 г. 6:43