1

私はスモール ビジネス環境 (Win 7 Pro 64 ワークグループ、単一 LAN) にいて、ローカル マシン上で NAS 上のフォルダーへのリンクを作成し、システム リストア ファイルをコピーするスクリプトを実行できるようにしたいと考えています。次に、リンクを削除します。目的は、追加の保護レイヤーとしてシステムの復元を分離することです。このプロセスには、理想的には、これらのファイルをコピーしない限り、ユーザー マシンから NAS への直接リンクを切断することが含まれます。

自分のアカウントのシステム ボリューム情報フォルダーへのアクセスを既に許可しています。

検索すると、mklink を使用したスクリプトに関する多くの投稿が見つかりましたが、私が求めていたものと、bash から Powershell までの範囲で使用されている言語の確かな例を見つけることができませんでした。

私は VBA で多くのスクリプトを作成しましたが、Powershell や VBScript ではほとんどスクリプトを作成していません。これに最も適した言語はどれですか? Powershell の場合、Win 7 マシンにインストールする必要がありますが、大したことではありません。VBScript またはバッチは、作成して配布するのに最も簡単です。私のマシンには perl もインストールされていますが、他のいくつかのマシンにはインストールする必要があります。

  • 私の最初の質問は次のとおりです。この状況ではどの言語が最適でしょうか? できれば VBScript またはバッチ、または Powershell をお勧めします。必要に応じて perl。

  • 2 番目の質問: スクリプトの例を教えてもらえますか? 典型的な mklink コマンドは次のようになります (私が理解していることから):

    mklink /d :名前: :ターゲット:

/d の代わりに /j フラグを使用する必要がありますか? ドライブをマウントする必要がありますか (Windows CLI または Powershell でこれを行う方法が不明です)。

また、これがそもそも機能しない場合は、お気軽にお知らせください。ありがとう。

4

1 に答える 1

0

したがって、これは PowerShell で簡単に実行できます。MKLink は使用しませんが、NAS の場所への一時的なマッピングを作成します (実際の NAS を使用してから数年が経ちました。私の記憶が正しければ、実際に \NAS01 などの UNC パスがあることを願っています)。 \シェア)。したがって、New-PSDrive を使用し、-Persistent パラメーターは使用しないため、スクリプトが終了して PowerShell セッションが終了すると、接続が終了します。その後、必要に応じてファイルをコピーできます。実際、両方の場所にあるすべてのファイルをチェックし、ローカルで更新されたファイルのみをアップロードするように設定できます。したがって、バックアップする各コンピューターのフォルダーが共有上に作成されていると仮定すると、次のことができます。

New-PSDrive -Name NAS -Root \\NAS01\Share\$env:COMPUTERNAME -PSProvider FileSystem
$Source = 'C:\System Volume Information'
Compare-Object (Get-ChildItem $Source -Recurse) (Get-ChildItem 'NAS' -Recurse) -PassThru |
    Where{$_.SideIndicator -eq "<="} | ForEach{Copy-Item $_.FullName -Destination ($_.FullName -Replace [regex]::escape($source), 'NAS:')}

これは基本的に、説明されているネットワーク パスにマップされた NAS という名前のドライブを作成し、両方の場所のディレクトリ リストを取得し、ソースにあり、宛先にない項目については、それを宛先にコピーします。スクリプトの実行が完了すると、PowerShell は終了し、NAS へのリンクを削除する必要があります。

于 2014-09-24T22:47:35.780 に答える