Forum Discussion

Farhad_Ostovar's avatar
Farhad_Ostovar
Copper Contributor
Jun 22, 2021

Exporting Powershell output

Hello -

I am having lots of trouble exporting out the output when running the below script. I have tried different export commands but none seem to be working. Can someone please let me know if they know a way to export the output to CSV?

 

  1. #Change this to the number of days out you want to look
  2. $daysOut = 90
  3. #Main Script#
  4. $doneID = ""
  5. $countExpiring = 0
  6. $allSAMLApps = Get-AzureADServicePrincipal -All $true
  7. Write-Host "Looking for certs that expire by "((Get-Date).AddDays($daysOut)) -ForegroundColor Green
  8. foreach ($singleApp in $allSAMLApps) {
  9. foreach ($KeyCredential in $singleApp.KeyCredentials) {
  10. if ( $KeyCredential.EndDate -lt (Get-Date).AddDays($daysOut) ) {
  11. if (($singleApp.ObjectId) -ne $doneID) {
  12. Write-Host " Name: " ($singleApp.DisplayName) " - Experation: " $KeyCredential.EndDate
  13. $doneID = ($singleApp.ObjectId)
  14. $countExpiring = $countExpiring + 1
  15. }
  16. }
  17. }
  18. }
  19. Write-Host "There are $countExpiring certs." -ForegroundColor Green
  • yuzoyox's avatar
    yuzoyox
    Iron Contributor
    Hi Farhad
    If the last line is printing correctly but not generating the file, try add pipeline and put it in .csv

    Write-Host "There are $countExpiring certs." -ForegroundColor Green | Export-CSV c:\folderpath\output.csv -NoTypeInformation
    • Farhad_Ostovar2265's avatar
      Farhad_Ostovar2265
      Copper Contributor
      Thanks for the response. I tried running that but the CSV generated is blank. I used the below script.


      #Change this to the number of days out you want to look
      $daysOut = 5000


      #Main Script#
      $doneID = ""
      $countExpiring = 0

      $allSAMLApps = Get-AzureADServicePrincipal -All $true

      Write-Host "Looking for certs that expire by "((Get-Date).AddDays($daysOut)) -ForegroundColor Green
      foreach ($singleApp in $allSAMLApps) {

      foreach ($KeyCredential in $singleApp.KeyCredentials) {

      if ( $KeyCredential.EndDate -lt (Get-Date).AddDays($daysOut) ) {
      if (($singleApp.ObjectId) -ne $doneID) {
      Write-Host " Name: " ($singleApp.DisplayName) " - Experation: " $KeyCredential.EndDate
      $doneID = ($singleApp.ObjectId)
      $countExpiring = $countExpiring + 1
      }
      }

      }

      }
      Write-Host "There are $countExpiring certs." -ForegroundColor Green | Export-CSV c:\temp\report.csv -NoTypeInformation
      • yuzoyox's avatar
        yuzoyox
        Iron Contributor
        lets try with cmd command:

        #Change this to the number of days out you want to look
        $daysOut = 5000


        #Main Script#
        $doneID = ""
        $countExpiring = 0

        $allSAMLApps = Get-AzureADServicePrincipal -All $true

        Write-Host "Looking for certs that expire by "((Get-Date).AddDays($daysOut)) -ForegroundColor Green
        foreach ($singleApp in $allSAMLApps) {

        foreach ($KeyCredential in $singleApp.KeyCredentials) {

        if ( $KeyCredential.EndDate -lt (Get-Date).AddDays($daysOut) ) {
        if (($singleApp.ObjectId) -ne $doneID) {
        Write-Host " Name: " ($singleApp.DisplayName) " - Experation: " $KeyCredential.EndDate
        $doneID = ($singleApp.ObjectId)
        $countExpiring = $countExpiring + 1
        }
        }

        }

        }
        Write-Host "There are $countExpiring certs." -ForegroundColor Green >> c:\temp\report.csv

Resources