Estou escrevendo um script em lote para extrair códigos de sites do SCCM de clientes do SCCM. Eu gostaria de puxar o código do site do cliente e compará-lo a uma matriz de códigos de site. Se houver uma correspondência, eu desinstalarei o cliente. Eu tenho a parte de desinstalação. Isso tem que ser feito como um arquivo em lotes.
Eu posso obter o código do site com o seguinte comando WMIC
WMIC /namespace:\root\ccm path sms_client CALL GetAssignedSite
Isso produz a seguinte saída
Executing (sms_client)->GetAssignedSite()
Method execution successful.
Out Parameters:[abstract]
class __PARAMETERS
{
[out, ID(0): DisableOverride ToInstance] string sSiteCode = "BBB";
[out] uint32 ReturnValue;
};
Como posso extrair e comparar o código do site no script em lote - "BBB" neste exemplo.
Aqui está o que eu tenho para o Powershell como exemplo, mas isso tem que ser um arquivo de lote.
$SiteCode = ([wmiclass]'ROOT\ccm:SMS_Client').GetAssignedSite()
$SCCMSiteCodes = @('AAA', 'BBB', 'CCC', 'GGG', 'VVV')
If ($SCCMSiteCodes -Contains $SiteCode.sSiteCode)
{ uninstall SCCM client }
Acabarei executando o arquivo .bat com um comando psexec em uma lista de servidores.
Obrigado pela ajuda.
Obrigado novamente, dbenham. Eu modifiquei o código ligeiramente adicionando uma segunda instrução IF.
SETLOCAL enableDelayedExpansion
SET "SCCMSiteCodes= 'AAA' 'BBB' 'CCC' 'GGG 'VVV' "
FOR /f delims^=^"^ tokens^=2^ eol^= %%A in (
'wmic /namespace:\root\ccm path sms_client CALL GetAssignedSite^|findstr sSiteCode'
) DO (
IF "!SCCMSiteCodes:'%%A'=!" neq "!SCCMSiteCodes!" (
CALL :TEE SCCM client - Sitecode match found
REM Your uninstall CALL goes here
)
IF "!SCCMSiteCodes:'%%A'=!" equ "!SCCMSiteCodes!" (
CALL :TEE SCCM client - Sitecode match not found
GOTO NOTFOUIND
)
)
Encontrei outro cenário que aciona uma desinstalação e não sei exatamente por que, uma vez que ele não contém nenhum dos sitecodes. Nesse caso, o servidor não atingiu o servidor de gerenciamento do SCCM, portanto, ele não recebeu um sitecode.
Para esses servidores, a resposta para
WMIC /namespace:\root\ccm path sms_client CALL GetAssignedSite
é
Executing (sms_client)->GetAssignedSite()
ERROR:
Description = Can't enumerate any more, because the associated data is missing
Estou pesquisando, mas ainda não encontrei uma resposta. Alguma sugestão?