

よろしくお願いします。

やりたいこと  
あるURLをリクエストするとファイルが自動的にダウンロードされます。  
この処理を自動化してWindowsのタスクスケジューラーに登録したいと考えています。

下記のシェルを記述してPOWERSHELL ISEでは問題なく動いたのですが、バッチファイルから  
呼び出すと以下の部分でエラーが出ます。同様にPOWERSHELLのコマンドプロンプトから実行しても同じエラーが出ます。3日ほど悩んだのですが理由が分からずお分かりになるかとのコメントを頂けると助かります。

やっていることはIEのダウンロードダイヤログボックスで保存ボタンをSendKeyで処理しようとしています。

[code]

    [System.Windows.Forms.SendKeys]::SendWait("%({S})")
    
[/code]

### スクリプト

[code]

    $url = "https://hoge.com/?un=userID&pass=password?file=00O7F00000AnYio?export=1"
    $shell = New-Object -ComObject Shell.Application
    
    # IE起動
    $ie = New-Object -ComObject InternetExplorer.Application
    
    # 可視化
    $ie.Visible = $true
    
    # URLオープン(キャッシュ無効)
    $ie.Navigate($url,4)
    
    While($ie.Busy)
    { Start-Sleep -s 1 }                                      
    
    Start-Sleep 2 
    
    [System.Windows.Forms.SendKeys]::SendWait("%({S})")
    
    Start-Sleep 2 
    
    $ie.Quit()
    
[/code]

### 実行例

[code]

    C:\TEST>powershell -ExecutionPolicy Unrestricted -File c:\TEST\sample.ps1
    型 [System.Windows.Forms.SendKeys] が見つかりません。
    発生場所 C:\TEST\sample.ps1:21 文字:1
    + [System.Windows.Forms.SendKeys]::SendWait("%({S})")
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : InvalidOperation: (System.Windows.Forms.SendKeys
       :TypeName) []、RuntimeException
        + FullyQualifiedErrorId : TypeNotFound
    
    C:\TEST>pause
    続行するには何かキーを押してください . . .
    
[/code]


CC BY-SA 4.0
2018-07-26T09:48:15.793
46992
2018-07-26T11:02:12.610
2018-07-26T11:02:12.610
19110
29475
question
powershell
SENDKEYがうまく機能しない


以下を追加したらどうでしょうか。

[code]

    Add-Type -AssemblyName System.Windows.Forms
    
[/code]

参考:
[PowerShellでSendKeysを使ったWindowsの自動化をしてみた](https://qiita.com/nimzo6689/items/488467dbe0c4e5645745#powershell%E3%81%A7%E3%81%AE%E5%AE%9F%E8%A3%85)


CC BY-SA 4.0
2018-07-26T10:00:23.163
46993
2018-07-26T10:00:23.163
46992
answer