Compartilhar via


Criar e executar scripts do PowerShell a partir da consola do Configuration Manager

Aplica-se a: Configuration Manager (branch atual)

O Configuration Manager tem uma capacidade integrada de executar scripts do PowerShell. O PowerShell tem a vantagem de criar scripts sofisticados e automatizados que são compreendidos e partilhados com uma comunidade maior. Os scripts simplificam a criação de ferramentas personalizadas para administrar software e permitem-lhe realizar tarefas mundanas rapidamente, permitindo-lhe realizar trabalhos grandes de forma mais fácil e consistente.

Observação

Na versão 2006 e anterior, o Configuration Manager não ativa esta funcionalidade opcional por predefinição. Tem de ativar esta funcionalidade antes de a utilizar. Para obter mais informações, consulte Ativar funcionalidades opcionais a partir de atualizações.

Com esta integração no Configuration Manager, pode utilizar a funcionalidade Executar Scripts para efetuar as seguintes ações:

  • Criar e editar scripts para utilização com o Configuration Manager.
  • Gerir a utilização de scripts através de funções e âmbitos de segurança.
  • Suporte de pastas para scripts.
  • Execute scripts em coleções ou PCs Windows geridos no local individuais.
  • Agende o runtime dos scripts em UTC em coleções ou PCs Windows geridos no local individuais.
  • Obtenha resultados rápidos de scripts agregados a partir de dispositivos cliente.
  • Monitorize a execução de scripts e veja os resultados dos relatórios a partir da saída do script.

Aviso

  • Tendo em conta o poder dos scripts, lembramos-lhe que tem de ser intencional e cuidadoso com a utilização dos mesmos. Criámos salvaguardas adicionais para o ajudar; funções e âmbitos segregados. Certifique-se de que valida a precisão dos scripts antes de os executar e confirme que são de uma origem fidedigna, para impedir a execução não intencional de scripts. Tenha em atenção os carateres expandidos ou outra obfuscação e informe-se sobre como proteger scripts. Saiba mais sobre a segurança do script do PowerShell
  • Determinado software antimalware pode inadvertidamente acionar eventos contra os Scripts de Execução do Configuration Manager ou as funcionalidades CMPivot. Recomenda-se excluir %windir%\CCM\ScriptStore para que o software antimalware permita que essas funcionalidades funcionem sem interferências.

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 funcionalidades de uma versão posterior do PowerShell, o cliente no qual executa o script tem de estar a executar essa versão do PowerShell.
  • Os clientes do Configuration Manager têm de executar 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 – a sua conta tem de ter permissões de Criação para Scripts de SMS.
  • Para aprovar ou negar scripts – a sua conta tem de ter permissões de Aprovação para Scripts de SMS.
  • Para executar scripts – a sua conta tem de ter permissões de Run Script para Coleções.

Para obter mais informações sobre as funções de segurança do Configuration Manager:
Âmbitos de segurança para executar scripts
Funções de segurança para executar scriptsNoções básicas
da administração baseada em funções.

Limitações

Executar Scripts suporta atualmente:

  • Linguagens de scripting: PowerShell
  • Tipos de parâmetros: número inteiro, cadeia e lista.

Aviso

Tenha em atenção que, ao utilizar parâmetros, abre uma área de superfície para potenciais riscos de ataque de injeção do PowerShell. Existem várias formas de mitigar e contornar, como utilizar expressões regulares para validar a entrada de parâmetros ou utilizar parâmetros predefinidos. A melhor prática comum é não incluir segredos nos scripts do PowerShell (sem palavras-passe, etc.). Saiba mais sobre a segurança de scripts do PowerShell

Executar autores e aprovadores de scripts

Executar Scripts utiliza o conceito de autores de scripts e aprovadores de scripts como funções separadas para implementação e execução de um script. Ter as funções de autor e aprovador separadas permite uma verificação de processo importante para a ferramenta avançada que é Executar Scripts. Existe 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. Veja Criar funções de segurança para scripts.

Controlo de funções de scripts

Por predefinição, os utilizadores não podem aprovar um script que tenham criado. Uma vez que os scripts são poderosos, versáteis e potencialmente implementados em muitos dispositivos, pode separar as funções entre a pessoa que cria o script e a pessoa que aprova o script. Estas funções proporcionam um nível adicional de segurança contra a execução de um script sem supervisão. Pode desativar a aprovação secundária, para facilitar os testes.

Aprovar ou Negar um script

Os scripts têm de ser aprovados pela função de aprovador de scripts antes de poderem ser executados. Para aprovar um script:

  1. Na consola do Configuration Manager, clique em Biblioteca de Software.
  2. Na área de trabalho Biblioteca de Software , clique em Scripts.
  3. Na lista Script , selecione o script que pretende aprovar ou negar e, em seguida, no separador Base , 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, introduza um comentário sobre a sua decisão. Se negar um script, este não pode ser executado em dispositivos cliente.
    Script - Aprovação
  5. Conclua o assistente. Na lista Script , verá a coluna Estado de Aprovação a ser alterada consoante a ação que tomou.

Permitir que os utilizadores aprovem os seus próprios scripts

Esta aprovação é utilizada principalmente para a fase de teste do desenvolvimento de scripts.

  1. Na consola do Configuration Manager, clique em Administração.
  2. Na área de trabalho Administração , expanda Configuração do Site e, em seguida, clique em Sites.
  3. Na lista de sites, selecione o seu site e, em seguida, no separador Base , no grupo Sites , clique em Definições da Hierarquia.
  4. No separador Geral da caixa de diálogo Propriedades das Definições da Hierarquia, desmarque a caixa de verificação Os autores de scripts requerem um aprovador de script adicional.

Importante

Como melhor prática, não deve permitir que um autor de script aprove os seus próprios scripts. Só deve ser permitido numa definição de laboratório. Considere cuidadosamente o impacto potencial da alteração desta definição num ambiente de produção.

Âmbitos de segurança

Executar Scripts utiliza âmbitos de segurança, uma funcionalidade existente do Configuration Manager, para controlar a criação e execução de scripts através da atribuição de etiquetas que representam grupos de utilizadores. Para obter mais informações sobre como utilizar âmbitos de segurança, veja Configurar a administração baseada em funções para o Configuration Manager.

Criar funções de segurança para scripts

As três funções de segurança utilizadas para executar scripts não são criadas por predefinição no Configuration Manager. Para criar as funções de scripts, autores de scripts e aprovadores de scripts, siga os passos descritos.

  1. Na consola do Configuration Manager, aceda aFunções de Segurança de Administração>>
  2. Clique com o botão direito do rato numa função e clique em Copiar. A função que copiar já tem permissões atribuídas. Certifique-se de que aceita apenas as permissões pretendidas.
  3. Atribua um Nome e uma Descrição à função personalizada.
  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: estas permissões permitem que esta função execute apenas scripts que foram criados e aprovados anteriormente por outras funções.
  • Permissões: Certifique-se de que 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 Scripts

  • Descrição: estas permissões permitem que esta função crie scripts, mas não podem aprová-los ou executá-los.
  • Permissões: certifique-se de que 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 Scripts

  • Descrição: estas permissões permitem que esta função aprove scripts, mas não podem criá-los ou executá-los.
  • Permissões: Certifique-se de que as seguintes permissões 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 de SMS para a função de autores de scripts

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

Suporte de pastas para scripts

A partir da versão 2403, pode organizar scripts com pastas. Esta alteração permite uma melhor categorização e gestão de scripts.

Abra a consola do Configuration Manager e aceda à área de trabalho Biblioteca de Software. No friso ou no menu de contexto, nos Scripts, selecione uma das seguintes opções:

  • Criar pasta
  • Eliminar Pasta
  • Mudar o Nome da Pasta
  • Mover Pastas
  • Definir Âmbitos de Segurança

Criar um script

  1. Na consola do Configuration Manager, clique em Biblioteca de Software.
  2. Na área de trabalho Biblioteca de Software , clique em Scripts.
  3. No separador Base , no grupo Criar , clique em Criar Script.
  4. Na página Script do assistente Criar Script , configure as seguintes definições:
    • Nome do Script – introduza um nome para o script. Embora possa criar vários scripts com o mesmo nome, utilizar nomes duplicados torna mais difícil encontrar o script de que precisa na consola do Configuration Manager.
    • Linguagem de script – atualmente, apenas são suportados scripts do PowerShell.
    • Importar – importe um script do PowerShell para a consola do . O script é apresentado no campo Script .
    • Limpar – remove o script atual do campo Script.
    • Script – apresenta o script atualmente importado. Pode editar o script neste campo conforme necessário.
  5. Conclua o assistente. O novo script é apresentado na lista Script com o estado A aguardar aprovação. Antes de poder executar este script em dispositivos cliente, tem de aprová-lo.

Importante

Evite o scripting de um reinício do dispositivo ou um reinício do agente do Configuration Manager ao utilizar a funcionalidade Executar Scripts. Fazê-lo pode levar a um estado de reinício contínuo. Se necessário, existem melhorias na funcionalidade de notificação de cliente que permitem reiniciar dispositivos. A coluna de reinício pendente pode ajudar a identificar os dispositivos que precisam de ser reiniciados.

Parâmetros de script

Adicionar parâmetros a um script proporciona maior flexibilidade para o seu trabalho. Pode incluir até 10 parâmetros. O seguinte descreve a capacidade atual da funcionalidade Executar Scripts com parâmetros de script para; Cadeia, Tipos de dados inteiros . Também estão disponíveis listas de valores predefinidos. Se o script tiver tipos de dados não suportados, receberá um aviso.

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

Cada um dos parâmetros do script tem a sua própria caixa de diálogo para adicionar mais detalhes e validação. Se existir um parâmetro predefinido no script, este será enumerado na IU do parâmetro e poderá defini-lo. O Configuration Manager não substituirá o valor predefinido, uma vez que nunca modificará o script diretamente. Pode considerar que os "valores sugeridos pré-preenchidos" são fornecidos na IU, mas o Configuration Manager não fornece acesso a valores "predefinidos" no tempo de execução. Isto pode ser resolvido ao editar o script para ter as predefinições corretas.

Importante

Os valores dos parâmetros não podem conter uma plica.

Existe um problema conhecido em que os valores de parâmetros que incluem ou estão entre plicas não são transmitidos corretamente para o script. Ao especificar valores de parâmetros predefinidos que contenham um espaço dentro de um script, utilize aspas duplas. Ao especificar valores de parâmetros predefinidos durante a criação ou execução de um Script, não é necessário rodear o valor predefinido entre aspas duplas ou simples, independentemente de o valor conter ou não um espaço.

Validação de parâmetros

Cada parâmetro no script tem uma caixa de diálogo Propriedades do Parâmetro de Script para adicionar validação para esse parâmetro. Depois de adicionar a validação, deverá obter erros se estiver a introduzir um valor para um parâmetro que não cumpra a validação.

Exemplo: NomePróprio

Neste exemplo, pode definir as propriedades do parâmetro de cadeia, FirstName.

Parâmetros de script - cadeia

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

  • Comprimento Mínimo - número mínimo de carateres do campo NomePróprio .
  • Comprimento Máximo – número máximo de carateres do campo NomePróprio
  • RegEx - abreviatura de Expressão Regular. Para obter mais informações sobre como utilizar a Expressão Regular, consulte a secção seguinte, Utilizar a validação de Expressão Regular.
  • Erro Personalizado – útil para adicionar a sua própria mensagem de erro personalizada que substitui todas as mensagens de erro de validação do sistema.

Utilizar a validação de Expressão Regular

Uma expressão regular é uma forma compacta de programação para verificar uma cadeia de carateres numa validação codificada. Por exemplo, pode verificar a ausência de um caráter alfabético maiúsculo no campo NomePróprio ao colocar [^A-Z] no campo RegEx .

O processamento regular de expressões para esta caixa de diálogo é suportado pelo .NET Framework. Para obter orientações sobre como utilizar expressões regulares, veja Expressão Regular de .NET e Linguagem de Expressão Regular.

Exemplos de scripts

Eis alguns exemplos que ilustram os scripts que poderá querer utilizar com esta capacidade.

Criar uma nova pasta e um ficheiro

Este script cria uma nova pasta e um ficheiro na 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 SO

Este script utiliza a WMI para consultar a máquina para a versão do SO.

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

Editar ou copiar scripts do PowerShell

Pode Editar ou Copiar um script do PowerShell existente utilizado com a funcionalidade Executar Scripts . Em vez de recriar um script que precisa de alterar, edite-o diretamente. Ambas as ações utilizam a mesma experiência de assistente que quando cria um novo script. Quando edita ou copia um script, o Configuration Manager não mantém o estado de aprovação.

Dica

Não edite um script que esteja a ser executado ativamente em clientes. Não irão concluir a execução do script original e poderá não obter os resultados pretendidos destes clientes.

Editar um script

  1. Aceda ao nó Scripts na área de trabalho Biblioteca de Software .
  2. Selecione o script a editar e, em seguida, clique em Editar no friso.
  3. Altere ou reimporte o script na página Detalhes do Script .
  4. Clique em Seguinte para ver o Resumo e, em seguida , fechar quando terminar de editar.

Copiar um script

  1. Aceda ao nó Scripts na área de trabalho Biblioteca de Software .
  2. Selecione o script a copiar e, em seguida, clique em Copiar no friso.
  3. Mude o nome do script no campo Nome do script e faça as edições adicionais de que possa precisar.
  4. Clique em Seguinte para ver o Resumo e, em seguida , fechar quando terminar de editar.

Executar um script

Depois de um script ser aprovado, pode ser executado num único dispositivo ou numa coleção. Assim que a execução do script começar, é iniciada rapidamente através de um sistema de alta prioridade que excede o limite de tempo em uma hora. Os resultados do script são devolvidos com um sistema de mensagens de estado.

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

  1. Na consola do Configuration Manager, clique em Ativos e Compatibilidade.
  2. Na área de trabalho Ativos e Compatibilidade, clique em Coleções de Dispositivos.
  3. Na lista Coleções de Dispositivos , clique na coleção de dispositivos em que pretende executar o script.
  4. Selecione uma coleção à sua escolha e clique em Executar Script.
  5. Na página Script do assistente Executar Script , selecione um script na lista. Só são apresentados scripts aprovados.
  6. Clique em Seguinte e, em seguida, 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 tempo de uma hora, tem de executá-lo novamente.

Agendar o runtime dos scripts

A partir da versão atual do ramo 2309 do Configuration Manager, agora pode agendar o runtime dos scripts em UTC.

Agendar a execução de scripts numa coleção:

  1. Na consola do Configuration Manager, clique em Ativos e Compatibilidade.

  2. Na área de trabalho Ativos e Compatibilidade, clique em Coleções de Dispositivos.

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

  4. Selecione uma coleção à sua escolha e clique em Executar Script.

  5. Na página Agendamento, agende a caixa de verificação Agendar a execução do script na caixa de verificação e especifique a Hora da Agenda em UTC.

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

  7. Clique em Seguinte e, em seguida, conclua o assistente.

    Captura de ecrã do script - agenda.

Observação

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

Execução do computador de destino

O script é executado como a conta do sistema ou do computador nos clientes visados. Esta conta tem acesso limitado à rede. Qualquer acesso a sistemas remotos e localizações pelo script tem de ser aprovisionado em conformidade.

Monitorização de scripts

Depois de iniciar a execução de um script numa coleção de dispositivos, utilize o seguinte procedimento para monitorizar a operação. Pode monitorizar um script em tempo real à medida que este é executado e, mais tarde, regressar ao estado e aos resultados de uma determinada execução do Script de Execução. Os dados de estado do script são limpos como parte da tarefa de manutenção ou eliminação do script Eliminar Operações de Cliente Desatuais .

Monitor de scripts - Estado da Execução de Scripts

  1. Na consola do Configuration Manager, clique em Monitorização.

  2. Na área de trabalho Monitorização , clique em Estado do Script.

  3. Na lista Estado do Script , pode ver os resultados de cada script que executou em dispositivos cliente. Geralmente, um código de saída de script de 0 indica que o script foi executado com êxito.

    Monitor de scripts - Script Truncado

Agendar monitorização de scripts numa coleção

  1. Na consola do Configuration Manager, clique em Monitorização.

  2. Na área de trabalho Monitorização, clique no nó Scripts Agendados.

  3. Será apresentada uma nova linha na lista de Scripts Agendados.

  4. Verifique se foi apresentada uma nova linha 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 Agenda, etc. têm valores adequados.

  5. Após a Hora da Agenda, 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. Na área de trabalho Monitorização, clique no nó Estado do Script. Verifique se a nova linha foi apresentada na lista e o ClientOperationId é igual ao ClientOperationId do nó Scripts Agendados .

  7. Clique em Ver Estado e certifique-se de que a saída do script é apresentada.

    Captura de ecrã do script – agendar a monitorização,

Saída do script

A saída do script de retorno do cliente com a formatação JSON encaminha os resultados do script para o cmdlet ConvertTo-Json . O formato JSON devolve consistentemente a saída de script legível. Para scripts que não devolvem objetos como saída, o cmdlet ConvertTo-Json converte o resultado numa cadeia simples que o cliente devolve em vez de JSON.

  • Os scripts que obtêm um resultado desconhecido ou em que o cliente estava offline não serão apresentados nos gráficos ou conjuntos de dados.

  • Evite devolver uma saída de script grande, uma vez que está truncada para 4 KB.

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

    Converter objeto de enumeração num valor de picada

Pode ver a saída detalhada do script no formato JSON não processado ou estruturado. Esta formatação torna a saída mais fácil de ler e analisar. Se o script devolver texto com formato JSON válido ou a saída puder ser convertida em JSON com o cmdlet ConvertTo-Json do PowerShell, veja a saída detalhada como Saída JSON ou Saída Não Processada. Caso contrário, a única opção é Saída de Script.

Exemplo: a saída do script é convertível para JSON válido

Comando: $PSVersionTable.PSVersion

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

Exemplo: A saída do script não é um JSON válido

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

Microsoft Windows 10 Enterprise

Arquivos de log

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

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

    • MP_RelayMsgMgr.log
  • No servidor do site, por predefinição em C:\Programas\Configuration Manager\Logs:

    • SMS_Message_Processing_Engine.log

Automatizar com o Windows PowerShell

Pode utilizar os seguintes cmdlets do PowerShell para automatizar algumas destas tarefas:

Confira também