Script para criar um arquivo gravável por todas as máquinas em um domínio

0

Ainda novo no powershell, mas fui encarregado de descobrir como criar e executar um script do powershell em todas as estações de trabalho em nosso domínio para que ele extraia o status do Bitlocker e depois gravasse informações em um arquivo csv. Usamos o labtech como um sistema remoto, então queremos rodar o script em cada máquina, já que nosso engenheiro não quer que nada seja executado no próprio DC (originalmente iria puxar todos os nomes de estação de trabalho da UO e verificar o status em cada um deles) ). O problema é que parece que a primeira máquina a executar o script cria o arquivo e, em seguida, apropria-se efetivamente do bloqueio de todas as outras máquinas sem gravar no arquivo. Todas as sugestões para me orientar na direção certa são apreciadas. Obrigado.

$Computer = hostname
Write-Host "Getting Bitlocker Status..." -ForegroundColor Green

function ErrorLog {
    $ErrorMessage = $_.Exception.Message
    $Date = Get-Date
    $Date ERROR: "$ErrorMessage" | out-file *path* -Append 
exit
}
try
{
$Status = manage-bde C: -cn $Computer -status | Select-String "Conversion Status:", "Percentage Encrypted:", "Protection Status:", "Lock Status:"
}
catch
{
    ErrorLog

}
finally
{
    $Date = Get-Date
    "$Date Successful BitLocker Check" | out-file *path* -Append
}

Write-Host "Sending info to CSV file..." -ForegroundColor Green

try{
    $ConvStatus = $Status.line | Select-String "Conversion Status:"
    $Percentage = $Status.line | Select-String "Percentage Encrypted:"
    $LockStatus = $Status.line | Select-String "Lock Status:"
    $Object = New-Object PSObject -Property @{
        ComputerName = $Computer
        ConversionStatus = $ConvStatus.ToString().trim("Conversion Status:")
        PercentageEncrypted = $Percentage.ToString().trim("Percentage Encrypted:")
        LockStatus = $LockStatus.ToString().trim("Lock Status:")
}

    $Object | Select-Object ComputerName, ConversionStatus, PercentageEncrypted, LockStatus | Export-CSV *path* -NoTypeInformation -Append -Force
}

catch {
    ErrorLog
}
finally
{
    $Date = Get-Date
    "$Date CSV written to $Path" | out-file *path* -Append

}
    
por mwh87 25.09.2018 / 05:00

3 respostas

1

Ter todos os computadores gravados no mesmo arquivo simultaneamente não é uma boa solução. Seria muito preferível consultar o status do Bitlocker de todas as estações de trabalho de um computador central do domínio.

O comando a usar é manage-bde , usado, por exemplo, como:

manage-bde -status -computername WS12345 C:

O que pode dar esta saída:

VocêpodeescreverumscriptquereúnaasinformaçõesemumarquivoCSV.

Referências:

  • Verificação do status de criptografia de computadores Windows remotos
  • Script do PowerShell do Technet para consultar remotamente cada computador encontrado na OU especificada (usando manage-bde.exe) para determinar se a proteção do BitLocker está ativada ou desativada e reportar adequadamente na saída codificada por cores. Os resultados serão salvos em um arquivo CSV e enviados via e-mail para o (s) destinatário (s) especificado (s). Apenas altere as variáveis necessárias conforme necessário e execute.
  • Script do PowerShell do Technet para obter o Status de Criptografia do BitLocker para vários computadores.
por 25.09.2018 / 09:35
0

Você pode simplesmente fazer uma chamada para icacls para conceder acesso total a todos:

icacls myfile.csv /grant everyone:F

Observe que todos é dependente de localidade, portanto, se você não estiver usando o inglês, deverá usar outro nome.

Este é um link para um artigo que descreve como fazer isso com o Powershell caminho. É um pouco mais longo, e neste caso eu prefiro o overeliner acima. Eu modifiquei o exemplo dessa página um pouco:

$Path = 'myfile.csv'
$Acl = (Get-Item $Path).GetAccessControl('Access')
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule('Everyone', 'FullControl', 'Allow')
$Acl.SetAccessRule($Ar)
Set-Acl -path $Path -AclObject $Acl

BTW, você considerou o que acontecerá se dois PCs escreverem no arquivo simultaneamente?

    
por 25.09.2018 / 09:09
-1

Consegui convencer nosso engenheiro a fazer algumas alterações e agora estou executando com êxito meu script original por meio do nosso servidor UTIL. Obrigado pela ajuda a todos!

    
por 25.09.2018 / 22:06