2017-02-08 26 views
0

PowerShellで簡単な関数を書く方法を理解できません。私はC#の開発者ですので、私が気づいていないPowerShellの構想があります。Powershell関数の戻り値が変数に格納されていない

ここで私がやろうとしているものです:

function ToBase64([string] $input) { 
    $bytes = [System.Text.Encoding]::UTF8.GetBytes($input) 
    return [System.Convert]::ToBase64String($bytes) 
} 

$encoded = ToBase64 -input "Hello World" 

Write-Host "Encoded: $encoded" 

私はこの出力を期待する:

Encoded: SGVsbG8gV29ybGQ= 

しかし、私はちょうど空の文字列取得しています:

Encoded: 

をPowerShell自体によってエラーが報告されることはありません。

は、私はこのように、このスクリプトを起動しています:

powershell -ExecutionPolicy Unrestricted -File "base64.ps1" 

私は完全にここに迷ってしまいました。私はこの問題についてグーグルで試してみましたが、私が見つけたものはすべてこれがうまくいくはずです。

答えて

0

これを試してください。

function ToBase64{ 
    $bytes = [System.Text.Encoding]::UTF8.GetBytes($args[0]) 
    return [System.Convert]::ToBase64String($bytes) 
} 

$encoded = ToBase64 -input "Hello World" 

Write-Host "Encoded: $encoded" 
+0

'-input'を削除しても機能しますが、私のアプローチがうまくいかない理由を知りたいと思います。 –

+2

@SebastianKrysmanski '$ input'は[自動変数](https://msdn.microsoft.com/en-us/powershell/reference/3.0/microsoft.powershell.core/about/about_automatic_variables)です。私はあなたの複製とマークした質問への回答を見てください。 –