質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

3271閲覧

powershellで"Microsoft.PowerShell.Commands.WebRequestSession" 型に 変換できません。

giro1975

総合スコア37

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2018/08/31 23:50

powershellで次のコマンドを実行。

wget -r --no-parent -w 1 -l 1 --restrict-file-names=nocontrol https://gihyo.jp/db/

次のエラーが出てしまいます。

Invoke-WebRequest : パラメーター 'WebSession' をバインドできません。"1" の値を "System.Int32" 型から "Microsoft.PowerShell.Commands.WebRequestSession" 型に
変換できません。
発生場所 行:1 文字:24

  • wget -r --no-parent -w 1 -l 1 --restrict-file-names=nocontrol https:/ ...
  • ~
    • CategoryInfo : InvalidArgument: (:) [Invoke-WebRequest]、ParameterBindingException
    • FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

対処方法を教えてください。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

imihito

2018/08/31 23:58

`wget`はLinuxなどで使われることが多いそうですが、OSは何ですか?
giro1975

2018/09/01 00:08

windows10.0.17134 になります。よろしくお願いします。
guest

回答1

0

ベストアンサー

使っているコマンドとパラメータの指定の組み合わせが間違っているからです。

質問に記載されているコマンドは、以下のページで記載されているようなwgetコマンドを使用することを意図したものだと思われます。

【 wget 】コマンド――URLを指定してファイルをダウンロードする:Linux基本コマンドTips(24) - @IT

しかし、Windowsには通常はLinuxと同等のwgetコマンドは用意されていません。

PowerShell上ではwgetInvoke-WebRequestコマンドレットのエイリアス(別名)として定義されており、実際に呼び出されたのはこちらになります。
そしてInvoke-WebRequestコマンドレットのパラメータ指定はLinuxのwgetコマンドとは異なるためエラーとなります。


対策として以下のような方法があると思います(あくまで例です)。

  • PowerShellのInvoke-WebRequestコマンドレット用にパラメータを指定しなおす
  • Windows上でwgetを再現するためのプログラムをインストールして使用する
  • Windows Subsystem for Linux内のwgetを使用する

これ以上に関しては「何を使って、どうしたいのか」を明確にして別途、質問を作成してください。

参考:エイリアスの確認

PowerShell上で表示されるコマンドのうちVerb-Noun形式でなく、拡張子が無いものはエイリアスだと思ったほうが無難です。

Get-Aliasコマンドレットを使用することで、実際の定義を確認できます。

powershell

1Get-Alias -Name wget

text

1CommandType Name Version Source 2----------- ---- ------- ------ 3Alias wget -> Invoke-WebRequest

投稿2018/09/01 00:45

imihito

総合スコア2166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

giro1975

2018/09/01 05:02

ありがとうございます。勉強になります。 さっそくWindows上でwgetを再現するためのプログラムをインストールして使用するを https://qiita.com/nightyknite/items/b4db8766c0b94764cd3c を参考に試してみましたが、同じエラーになりました。 他の方法も本日ためしてみます。ありがとうございます。
imihito

2018/09/01 06:46

対象のプログラムをフルパスで指定した場合どうなりますか?
giro1975

2018/09/01 15:52

フルパスで指定とは C:\Program Files (x86)\GnuWin32\bin\wget.exe -r --no-parent -w 1 -l 1 --restrict-file-names=nocontrol https://gihyo.jp/db/ こういう状態でしょうか。よろしくお願いします。
giro1975

2018/09/01 16:21

Invoke-WebRequestのパラメータを勉強しています。 wgetでは -r オプション リンクをたどってクローリング、再帰的にダウンロード -l オプション リンクをたどる深さを制限 -w オプション ダウンロード感覚を開ける --no-parent 親ディレクトリをクロールしない --restrict-file-names=nocontrol URLに日本語が含まれる場合に、日本語のファイル名で保存 というクローリングを出来るようにしたかったです。
imihito

2018/09/02 02:13

> フルパスで指定 ちょっと言葉足らずでしたね おおむねそのイメージですが、プログラムのパスまではPowerShellの補完機能を使って入力してください。 今回のパスの場合、途中から「& 'パス'」といった形式で補完されるはずです。 前のコメントで > 同じエラーになりました。 となっていたため、そもそもインストールしたものを使えてないという判断から、上記のコメントをしました。
giro1975

2018/09/02 07:03

補完機能初めて知り、使いました。便利ですね。 接続先の都合で希望のことはできませんが、wget機能はフルで使えるようになりました。ありがとうございます。 PS C:\WINDOWS\system32> & 'C:\Program Files (x86)\GnuWin32\bin\wget.exe' --secure-protocol=TLSv1 -r --no-parent -w 1 -l 1 --restrict-file-names=nocontrol https://gihyo.jp/db/ SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc --2018-09-02 15:49:59-- https://gihyo.jp/db/ gihyo.jp をDNSに問いあわせています... 104.20.33.31, 104.20.34.31 gihyo.jp|104.20.33.31|:443 に接続しています... 失敗しました: Connection timed out. gihyo.jp|104.20.34.31|:443 に接続しています... 失敗しました: Connection timed out. 再試行しています。 --2018-09-02 15:50:42-- (試行: 2) https://gihyo.jp/db/ gihyo.jp|104.20.33.31|:443 に接続しています... 失敗しました: Connection timed out. gihyo.jp|104.20.34.31|:443 に接続しています... 失敗しました: Connection timed out. 再試行しています。 --2018-09-02 15:51:26-- (試行: 3) https://gihyo.jp/db/ gihyo.jp|104.20.33.31|:443 に接続しています... 失敗しました: Connection timed out. gihyo.jp|104.20.34.31|:443 に接続しています... 失敗しました: Connection timed out. 再試行しています。 --2018-09-02 15:52:11-- (試行: 4) https://gihyo.jp/db/ gihyo.jp|104.20.33.31|:443 に接続しています... 接続しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問