web-dev-qa-db-ja.com

スクリプト-ネットワークパスが利用可能かどうかを確認してからマッピングする方法

ネットワークパスが使用可能かどうかを確認し、それをユニットにマッピングするスクリーンセーバー/ログオンスクリプトが必要です。利用できない場合は、切断/接続しません。

ネットワークパスは\ 192.168.1.1\drive1です

また、そのパスに接続するにはユーザー名/パスワードを使用する必要があります。

13
FernandoSBS

existコマンドを使用して、パスが有効かどうかを確認できます。

if exist \\192.168.1.1\drive1 Net Use s: \\192.168.1.1\drive1

資格情報を提供する必要がある場合(つまり、現在のWindowsユーザーがその共有にアクセスできない場合)、/userを追加します。

if exist \\192.168.1.1\drive1 Net Use s: \\192.168.1.1\drive1 /user:myDomain\myUser myPassword

共有がすでに存在している可能性があり、それが利用できなくなった場合に削除したい場合は、else句を追加します。

if exist \\192.168.1.1\drive1 (Net Use s: \\192.168.1.1\drive1) else (Net Use /delete s:)

そして、もう一度、必要に応じて/userを追加します。

これを、次のようなバッチファイルにまとめることができます。

@echo off
if exist \\192.168.1.1\drive1 (set shareExists=1) else (set shareExists=0)
if exist y:\ (set driveExists=1) else (set driveExists=0)
if %shareExists%==1 if not %driveExists%==1 (Net Use y: \\192.168.1.1\drive1)
if %shareExists%==0 if %driveExists%==1 (Net Use /delete y:)
set driveExists=
set shareExists=
15
Geoff

Powershellはこれを簡単にします:

If(Test-Path \\192.168.1.1\Drive1)
  {
    Net Use M: \\192.168.1.1\Drive1 /user:Domain\UserName Password
  }
else {Net Use M: /delete > nul}
6
Austin T French

これが最終的なコードです:

function run{
Net Use
If(Test-Path \\192.168.1.1\volume1)
  {
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")) 
        {
            "already mounted and accessible"
        }
    else
        {
            Net Use Y: \\192.168.1.1\volume1
            "mounting"
        }
  }
else { 
    if (((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory"))
        {
            Net Use Y: /delete
            "removing"
        }
}
exit 4
}

run 

私が使う Test-Path \\192.168.1.1\volume1ネットワークパスが利用可能であるかどうかを確認することをお勧めします((New-Object System.IO.DriveInfo("Y:")).DriveType -ne "NoRootDirectory")ドライブ文字が存在するかどうかを確認します。

0
FernandoSBS

WindowsのファイルエクスプローラーまたはNet Useコマンドを使用してマッピングするだけの方が簡単です。機能するか機能しないかのどちらかです。

0
mdpc