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!
Quel est le problème avec votre code? Astuce: vous devriez utiliser '$ result = Join-Path $ scriptPath 'results.txt''. – sodawillow
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
Pouvez-vous inclure dans votre Q la sortie courante que vous obtenez? le fichier? – sodawillow