none
Access VBA で Wscript.shell による Powershell の実行が失敗 RRS feed

  • 質問

  • Access VBA で Powershell コマンドを実行しようとしています。

    SQL Server のレコードを CSV 出力するものです。

    SQL Server のジョブで作成しているCSVファイルを、ローカルPCから任意のタイミングでマニュアルでも出力したいとの依頼で、Accessで簡単なUIを作ろうとしています。

    全く同じものとするために、Powershellをそのまま使いたいと思っています。

    下のように書くと、

    Dim Wsh As Object
    
    Set Wsh = CreateObject("Wscript.shell")
    
    Wsh.Run "powershell -ExecutionPolicy Unrestricted -Command ""Add-PSSnapin SqlServerCmdletSnapin100;Add-PSSnapin SqlServerProviderSnapin100;Invoke-Sqlcmd -Query 'Exec (StoredProcName)' -ServerInstance '(SqlServerInstanceName)' -Database (DBName) -Username (UserName) -Password (PWD) | Export-Csv C:\test\rep.csv -Encoding UTF8 -NoTypeInformation"" >C:\test\text.log", 1

    下のようなエラーが出て失敗します。

    Add-PSSnapin : Windows PowerShell バージョン 5 にはスナップインが登録されていません。発生場所 行:1 文字:1+ Add-PSSnapin SqlServerCmdletSnapin100;Add-PSSnapin SqlServerProviderS ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    + CategoryInfo          : InvalidArgument: (SqlServerCmdletSnapin100:String) [Add-PSSnapin]、PSArgumentException    + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand
    
    Add-PSSnapin : Windows PowerShell バージョン 5 にはスナップインが登録されていません。発生場所 行:1 文字:39+ ... ServerCmdletSnapin100;Add-PSSnapin SqlServerProviderSnapin100;Invoke- ...+                           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    + CategoryInfo          : InvalidArgument: (SqlServerProviderSnapin100:String) [Add-PSSnapin]、PSArgumentException    + FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand

    PowerShell ISE から 

    Add-PSSnapin SqlServerCmdletSnapin100;Add-PSSnapin SqlServerProviderSnapin100;Invoke-Sqlcmd -Query 'Exec (StoredProcName)' -ServerInstance '(SqlServerInstanceName)' -Database (DBName) -Username (UserName) -Password (PWD) | Export-Csv C:\test\rep.csv -Encoding UTF8 -NoTypeInformation

    を実行すると成功します。

    どなたか原因がお分かりになる方がいらっしゃれば、ご教示いただければ助かります。




    • 編集済み nino_miya 2019年7月23日 10:58
    2019年7月23日 9:23

回答

  • Access VBA で Powershell コマンドを実行しようとしています。

    お使いの製品は、ストアアプリ/C2R/MSI いずれでしょうか?

    下のコマンドを、.bat ファイルを作って実行すると、正しく .csv ファイルが出力されます。

    ISE や WScript の方では伏せられていた機密情報を、.bat 掲載時に直し忘れていないでしょうか。 ダミー情報であれば良いのですが…。


    下のようなエラーが出て失敗します。

    WScript.Shell から、先の .bat あるいは .cmd ファイルを指定して起動することはできますか?

    • 回答としてマーク nino_miya 2019年7月23日 10:25
    2019年7月23日 9:49

すべての返信

  • Access VBA で Powershell コマンドを実行しようとしています。

    お使いの製品は、ストアアプリ/C2R/MSI いずれでしょうか?

    下のコマンドを、.bat ファイルを作って実行すると、正しく .csv ファイルが出力されます。

    ISE や WScript の方では伏せられていた機密情報を、.bat 掲載時に直し忘れていないでしょうか。 ダミー情報であれば良いのですが…。


    下のようなエラーが出て失敗します。

    WScript.Shell から、先の .bat あるいは .cmd ファイルを指定して起動することはできますか?

    • 回答としてマーク nino_miya 2019年7月23日 10:25
    2019年7月23日 9:49
  • 有難うございました。おかげさまでミスが分かり、解決しました。
    2019年7月23日 11:01