質問
PowerShellを介して毎日のタスクの多くを自動化したいと思います。私たちが持っているプロセスの1つは、営業時間後にデスクトップをイメージングすることです。この操作が完了すると、イメージファイルをサーバーのハードドライブからネットワークドライブに移動する必要があります。 PowerShellスクリプトを呼び出してすべてをノックアウトするマシンでサービスとして実行するアプリを作成しています。
スクリプト用にサーバー上にディレクトリを設定しました。サーバーからスクリプトfilecopy.ps1を呼び出す場合は正常に動作します。
copy-item C:\scripts\myFile1.txt -destination C:\scripts\myFile2.txt
ただし、.NETアプリでは、ローカルマシンからスクリプトを呼び出します。
RunScript(LoadScript(@"\\Server\ServerShare\FileCopy.ps1"));
うまくいきません。これは、C:スクリプトがローカルマシン上にあると見ているからです。だから、私はそれを変更します:
copy-item \\Server\ServerShare\myFile1.txt -destination \\Server\ServerShare\myFile2.txt
うまくいきません。スクリプトに別の行を追加します:
copy-item \\Server\ServerShare\myFile1.txt -destination \\Server\ServerShare\myFile2.txt
get-childitem \\Server\ServerShare | format-table name
それでもファイルをコピーしませんが、 します サーバー上のスクリプトディレクトリの内容を返します。
そこで、私はサーバーに戻り、UNCパスを所定の位置に置いてスクリプトを実行します-PowerShellがエラーを返します
Copy-Item : Access to the path '\\Server\ServerPath\myFile2.txt' is denied.
それが問題の根源のようです。どうすればこれを回避できるのですか?私は管理者としてサーバーにログインしています。
解決
管理者としてスクリプトを実行すると、ネットワーク共有IIRCでは重要ではありません。デフォルトの共有許可により、読み取りのみが可能になります。これらのパーマを更新して、シェアに書き込むことを許可する必要があります。
使用している場合は参照 net share
Windows7で株式を作成するには、 /grant:<users>,CHANGE
これらの許可をユーザーに付与します。
他のヒント
私はサーバー2003 R2を使用しています。管理者は[セキュリティ]タブの下で完全にアクセスできましたが、[共有]タブに行きました。権限を作成し、誰もがアクセスを読み取るように設定されていました。私は管理者と自分自身を完全なコントロールとして追加しました、今人生は良いです!!