Create e executar scripts do PowerShell no console Configuration Manager

Aplica-se a: Configuration Manager (branch atual)

Configuration Manager tem uma capacidade integrada de executar scripts do PowerShell. O PowerShell tem o benefício de criar scripts automatizados sofisticados que são compreendidos e compartilhados com uma comunidade maior. Os scripts simplificam a criação de ferramentas personalizadas para administrar software e permitem que você realize tarefas mundanas rapidamente, permitindo que você faça trabalhos grandes de forma mais fácil e consistente.

Observação

Na versão 2006 e anterior, Configuration Manager não habilita esse recurso opcional por padrão. Você deve habilitar esse recurso antes de usá-lo. Para obter mais informações, confira Habilitar recursos opcionais de atualizações.

Com essa integração no Configuration Manager, você pode usar a funcionalidade Executar Scripts para fazer as seguintes coisas:

  • Create e edite scripts para uso com Configuration Manager.
  • Gerenciar o uso de script por meio de funções e escopos de segurança.
  • Suporte de pasta para scripts.
  • Execute scripts em coleções ou PCs do Windows gerenciados localmente.
  • Agende o runtime dos scripts no UTC em coleções ou PCs do Windows gerenciados localmente.
  • Obtenha resultados rápidos de script agregado de dispositivos cliente.
  • Monitore a execução do script e exiba os resultados dos relatórios da saída do script.

Aviso

  • Dado o poder dos scripts, lembramos que você é intencional e cuidadoso com o uso deles. Criamos proteções adicionais para ajudá-lo; Funções e escopos segregados. Certifique-se de validar a precisão dos scripts antes de executá-los e confirmar que eles são de uma fonte confiável, para impedir a execução de script não intencional. Esteja atento a caracteres estendidos ou outra ofuscação e eduque-se sobre como proteger scripts. Saiba mais sobre a segurança do script do PowerShell
  • Determinado software anti-malware pode disparar inadvertidamente eventos em relação aos recursos Configuration Manager Executar Scripts ou CMPivot. É recomendável excluir %windir%\CCM\ScriptStore para que o software anti-malware permita que esses recursos sejam executados sem interferência.

Pré-requisitos

  • Para executar scripts do PowerShell, o cliente deve executar o PowerShell versão 3.0 ou posterior. No entanto, se um script executado contiver funcionalidade de uma versão posterior do PowerShell, o cliente no qual você executa o script deverá estar executando essa versão do PowerShell.
  • Configuration Manager clientes devem estar executando o cliente a partir da versão 1706 ou posterior para executar scripts.
  • Para usar scripts, você deve ser membro da função de segurança apropriada do Configuration Manager.
  • Para importar e criar scripts – sua conta deve ter permissões de Create para scripts SMS.
  • Para aprovar ou negar scripts – sua conta deve ter permissões de aprovação para scripts SMS.
  • Para executar scripts – sua conta deve ter permissões de Script de Execução para Coleções.

Para obter mais informações sobre Configuration Manager funções de segurança:
escopos de segurança para executar scripts
Funções de segurança para executar scripts
Fundamentos da administração baseada em função.

Limitações

Atualmente, os scripts de execução são compatíveis:

  • Idiomas de script: PowerShell
  • Tipos de parâmetro: inteiro, cadeia de caracteres e lista.

Aviso

Lembre-se de que, ao usar parâmetros, ele abre uma área de superfície para potencial risco de ataque de injeção do PowerShell. Há várias maneiras de atenuar e contornar, como usar expressões regulares para validar a entrada de parâmetro ou usar parâmetros predefinidos. A melhor prática comum é não incluir segredos em seus scripts do PowerShell (sem senhas etc.). Saiba mais sobre a segurança do script do PowerShell

Executar autores e aprovadores de script

Executar Scripts usa o conceito de autores de script e aprovadores de script como funções separadas para implementação e execução de um script. Ter as funções de autor e aprovador separadas permite um processo importante marcar para a ferramenta poderosa que é Executar Scripts. Há uma função de script runners adicional que permite a execução de scripts, mas não a criação ou aprovação de scripts. Consulte Create funções de segurança para scripts.

Controle de funções de scripts

Por padrão, os usuários não podem aprovar um script que criaram. Como os scripts são poderosos, versáteis e potencialmente implantados em muitos dispositivos, você pode separar as funções entre a pessoa que cria o script e a pessoa que aprova o script. Essas funções dão um nível adicional de segurança contra a execução de um script sem supervisão. Você é capaz de desativar a aprovação secundária, para facilitar o teste.

Aprovar ou negar um script

Os scripts devem ser aprovados, pela função de aprovador de script , antes que possam ser executados. Para aprovar um script:

  1. No console Configuration Manager, clique em Biblioteca de Software.
  2. No workspace biblioteca de software , clique em Scripts.
  3. Na lista Script , escolha o script que você deseja aprovar ou negar e, na guia Página Inicial , no grupo Script , clique em Aprovar/Negar.
  4. Na caixa de diálogo Aprovar ou negar script , selecione Aprovar ou Negar para o script. Opcionalmente, insira um comentário sobre sua decisão. Se você negar um script, ele não poderá ser executado em dispositivos cliente.
    Script – Aprovação
  5. Conclua o assistente. Na lista Script , você verá a alteração da coluna Estado de Aprovação dependendo da ação que você tomou.

Permitir que os usuários aprovem seus próprios scripts

Essa aprovação é usada principalmente para a fase de teste do desenvolvimento de scripts.

  1. No console Configuration Manager, clique em Administração.
  2. No workspace Administração , expanda Configuração do Site e clique em Sites.
  3. Na lista de sites, escolha seu site e, na guia Página Inicial , no grupo Sites , clique em Configurações de Hierarquia.
  4. Na guia Geral da caixa de diálogo Propriedades de Configurações de Hierarquia, desmarque a caixa de seleção Autores do script exigem aprovador de script adicional.

Importante

Como prática recomendada, você não deve permitir que um autor de script aprove seus próprios scripts. Ele só deve ser permitido em uma configuração de laboratório. Considere cuidadosamente o impacto potencial de alterar essa configuração em um ambiente de produção.

Escopos de segurança

Executar Scripts usa escopos de segurança, um recurso existente de Configuration Manager, para controlar a criação e a execução de scripts por meio da atribuição de marcas que representam grupos de usuários. Para obter mais informações sobre como usar escopos de segurança, consulte Configurar administração baseada em função para Configuration Manager.

Create funções de segurança para scripts

As três funções de segurança usadas para executar scripts não são criadas por padrão em Configuration Manager. Para criar as funções de script runners, autores de script e aprovadores de script, siga as etapas descritas.

  1. No console Configuration Manager, acesseFunções deSegurança>de Administração>
  2. Clique com o botão direito do mouse em uma função e clique em Copiar. A função que você copia já tem permissões atribuídas. Verifique se você aceita apenas as permissões desejadas.
  3. Dê à função personalizada um Nome e uma Descrição.
  4. Atribua a função de segurança as permissões descritas abaixo.

Permissões de função de segurança

Nome da função: Script Runners

  • Descrição: essas permissões permitem que essa função execute apenas scripts que foram criados e aprovados anteriormente por outras funções.
  • Permissões: Verifique se o seguinte está definido como Sim.
Categoria Permissão Estado
Coleção Executar Script Sim
Site Leitura Sim
SMS Scripts Leitura Sim

Nome da função: autores de script

  • Descrição: essas permissões permitem que essa função crie scripts, mas não podem aprová-los ou executá-los.
  • Permissões: verifique se as seguintes permissões estão definidas.
Categoria Permissão Estado
Coleção Executar Script Não
Site Leitura Sim
SMS Scripts Criar Sim
SMS Scripts Leitura Sim
SMS Scripts Excluir Sim
SMS Scripts Modificar Sim

Nome da função: aprovadores de script

  • Descrição: essas permissões permitem que essa função aprove scripts, mas não podem criá-los ou executá-los.
  • Permissões: Verifique se as permissões a seguir estão definidas.
Categoria Permissão Estado
Coleção Executar Script Não
Site Leitura Sim
SMS Scripts Leitura Sim
SMS Scripts Aprovar Sim
SMS Scripts Modificar Sim

Exemplo de permissões de scripts SMS para a função de autores de script

Exemplo de permissões de scripts SMS para a função de autores de script

Suporte de pasta para scripts

A partir da versão 2403, você pode organizar scripts usando pastas. Essa alteração permite uma melhor categorização e gerenciamento de scripts.

Abra o console Configuration Manager e vá para o workspace da Biblioteca de Software. Na faixa de opções ou no menu com o botão direito do mouse, nos Scripts, selecione nas seguintes opções:

  • Criar pasta
  • Excluir Pasta
  • Renomear Pasta
  • Mover pastas
  • Definir escopos de segurança

Create um script

  1. No console Configuration Manager, clique em Biblioteca de Software.
  2. No workspace biblioteca de software , clique em Scripts.
  3. Na guia Página Inicial, no grupo Create, clique em Create Script.
  4. Na página Script do assistente de script Create, configure as seguintes configurações:
    • Nome do script – insira um nome para o script. Embora você possa criar vários scripts com o mesmo nome, o uso de nomes duplicados dificulta a localização do script necessário no console Configuration Manager.
    • Linguagem de script – atualmente, há suporte apenas para scripts do PowerShell.
    • Importar – importar um script do PowerShell para o console. O script é exibido no campo Script .
    • Limpar – remove o script atual do campo Script.
    • Script – exibe o script importado no momento. Você pode editar o script neste campo conforme necessário.
  5. Conclua o assistente. O novo script é exibido na lista Script com um status de Aguardar aprovação. Antes de executar esse script em dispositivos cliente, você deve aprová-lo.

Importante

Evite o script de uma reinicialização de dispositivo ou uma reinicialização do agente Configuration Manager ao usar o recurso Executar Scripts. Isso pode levar a um estado de reinicialização contínuo. Se necessário, há melhorias no recurso de notificação do cliente que habilitam a reinicialização de dispositivos. A coluna de reinicialização pendente pode ajudar a identificar dispositivos que precisam de uma reinicialização.

Parâmetros de script

Adicionar parâmetros a um script fornece maior flexibilidade para seu trabalho. Você pode incluir até 10 parâmetros. O seguinte descreve a funcionalidade atual do recurso Executar Scripts com parâmetros de script para; Cadeia decaracteres, tipos de dados inteiros . Listas de valores predefinidos também estão disponíveis. Se o script tiver tipos de dados sem suporte, você receberá um aviso.

Na caixa de diálogo Script Create, clique em Parâmetros de Script emScript.

Cada um dos parâmetros do script tem sua própria caixa de diálogo para adicionar mais detalhes e validação. Se houver um parâmetro padrão no script, ele será enumerado na interface do usuário do parâmetro e você poderá defini-lo. Configuration Manager não substituirá o valor padrão, pois ele nunca modificará o script diretamente. Você pode pensar nisso como "valores sugeridos pré-preenchidos" são fornecidos na interface do usuário, mas Configuration Manager não fornece acesso a valores "padrão" em tempo de execução. Isso pode ser trabalhado editando o script para ter os padrões corretos.

Importante

Os valores de parâmetro não podem conter uma única cotação.

Há um problema conhecido em que os valores de parâmetro que incluem ou são incluídos em aspas individuais não são passados para o script corretamente. Ao especificar valores de parâmetro padrão que contêm um espaço dentro de um script, use aspas duplas. Ao especificar valores de parâmetro padrão durante a criação ou execução de um Script, cercar o valor padrão em aspas duplas ou únicas não é necessário, independentemente de o valor conter um espaço ou não.

Validação de parâmetro

Cada parâmetro no script tem uma caixa de diálogo Propriedades do Parâmetro de Script para você adicionar validação para esse parâmetro. Depois de adicionar a validação, você deverá receber erros se estiver inserindo um valor para um parâmetro que não atenda à sua validação.

Exemplo: FirstName

Neste exemplo, você é capaz de definir as propriedades do parâmetro de cadeia de caracteres , FirstName.

Parâmetros de script – cadeia de caracteres

A seção de validação da caixa de diálogo Propriedades do Parâmetro de Script contém os seguintes campos para seu uso:

  • Comprimento mínimo – número mínimo de caracteres do campo FirstName .
  • Comprimento máximo- número máximo de caracteres do campo FirstName
  • RegEx – abreviação de Expressão Regular. Para obter mais informações sobre como usar a Expressão Regular, consulte a próxima seção Usando validação de expressão regular.
  • Erro personalizado – útil para adicionar sua própria mensagem de erro personalizada que substitui qualquer mensagem de erro de validação do sistema.

Usando a validação de expressão regular

Uma expressão regular é uma forma compacta de programação para verificar uma cadeia de caracteres em relação a uma validação codificada. Por exemplo, você pode marcar pela ausência de um caractere alfabético maiúscula no campo FirstName colocando [^A-Z] no campo RegEx.

O processamento de expressão regular para essa caixa de diálogo é compatível com o .NET Framework. Para obter diretrizes sobre como usar expressões regulares, consulte Expressão Regular do .NET e Linguagem de Expressão Regular.

Exemplos de script

Aqui estão alguns exemplos que ilustram scripts que talvez você queira usar com essa funcionalidade.

Create uma nova pasta e um arquivo

Esse script cria uma nova pasta e um arquivo dentro da pasta, dada a sua entrada de nomenclatura.

Param(
[Parameter(Mandatory=$True)]
[string]$FolderName,
[Parameter(Mandatory=$True)]
[string]$FileName
)

New-Item $FolderName -type directory
New-Item $FileName -type file

Obter versão do sistema operacional

Este script usa o WMI para consultar o computador para a versão do sistema operacional.

Write-Output (Get-WmiObject -Class Win32_operatingSystem).Caption

Editar ou copiar scripts do PowerShell

Você pode Editar ou Copiar um script do PowerShell existente usado com o recurso Executar Scripts . Em vez de recriar um script que você precisa alterar, agora edite-o diretamente. Ambas as ações usam a mesma experiência de assistente que quando você cria um novo script. Quando você edita ou copia um script, Configuration Manager não persiste o estado de aprovação.

Dica

Não edite um script que esteja em execução ativa em clientes. Eles não terminarão de executar o script original e talvez você não obtenha os resultados pretendidos desses clientes.

Editar um script

  1. Acesse o nó Scripts no workspace biblioteca de software .
  2. Selecione o script a ser editado e clique em Editar na faixa de opções.
  3. Altere ou reimporte seu script na página Detalhes do Script .
  4. Clique em Avançar para exibir o Resumo e feche quando terminar de editar.

Copiar um script

  1. Acesse o nó Scripts no workspace biblioteca de software .
  2. Selecione o script a ser copiado e clique em Copiar na faixa de opções.
  3. Renomeie o script no campo Nome do script e faça as edições adicionais necessárias.
  4. Clique em Avançar para exibir o Resumo e feche quando terminar de editar.

Executar um script

Depois que um script for aprovado, ele pode ser executado em um único dispositivo ou uma coleção. Depois que a execução do script começa, ele é iniciado rapidamente por meio de um sistema de alta prioridade que acaba em uma hora. Os resultados do script são retornados usando um sistema de mensagens de estado.

Para selecionar uma coleção de destinos para o script:

  1. No console Configuration Manager, clique em Ativos e Conformidade.
  2. No workspace Ativos e Conformidade, clique em Coleções de Dispositivos.
  3. Na lista Coleções de Dispositivos , clique na coleção de dispositivos em que você deseja executar o script.
  4. Selecione uma coleção de sua escolha, clique em Executar Script.
  5. Na página Script do assistente Executar Script , escolha um script na lista. Somente scripts aprovados são mostrados.
  6. Clique em Avançar e conclua o assistente.

Importante

Se um script não for executado, por exemplo, porque um dispositivo de destino está desativado durante o período de uma hora, você deverá executá-lo novamente.

Agendar o runtime dos scripts

A partir de Configuration Manager branch atual versão 2309, agora você pode agendar o runtime dos scripts em UTC.

Agendar a execução de script em uma coleção:

  1. No console Configuration Manager, clique em Ativos e Conformidade.

  2. No workspace Ativos e Conformidade, clique em Coleções de Dispositivos.

  3. Na lista Coleções de Dispositivos , clique na coleção de dispositivos em que você deseja agendar o script.

  4. Selecione uma coleção de sua escolha, clique em Executar Script.

  5. Na página Agendamento, Agende o script a ser executado na caixa de seleção e especifique a Hora de Agendamento em UTC.

  6. Verifique os detalhes exibidos na página de resumo.

  7. Clique em Avançar e conclua o assistente.

    Captura de tela do script – agendamento.

Observação

Um máximo de vinte e cinco scripts agendados serão procedidos em cada 5 minutos.

Execução do computador de destino

O script é executado como a conta do sistema ou do computador nos clientes de destino. Essa conta tem acesso limitado à rede. Qualquer acesso a sistemas remotos e locais pelo script deve ser provisionado de acordo.

Monitoramento de script

Depois de iniciar a execução de um script em uma coleção de dispositivos, use o procedimento a seguir para monitorar a operação. Você é capaz de monitorar um script em tempo real à medida que ele é executado e, posteriormente, retornar ao status e resultados para uma determinada execução de Script de Execução. Os dados de status de script são limpos como parte da tarefa de manutenção ou exclusão de operações de cliente envelhecidas de exclusão do script.

Monitor de script – Status de Execução de Script

  1. No console Configuration Manager, clique em Monitoramento.

  2. No workspace Monitoramento , clique em Status do Script.

  3. Na lista Status do Script , você exibe os resultados de cada script executado em dispositivos cliente. Um código de saída de script de 0 geralmente indica que o script foi executado com êxito.

    Monitor de script – Script truncado

Agendar monitoramento de script em uma coleção

  1. No console Configuration Manager, clique em Monitoramento.

  2. No workspace Monitoramento, clique em Nó Scripts Agendados.

  3. Uma nova linha será exibida na lista de Scripts Agendados.

  4. Verifique se uma nova linha foi exibida na lista de Scripts Agendados. A coluna de estado deve ter o valor Agendado. A coluna ClientOperationId deve estar em branco. Verifique se as outras colunas como Nome do Script, Hora de Agendamento etc. têm valores apropriados.

  5. Após o Tempo de Agendamento, atualize o nó Scripts Agendados . A coluna de estado deve ter o valor operação de cliente iniciada com êxito. A coluna ClientOperationId deve ter um valor inteiro.

  6. No workspace Monitoramento, clique no nó Status do Script. Verifique se a nova linha foi exibida na lista e o ClientOperationId é igual ao ClientOperationId do nó Scripts Agendados .

  7. Clique em Exibir Status e verifique se a saída do script é exibida.

    Captura de tela do script – monitoramento de agendamento,

Saída de script

A saída de script de retorno do cliente usando a formatação JSON canalizando os resultados do script para o cmdlet ConvertTo-Json . O formato JSON retorna consistentemente a saída de script legível. Para scripts que não retornam objetos como saída, o cmdlet ConvertTo-Json converte a saída em uma cadeia de caracteres simples que o cliente retorna em vez de JSON.

  • Scripts que obtêm um resultado desconhecido ou onde o cliente estava offline não serão exibidos nos gráficos ou no conjunto de dados.

  • Evite retornar uma saída de script grande, pois ela é truncada para 4 KB.

  • Converta um objeto de enumeração em um valor de cadeia de caracteres em scripts para que eles sejam exibidos corretamente na formatação JSON.

    Converter objeto enum em um valor de picada

Você pode exibir a saída de script detalhada no formato JSON bruto ou estruturado. Essa formatação facilita a leitura e a análise da saída. Se o script retornar texto formatado por JSON válido ou a saída puder ser convertida em JSON usando o cmdlet ConvertTo-Json PowerShell, exiba a saída detalhada como Saída JSON ou Saída Bruta. Caso contrário, a única opção é Saída de Script.

Exemplo: a saída de script é conversível para JSON válido

Comando: $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      16299  551

Exemplo: a saída de script não é válida JSON

Comando: Write-Output (Get-WmiObject -Class Win32_OperatingSystem).Caption

Microsoft Windows 10 Enterprise

Arquivos de log

  • No cliente, por padrão em C:\Windows\CCM\logs:

    • Scripts.log
    • CcmMessaging.log
  • No MP, por padrão em C:\SMS_CCM\Logs:

    • MP_RelayMsgMgr.log
  • No servidor do site, por padrão em C:\Program Files\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Automatizar com Windows PowerShell

Você pode usar os seguintes cmdlets do PowerShell para automatizar algumas dessas tarefas:

Confira também