私は実際にスクリプトを作成しており、スクリプトの一部はFTPファイルのダウンロードです。コードワードは何の問題もありませんが、私は1つの特定の部分を理解していません。私が自分で書いたコードの唯一の部分です。私はコードがどのように動作するのか理解していますが、関数がその値をどのように返すのかは分かりません。この関数はどのようにその値を返しますか?
function get-ftp {
try {
$ftprequest = [system.net.ftpwebrequest]::Create($uri)
$ftprequest.Credentials = New-Object system.net.networkcredential($user,$pass)
$ftprequest.Proxy = $null
$ftprequest.Method = [System.Net.WebRequestMethods+FTP]::ListDirectory
$ftpresponse = $ftprequest.GetResponse()
$reader = New-Object IO.StreamReader $ftpresponse.GetResponseStream()
$reader.ReadToEnd()
$reader.Close()
$ftpresponse.Close()
}
catch {
Write-host "Error while reading filenames"
}
}
だからこれは、FTPサーバーからのすべてのディレクトリを得るために、私の関数である:あなたはので、私はコードのビットでそれを説明しましょう、私が何を意味するか混乱することがあります。私はこのコードでこの関数を呼び出す:
$allXmlFiles = get-ftp
だから呼び出した後、私の$allXmlFiles
は、サーバー上のすべてのファイル名を持つ($allXmlFiles
にgetType
でテスト)の文字列が含まれています。今私の質問:どのようにFTPからの答えは、この変数に渡されますか?関数にはreturn
がありません。だから私はこれがどう動くか混乱しています。私はそうしようとしたtry/catch
機能と直接答えにアクセスするが、それは動作しませんでした。私は$reader
と$ftpresponse
でそれを見つけようとしましたが、成功しませんでした。
誰かがここで何が起こっているのか説明できれば、本当にクールだ。言われたように、コードは機能しますが、ここで何が起こっているのか理解したいと思います。