ファイルにマシンのローカルであるかのようにファイルにアクセスする必要のあるソフトウェアがあるので、Net Use
を使用してネットワークドライブを文字としてマッピングしました。これは期待どおりに機能しますが、ソフトウェア自体はSYSTEMユーザーアカウントを使用してサービスとして実行されます。これはオプションでも構成可能でもありません。現在、Net Use
を実行したユーザーにドライブがマップされています。
だから私の質問は、システムアカウントがドライブにアクセスできるようにドライブをどのようにマップするのですか?
この質問 で指摘されているように、すべてのユーザーにドライブをマッピングする方法はありません。
より一般的なケースでは、Linuxの場合と同じ方法で、リモートロケーションをシステム全体のローカルファイルシステムに(ブート時に問題なく)マウントする方法を説明します。
バッチファイルなしのcmd(admin privsを使用)による簡単な解決策は次のとおりです。
schtasks /create /tn "my_mount" /tr "Net Use V: \\hostname\directory /persistent:yes" /sc onstart /RU SYSTEM
その後、サーバーを再起動するか、次を実行します。
schtasks /run /tn "my_mount"
編集:ユーザーalfa_989は、私がテストしていないコマンド拡張機能をサポートします。しかし、それはまだ誰かのために役立つかもしれません:
schtasks/create/tn "my_mount"/tr "Net Use V:\ hostname\directory/persistent:yes"/sc onstart/RU SYSTEM/RL HIGHEST
SQL Serverの一括コピージョブ(BCP)が、組織内の別のグループによって管理されている別のサーバーにファイルを書き出す必要があるのと同じ問題がありました。
トリックは、BCPジョブが使用しているユーザーとしてドライブをマップすることです。ドライブを、目的の宛先(サービスアカウントと呼ばれるもの)に対するアクセス許可を持つ専用のActive Directoryアカウントとしてマップします。私は1つのセットアップを取得するために私のADの人々と協力しなければなりませんでした。 BCPで使用されているユーザーアカウントを確認するには、SQL Serverのクエリウィンドウから次のコマンドを実行します。
EXEC xp_cmdshell 'ECHO %USERDOMAIN%\%USERNAME%
ドライブをマッピングするときは、コマンドプロンプトでwhoami
を使用します。
私の場合、SQLアカウントにSYSTEMアカウントとしてログインできなかったため、バッチジョブを作成しました。これはタスクスケジューラによって実行されますが、SYSTEMアカウントとして実行されますです。コマンドをバッチジョブに入れて、結果をテキストファイルに書き出すことができます。それが表示されないからです。
**以下のバッチジョブ**
ECHO ON
ECHO This will map the drive, but is being run by task scheduler AS the user SYSTEM
ECHO which should make it accessible to the user SYSTEM
ECHO List the existing drives first.
Net Use >> c:\Test\SystemNetUseOutput.txt
Net Use R: \\MyRemoteServer\MyDirectory\ /P:Yes /u:MyDomain\MyUsername pa$$Word
ECHO the /P switch makes the drive remain after reboot
ECHO List the existing drives with the new mapping
Net Use >> c:\Test\SystemNetUseOutput.txt
ECHO See what user this batch job ran under
whoami >> c:\Test\SystemNetUseOutput.txt
ECHO need to exit to allow the job to finish
EXIT
**これが他の誰かの役に立つことを願っています**
CrashPlanを使用してネットワーク共有をバックアップしようとしたときに、この問題が発生しました。 CrashPlanのサービスはSYSTEM
ユーザーとして実行されるため、ユーザーアカウントからマップされたネットワーク共有にはアクセスできません。 CrashPlanは、Windowsコンピューターでの回避策を提供します。
回避策で問題が解決し、CrashPlanのサービスがネットワーク共有にアクセスできるようになりました。同じ根本原因があるため、これは問題にも関係するはずです。
この問題に関するCrashPlanの記事:
http://support.code42.com/../Mounting_Networked_Storage_Or_NAS_Devices_For_Backup
CrashPlanのWindows向けの回避策:
http://support.code42.com/CrashPlan/Latest/Backup/Back_Up_a_Windows_Network_Drive
概要:
Net Use
コマンド(既に使用していたもの)。SYSTEM
ユーザーとして実行するように設定できます。