0

最近、以下に説明するように、Powersehllコマンドを使用してSQLクエリを実行する方法を知りました。

Import-Module “sqlps” -DisableNameChecking   

$ds=Invoke-Sqlcmd -Query $Query -Database $Database -ServerInstance $server -ConnectionTimeout $ConnectionTimeout -QueryTimeout $QueryTimeout 

この時点で、PowershellISE出力コンソールは

PS SQLSERVER:\>

選択と更新のクエリをエラーなしで実行できました。リモートコンピュータのファイルの1つにアクセスしたいときに、問題が発生します。私は以下のようにファイルにアクセスしようとしました:

PS SQLSERVER:\> Get-Content -Path \\Server\D$\Log\App.log

ファイル/フォルダを次のようにリストするだけでも試してみました

PS SQLSERVER:\> ls \\Server\D$\Log\

エラーを下回るIam:

Get-Content:パス'\ Server \ D $ \ Log \ App.log'が存在しないため、見つかりません。ls:パス'\ Server \ D $ \ Log \'が存在しないため、見つかりません。

言うまでもありませんが、PowershellがSQLモジュールなしで実行されているときに同じサーバーにアクセスできたため、そのサーバーにはフォルダーとファイルが存在します。つまり、コンソールにはPS C:\ User \abc\だけが表示されていました。

この長い話でごめんなさい-今、簡単な質問です!シェルがSQLSERVERコンソールにあるときにリモートファイル/フォルダーにアクセスするにはどうすればよいですか?

前もって感謝します!

-ラジ

4

3 に答える 3

0

次のようにディレクトリを変更するだけです。

cd c:\

それから:

ls \\server\d$\log

その後、同じことを行うことでSQLサーバーに戻すことができます。

cd sqlserver:\

PowerShellプロバイダーは、通常のドライブ文字と同じように使用でき、かなりクールです。

于 2013-02-21T13:57:55.070 に答える
0

SQLサーバー上でコマンドをリモートで実行しているため、そこから別のサーバー上のデータにアクセスすることは「ダブルホップ」シナリオであり、それを機能させるにはCredSSP認証が必要になると思います。

于 2013-02-21T14:10:08.560 に答える
0

次のように、ファイルシステムプロバイダーを明示的に使用できるはずです。

ls filesystem::\\server\d$\log
于 2013-02-21T16:37:10.140 に答える