Invoke-Sqlcmdを使用して簡単なSQLクエリを実行するPowerShellスクリプト(test.ps1)があります。このスクリプトは、リモートのファイル共有サーバー上に存在します。スクリプトは以下のとおりです。TidalからPowerShellスクリプトでInvoke-Sqlcmdを実行する方法
param
(
[string]$SQL_username,
[string]$SQL_password
)
Write-Host ('begin script')
$db = 'some_DB'
$server = 'some_IP'
$query = 'SELECT TOP 10 * FROM some_schema.some_table'
Invoke-Sqlcmd -Username $SQL_username -Password $SQL_password -ServerInstance $server -Database $db -Query $query -QueryTimeout 60000
Write-Host ('end script')
私はTidalユーザーアカウントを持つファイル共有サーバーとリモートで、スクリプトを正常に実行します。
私は、このtest.ps1スクリプトを実行する対応するタイダルジョブを持っています。ここでは潮汐ジョブ情報は次のとおりです。
コマンド
C:\Windows\System32\WindowsPowerShell\v1.0\Powershell.exe
コマンドパラメータ
-ExecutionPolicy bypass -File D:\some_path\test.ps1
-SQL_username "<SQL_username.1>"
-SQL_password "<SQL_password.2>"
私は潮汐を経由してスクリプトを実行すると、潮のOutput画面を示しています
開始スクリプト
Invoke-Sqlc MD:用語「起動-sqlcmdの」は、コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前 として認識されていません...
終了スクリプト
だから、それはその何でも、ユーザは明らかですTidalを使用してスクリプトを実行すると、ユーザーはWrite-Host
コマンドレットを認識しますが、Invoke-Sqlcmd
コマンドレットは認識されません。どうすればいいの?そして、どうすればこの問題を解決できますか? (私は、Tidalユーザーが、リモートサーバーにログインした同じ潮汐ユーザーであるジョブの実行タブに指定されている実行時ユーザーではなく、NT AUTHORITY \ SYSTEMであることを確認しました)
SQLモジュールがSYSTEMのPowerShellプロファイルに読み込まれていません。 http://www.jasonq.com/blog/2012/3-things-to-do-if-invoke-sqlcmd-is-not-recognized-in-windows-powershellを参照してください。 SYSTEMとして実行しているときにネットワークにアクセスできないと思うので、タスクをユーザアカウントで実行するように設定する必要があるかもしれません。 –
あなたは正しいと思います。別のユーザーアカウントを使用してNew-PSSessionを使用して新しいPowerShellセッションを作成しました。これは機能します。 – user3100444