回答:
この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=
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}
Windowsファイルエクスプローラーまたはnet useコマンドを使用してマップしようとするのは簡単です。動作するか、動作しないかのどちらかです。
これが最終コードです。
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")
かどうか、およびドライブ文字が存在するかどうかを確認します。