csv export mantém sobrescrita

0

Estou tendo problemas com o script que se sobrescreve e não mantém os valores. A única coisa exportada para o CSV é a lista de usuários ativos no último servidor, em vez de todos os usuários e servidores juntos.

Obrigado!

O que esse script faz: Ele filtra os usuários que estão ativos há mais de 60 minutos ou estão desconectados. Para o script de desconexão, usei um script de código-fonte aberto simples de um colaborador da MS, encontrado aqui . Eu adicionei o código completo com todas as funções do meu githubista: link

$Servers = Get-Content 'H:\demo\computernames.txt'
$openservers =@()
foreach ($Server in $Servers)
{
    if (-not( Test-Connection $Server -Count 1 -Quiet )) { continue }

    if (-not( Convert-QueryToObjects $Server -ErrorAction SilentlyContinue))
    {

     $openservers += $server
     $openservers | Out-File 'H:\demo\session\openservers.txt'
 }

    else
    {  
      Convert-QueryToObjects -Name $Server |Where-Object{ {@('Disconnected','Active') -contains $_.SessionState} | Select-Object {@{Name='Server Name';Expression={$_.ComputerName}},
        @{Name='Username'; Expression={$_.Username}}, @{Name='Session State'; Expression={$_.SessionState}}, @{Name='Idle Time'; Expression={$_.IdleTime}}, 
        @{Name='ID'; Expression={$_.ID}} }}| Export-Csv 'H:\demo\session\run11.csv' -NoTypeInformation -Force


    Import-Csv 'H:\demo\session\run11.csv' | Where-Object { ($_.SessionState -eq 'Disconnected') -or (($_.IdleTime -like "*:*") -and ($_.IdleTime -gt "00:59"))} |
    ForEach-Object {
        Disconnect-LoggedOnUser -ComputerName $_.ComputerName -Id $_.ID -Verbose 
    }

   }

   } 
    
por russell 11.07.2017 / 19:56

1 resposta

0

Acho que o que você quer é anexar ao arquivo atual, atualmente ele substitui o arquivo toda vez.

Para acrescentar: Export-Csv 'H:\demo\session\run11.csv' -NoTypeInformation -Force -append

Se você precisar que os dados sejam exclusivos toda vez que o script for executado, você poderá limpar o conteúdo do arquivo, se ele existir. Então, no começo do seu script, algo assim.

if (Test-Path 'C:\users\map.txt')
{
    Clear-Content 'C:\users\map.txt'
}
    
por 11.07.2017 / 20:34