こんにちは。
ご提示のコードだと足りない部分が多く、本来であれば単体で動作するコードを提示して頂きたいのですが、おそらくNLISTコマンド([System.Net.WebRequestMethods+Ftp]::ListDirectory
)を発行しているものと予測して回答します。
回答としてはコードの記述に不備が見られます。
$list=@($strd.ReadToEnd());
の部分ですが、ReadToEnd()
メソッドでは改行込みの1つの文字列が返されますので、@()
でくるんでも要素数は1のままです。
このため
$indx=[Array]::IndexOf($list,"hogehoge.html")
の部分は意図した動作になりません。
対処方法はいろいろありますが、正攻法としては以下の様にwhileループを回して1行ずつチェックすると良いでしょう。
# 接続情報は環境に合わせてください
$url = 'ftp://example.com/'
$credential = Get-Credential
$request = [System.Net.FtpWebRequest]::Create($url)
$request.Method = [System.Net.WebRequestMethods+Ftp]::ListDirectory
$request.Credentials = $credential.GetNetworkCredential()
$response = [System.Net.FtpWebResponse]$request.GetResponse()
$reader = New-Object 'System.IO.StreamReader' ($response.GetResponseStream())
while(-not $reader.EndOfStream){
# 各行をチェックして該当のファイルを探す
$line = $reader.ReadLine()
if($line -match 'hogehoge.html'){
Write-Host 'hogehoge.html 発見!' -ForegroundColor Green
break
}
}
$reader.Close()
$response.Close()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/06/23 01:43