2016-12-07 4 views
2

Эй, ребята, у меня возникли проблемы, выяснить, как преобразовать следующую функцию (которая требует ввода) в переменнуюPowershell формат строки с выходом из функции

function Convert-ToLetters ([parameter(Mandatory=$true,ValueFromPipeline=$true)][int] $value) { 
    $currVal = $value; 
    $returnVal = ''; 
    while ($currVal -ge 26) { 
     $returnVal = [char](($currVal) % 26 + 65) + $returnVal; 
     $currVal = [int][math]::Floor($currVal/26) 
    } 
    $returnVal = [char](($currVal) + 64) + $returnVal; 

    return $returnVal 
    } 

Что делает эта функция для преобразования числа в буквы.

Теперь то, что я хочу добиться того, чтобы каким-то образом это сделать:

$convert2letter = Convert-ToLetters() 

Так что я могу сделать что-то вроде

$WR= "$convert2letter($CValue1)" + "-" + "$convert2letter($CValue2)" + "-" + "3" 

Но Powershell разве что позволило мне сделать $ convert2letter

Так что я могу здесь сделать?

Благодаря

+1

Связанный: http://stackoverflow.com/questions/24798389/can-i-assign-a-function-to-a-variable –

+2

Почему бы вы делаете это так? Почему бы просто не вызвать функцию внутри вашей строки? – Matt

+0

Спасибо .... но может быть, потому что мой мозг просто терпит неудачу сегодня ... Я не мог понять, как его применять здесь ... хотя я признаю, что это очень важно и, скорее всего, решение моей проблемы ... Я сожалею ... – AdilZ

ответ

5

Без дополнительной информации для обоснования ее я думаю, вместо этого:

$WR= "$convert2letter($CValue1)" + "-" + "$convert2letter($CValue2)" + "-" + "3" 

Вы просто должны делать это:

$WR = "$(Convert-ToLetters $CValue1)-$(Convert-ToLetters $CValue2)-3" 

, который использует подвыражения. Или используйте оператор FORMAT

$WR = "{0}-{1}-3" -f (Convert-ToLetters $CValue1), (Convert-ToLetters $CValue2) 
+0

Большое спасибо! !! .... Я не могу поверить, что забыл что-то такое просто ..... Я закончил тем, что просто делал $ WR = "$ (Конвертировать -толеты $ Cvalue1)" + "-" + "$ Конвертировать-в-продажи $ Cvalue2 «+» - «+» 3 ».... Человек, я должен стать действительно глупым сегодня – AdilZ

1
New-Alias -Name `$convert2letter -Value Convert-ToLetters 

Не уверен, что вы пытаетесь достичь, это не делает много смысла.

+0

Возможно, это не что-то разрешено в Powershell .... Я пытался создать скрипт, где я делаю несколько $ WR ... который является буквенно-цифровым «адресом» ... но исходный вывод, который я изначально получил, является числовым, чем По алфавиту в некоторых частях ... так что я должен их преобразовать .... Я просто хотел посмотреть, могу ли я как-то установить $ convert2letter как функцию без значения .... поскольку вы не можете использовать «" при вводе функции с помощью значение – AdilZ

+0

, но почему? почему вы не можете назвать функцию? – 4c74356b41

+0

когда я попробую ......Я получаю + $ convert2letter = Convert-ToLetters() + ~ выражение, как ожидается, после того, как '(' + CategoryInfo:. ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: ExpectedExpression – AdilZ

2

Если я правильно понял ваш вопрос, вы говорите, вы хотите вызвать функцию, имя которой хранится в переменной. Один из способов сделать это - вставить подвыражение - $() - в строку и использовать оператор вызова/вызова - & для выполнения функции. Например:

function T { 
    param(
    $a 
) 
    "Result = $a" 
} 

$fn = "T" 
"We want $(& $fn Test)" 

Выход:

We want Result = Test