Порядок объединения Powershell с функциональными переменными и литералами - PullRequest
2 голосов
/ 18 февраля 2011

Я не уверен, полностью ли я злюсь или что-то упустил, но я пытаюсь сделать что-то очень простое, а именно разделить загрузку переменных в функции и записать их.

"Легко" говорите? Я бы так и подумал. Но вот небольшой отрывок из моих попыток написать функцию Powehell, чтобы сделать остальную часть моего кода немного проще для глаз.

$logtoFile=$false
function logEntry($entryType, $section, $message)
{

    #The way I assumed woudl work
    $logString1 = $(get-Date -format "yyyy-MM-dd hh:mm:ss") + "|" + $entryType + "|" + $section + "|" + $message
    #Another way which should also work
    $logString2 = "$(get-Date -format "yyyy-MM-dd hh:mm:ss")|$entryType|$section|$message"
    #Proof that it is not the pipes causing issues
    $logString3 = "$(get-Date -format "yyyy-MM-dd hh:mm:ss"),$entryType,$section,$message"
    #another method I found. Not sure what the issue is there
    $logString4 = $(get-Date -format "yyyy-MM-dd hh:mm:ss"), $entryType, $section, $message -join "|"
    $WhatIwant = $(get-Date -format "yyyy-MM-dd hh:mm:ss") + "|0|moonin|plimsole"

    if($script:logtoFile)
    {
        Add-Content $logFile $logString
    }
    else
    {
        write-host $logString1
        write-host $logString2
        write-host $logString3
        write-host $logString4
        write-host $whatIwant
    }
}
logEntry(0,"moomin","plimsole")

Выход:

2011-02-17 11:22:59|System.Object[]||
2011-02-17 11:22:59|0 moomin plimsole||
2011-02-17 11:22:59,0 moomin plimsole,,
2011-02-17 11:22:59|0 moomin plimsole||
2011-02-17 11:22:59|0|moonin|plimsole

Осматривая, я нашел несколько альтернатив, ни одна из которых, похоже, не дает правильных результатов. Я не уверен, что в целом означает "смешать все переменные вместе, разделенные пробелом".

Ответы [ 2 ]

3 голосов
/ 18 февраля 2011

Вы вызываете функцию неправильно.Вы помещаете 0, mommin и plimsole в первую переменную, и ничего для второй и третьей переменных.Следовательно, вывод, который вы получаете.

Вместо того, чтобы вызывать такую ​​функцию

logEntry(0,"moomin","plimsole")

Вам нужно вызывать такую ​​функцию

logEntry 0 "moomin" "plimsole"
1 голос
/ 18 февраля 2011

Классическое недоразумение PowerShell. Вы вызываете функции так же, как вы вызываете командлеты - аргументы, разделенные пробелом, а не разделенные запятой, например ::1001*

logEntry 0 moomin plimsole
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...