Taakplanner en TXT file outputs

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • erwin26
  • Registratie: Januari 2015
  • Laatst online: 29-04 13:15
Mijn vraag
Is het mogelijk om een TXT file via taakplanner aan te maken met waardes X die er volledig in de TXT file staat?

Relevante software en hardware die ik gebruik
Server 2019, Taakplanner, Powershell, TXT file

Wat ik al gevonden of geprobeerd heb

Momenteel draai ik een script die controleert hoeveel gebruikers de afgelopen 30 dagen verwijderd zijn, disabled zijn en of aangemaakt zijn. Dit script maakt een TXT file hiervan en alle data staat erop. Echter als ik dit script draai via taakplanner, dan is mijn TXT file ingekort en mis ik heel veel tekst. Ik heb geprobeerd via bat file te draaien via taakplanner, maar geen effect.

Handmatig script draaien gaat dus goed, maar taakplanner niet.

Iemand een idee hoe je TXT file volledig krijgt via taakplanner?

Alle reacties


Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

erwin26 schreef op dinsdag 11 april 2023 @ 10:54:
Mijn vraag
Is het mogelijk om een TXT file via taakplanner aan te maken met waardes X die er volledig in de TXT file staat?

Relevante software en hardware die ik gebruik
Server 2019, Taakplanner, Powershell, TXT file

Wat ik al gevonden of geprobeerd heb

Momenteel draai ik een script die controleert hoeveel gebruikers de afgelopen 30 dagen verwijderd zijn, disabled zijn en of aangemaakt zijn. Dit script maakt een TXT file hiervan en alle data staat erop. Echter als ik dit script draai via taakplanner, dan is mijn TXT file ingekort en mis ik heel veel tekst. Ik heb geprobeerd via bat file te draaien via taakplanner, maar geen effect.

Handmatig script draaien gaat dus goed, maar taakplanner niet.

Iemand een idee hoe je TXT file volledig krijgt via taakplanner?
Het is wat onduidelijk wat je precies bedoelt met "ingekort" (in de lengte of breedte) maar Powershell past z'n output aan aan de instellingen van de console. Als je in taakplanner draait is die console anders dan wanneer je interactief draait. Je zult waarschijnlijk het script moeten aanpassen zodat het output geeft die onafhankelijk van de console instellingen is.

Er kunnen nog andere dingen aan de hand zijn maar als je het script niet post kunnen we daar ook niet veel over zeggen.

Acties:
  • 0 Henk 'm!

  • erwin26
  • Registratie: Januari 2015
  • Laatst online: 29-04 13:15
downtime schreef op dinsdag 11 april 2023 @ 15:04:
[...]

Het is wat onduidelijk wat je precies bedoelt met "ingekort" (in de lengte of breedte) maar Powershell past z'n output aan aan de instellingen van de console. Als je in taakplanner draait is die console anders dan wanneer je interactief draait. Je zult waarschijnlijk het script moeten aanpassen zodat het output geeft die onafhankelijk van de console instellingen is.

Er kunnen nog andere dingen aan de hand zijn maar als je het script niet post kunnen we daar ook niet veel over zeggen.
In alle opzichten wordt het ingekort. Alsof er max 60 limieten per regel mag tot 60 regels (heb ze niet specifiek geteld).

Ik ga kijken of ik de output anders kan maken, thanks voor de tip:)


Hieronder het script wat ik nu handmatig draai:


$DomainDN = "DC=test,DC=test"

# Get all OUs in the domain
$OUs = Get-ADOrganizationalUnit -Filter "ObjectClass -eq 'organizationalUnit'" -SearchBase $DomainDN -SearchScope Subtree

# Get the date 31 days ago
$Threshold = (Get-Date).AddDays(-31)

# Get disabled, deleted, and created users in the last 31 days
$DisabledUsers = Get-ADUser -Filter {Enabled -eq $false -and whenChanged -ge $Threshold} -Properties whenChanged,Enabled,Deleted,DistinguishedName | Select-Object DistinguishedName,whenChanged,Enabled,Deleted
$DeletedUsers = Get-ADObject -Filter {isDeleted -eq $True -and whenChanged -ge $Threshold -and ObjectClass -eq "user"} -IncludeDeletedObjects -Properties whenChanged,Deleted,DistinguishedName | Select-Object DistinguishedName,whenChanged,Deleted
$CreatedUsers = Get-ADUser -Filter * -Properties whenCreated,DistinguishedName | Where-Object {$_.whenCreated -ge $Threshold} | Select-Object DistinguishedName,whenCreated


# Output the results to a file
$OutputFile = "C:\scripts\ADUserReport_$(Get-Date -Format 'yyyyMMdd').txt"
Write-Host "Exporting results to file: $OutputFile"
$Report = "Disabled Users in the last 31 days:`r`n"
$Report += ($DisabledUsers | Sort-Object whenChanged | Format-Table | Out-String)
$Report += "`r`nDeleted Users in the last 31 days:`r`n"
$Report += ($DeletedUsers | Sort-Object whenChanged | Format-Table | Out-String)
$Report += "`r`nCreated Users in the last 31 days:`r`n"
$Report += ($CreatedUsers | Sort-Object whenCreated | Format-Table | Out-String)

$Date = Get-Date -Format "yyyyMMdd"

$Report | Out-File -FilePath "C:\scripts\ADUserReport_$Date.txt" -Encoding UTF8

Acties:
  • 0 Henk 'm!

  • downtime
  • Registratie: Januari 2000
  • Niet online

downtime

Everybody lies

Wat gebeurt er als je dit ervan maakt?

PowerShell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$DomainDN = "DC=test,DC=test"

# Get all OUs in the domain
$OUs = Get-ADOrganizationalUnit -Filter "ObjectClass -eq 'organizationalUnit'" -SearchBase $DomainDN -SearchScope Subtree

# Get the date 31 days ago
$Threshold = (Get-Date).AddDays(-31)

# Get disabled, deleted, and created users in the last 31 days
$DisabledUsers = Get-ADUser -Filter {Enabled -eq $false -and whenChanged -ge $Threshold} -Properties whenChanged,Enabled,Deleted,DistinguishedName | Select-Object DistinguishedName,whenChanged,Enabled,Deleted
$DeletedUsers = Get-ADObject -Filter {isDeleted -eq $True -and whenChanged -ge $Threshold -and ObjectClass -eq "user"} -IncludeDeletedObjects -Properties whenChanged,Deleted,DistinguishedName | Select-Object DistinguishedName,whenChanged,Deleted
$CreatedUsers = Get-ADUser -Filter * -Properties whenCreated,DistinguishedName | Where-Object {$_.whenCreated -ge $Threshold} | Select-Object DistinguishedName,whenCreated

# Output the results to a file
$Date = Get-Date -Format "yyyyMMdd"
$File = "C:\scripts\ADUserReport_$Date.txt"

"Disabled Users in the last 31 days:`r`n" | Out-File -FilePath $File -Width 1000
$DisabledUsers | Sort-Object whenChanged | Out-File -FilePath $File -Width 1000 -Append
"`r`nDeleted Users in the last 31 days:`r`n" | Out-File -FilePath $File -Width 1000 -Append
$DeletedUsers | Sort-Object whenChanged | Out-File -FilePath $File -Width 1000 -Append
"`r`nCreated Users in the last 31 days:`r`n" | Out-File -FilePath $File -Width 1000 -Append
$CreatedUsers | Sort-Object whenCreated | Out-File -FilePath $File -Width 1000 -Append

Acties:
  • +1 Henk 'm!

  • Metabool
  • Registratie: Februari 2023
  • Laatst online: 28-06-2023
dat dus

Sowieo niet write-host gebruiken maar Write-Output
Hoewel ik dat zelf helemaal weg zou laten.

En niet "Format-Table" etc gebruiken voor je output.
Dat is bedoeld voor dumpen van output naar de console en past zoals je merkt de output aan naar de breedte van de console.

Ik denk dat voor dit doel je beter af bent je object te exporteren naar CSV.
Waarbij je dan vooraf een selectie maakt van de eigenschappen die je wil opslaan
Bijvoorbeeld $CreatedUsers | select Name, DisplayName | Export-CSV -Path $xyz -NoClobber

Je wil niet opmaak opslaan, dus geen whitespaces zoals wel bij output naar console gewenst is
Met CSV kan je nadien de velden nog mooi scheiden en ook weer inlezen ($x = import-csv $xyz)

Acties:
  • +1 Henk 'm!

  • erwin26
  • Registratie: Januari 2015
  • Laatst online: 29-04 13:15
CSV file kreeg ik helaas niet voor elkaar met een duidelijke opmaak erin :(. Ik heb het nu omgezet naar een HTML file output en dat werkt gelukkig wel :).
Pagina: 1