Verkettungsfunktion resultiert mit String in Powershell

7
function log-file {
  param($message)
  Add-Content -path $logfile -Value "$(Get-Date) $message"
}

function ping-server {
  param($server)
  $ping = New-Object System.Net.NetworkInformation.Ping
  $ping.Send("$server")
}

log-file "Pinging server = " + (ping-server $server).status

Wie kann ich das Obige dazu bringen, mit einer Zeile zu arbeiten, anstatt dies zu tun:

$pingable = (ping-server $server).status
log-file "Pinging server = $pingable"
Pieman
quelle
Siehe auch stackoverflow.com/questions/15113413/…
Michael Freidgeim

Antworten:

6

Versuchen Sie, diese Änderung am Funktionsaufruf der Protokolldatei vorzunehmen

log-file $("Pinging server = " + (ping-server $server).status)
uSlackr
quelle
1

Es gibt viele Möglichkeiten, Zeichenfolgen in PowerShell zu verketten / zu verkleben, aber ich bevorzuge es , das Pluszeichen zu vermeiden , da seine Hauptaufgabe das Hinzufügen ist und manchmal die Dinge mit Zeichenfolgen durcheinander bringt.

Ich denke, effizienter und lesbarer ist der folgende:

log-file $("Pinging server = $((ping-server $server).status)")

Schließen Sie Ihre Funktion einfach in $ () ein und setzen Sie sie in doppelte Anführungszeichen.

Lesen Sie mehr ;

Nyagolova
quelle