2017-05-20 3 views
1

J'ai pu obtenir ce travail et les sorties à un écran, mais je veux écrire à un fichier texte ..PowerShell Invoke-RestMethod impossible d'écrire dans le fichier de sortie?

Avec l'aimable autorisation de: https://www.reddit.com/r/PowerShell/comments/3iced0/gettomcat_status/

$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition 
$result=$scriptPath+'\results.txt' 
New-Item -ItemType file $result -Force 


function Get-TomcatStatus{ 
    param(
     $tomcatserver , 
     $tomcatport = 8080, 
     $tomcatuser = "user", 
     $tomcatpassword = "pass" 
    ) 
    #Get Credentials into the right format 
    $tomcatpassword = ConvertTo-SecureString -string $tomcatpassword -asplaintext -force 
    $cred = New-object -TypeName System.Management.Automation.PSCredential -argumentlist ($tomcatuser,$tomcatpassword) 

    #Invoke the restinterface 
    $TomcatStats = Invoke-RestMethod -Uri http://$tomcatserver`:$tomcatport/manager/status?XML=true -Credential $cred 

    $threads = $TomcatStats.GetElementsByTagName("threadInfo") | ? {$_.currentThreadCount -ne 0} 

    $Memory = $TomcatStats.GetElementsByTagName("memory") 

    $requestInfo = $TomcatStats.GetElementsByTagName("requestInfo") | ? {$_.bytessent -ne 0} 

    #Populate output object 
    $Output = New-object PsObject 
    $output | add-member -type noteproperty -name "Server" -Value $tomcatserver 
    Add-Content $result "Server $tomcatserver" 
    #Memory 
    $output | add-member -type noteproperty -name "Memory_Used" -Value $memory.total 
    Add-Content $result 'Memory_Used'+ $memory.total 
    $output | add-member -type noteproperty -name "Memory_free" -Value $memory.free 
    #Add-Content $result 'Memory_free '+$memory.free 
    $output | add-member -type noteproperty -name "Memory_Max" -Value $memory.max 
    #Add-Content $result 'Memory_Max '+$memory.max 
    #threads 
    $output | add-member -type noteproperty -name "Current_Threads_busy" -Value $threads.currentThreadsBusy 
    #Add-Content $result 'Current_Threads_busy '+$threads.currentThreadsBusy 
    $output | add-member -type noteproperty -name "Current_Thread_Count" -Value $threads.currentThreadCount 
    #Add-Content $result 'Current_Thread_Count '+$threads.currentThreadCount 
    $output | add-member -type noteproperty -name "Max_Threads" -Value $threads.MaxThreads 
    #Add-Content $result 'Max_Threads '+$threads.MaxThreads 
    #requestInfo 
    $output | add-member -type noteproperty -name "Request_Max_ProcessingTime_ms" -Value $requestInfo.maxTime 
    #Add-Content $result 'Request_Max_ProcessingTime_ms '+$requestInfo.maxTime 
    $output | add-member -type noteproperty -name "Request_Count" -Value $requestInfo.requestcount 
    #Add-Content $result 'Request_Count '+$requestInfo.requestcount 
    $output | add-member -type noteproperty -name "ProcessingTime_total_s" -Value $requestInfo.processingTime 
    #Add-Content $result 'ProcessingTime_total_s '+$requestInfo.processingTime 

    Return $output 
} 

Get-TomcatStatus SERVER1 
Get-TomcatStatus SERVER2 
Get-TomcatStatus SERVER3 
Get-TomcatStatus SERVER4 
Get-TomcatStatus SERVER5 
Get-TomcatStatus SERVER6 

La question que je suis en train de faire fonctionner est que je peux écrire sur le fichier de sortie de la ligne suivante, très bien:

Add-Content $result "Server $tomcatserver" 

Mais, wrting entiers dans le fichier de sortie ne fonctionne pas:

Add-Content $result Memory_Used [string]$memory.total 

Ce que je devrais voir quelque chose comme:

Server      : SERVER1 
Memory_Used     : 1948254208 
Memory_free     : 820702992 
Memory_Max     : 1948254208 
Current_Threads_busy   : 1 
Current_Thread_Count   : 27 
Max_Threads     : 150 
Request_Max_ProcessingTime_ms : 156454 
Request_Count     : 669515 
ProcessingTime_total_s  : 88929596 

Merci!

+0

Quel est le problème avec votre code? Astuce: vous devriez utiliser '$ result = Join-Path $ scriptPath 'results.txt''. – sodawillow

+0

Il semble fonctionner correctement avec les chaînes d'écriture, mais ne peut pas écrire des entiers dans le fichier journal, par exemple: 'Add-Content $ result 'Memory_Used' + $ memory.total' – Leptonator

+0

Pouvez-vous inclure dans votre Q la sortie courante que vous obtenez? le fichier? – sodawillow

Répondre

0

Soit utiliser

Add-Content $result ("Memory_Used: " + $memory.total) 

ou

Add-Content $result "Memory_Used: $($memory.total)"