vbsで実装された共有フォルダのローカルパスを決定しますか?

2499 ワード

共有フォルダのローカルパスを決定するにはどうすればいいですか?
質問:
こんにちは、スクリプトの専門家!UNCパス(たとえば\server 1test)がある場合、スクリプトを使用して共有フォルダ(例えばC:ScriptsTestフォルダ)のローカルパスを決定できますか?
-- JVK
回答:
こんにちは、JVK.はい、おっしゃるとおりです.
ああ、そうだ.私たちはほとんど忘れてしまった.スクリプトを使用して共有フォルダのローカルパスを決定できますか?もちろんいいです(なぜ野球シーズン中に暇な人がいるのか分かりませんが).もしこれが本当にやりたいことなら、どうすればいいか教えてあげます.
 
  
strPath = "\\atl-fs-01\public" 
strPath = Replace(strPath, "\\", "") 
arrPath = Split(strPath, "\") 
strComputer = arrPath(0) 
strShare = arrPath(1) 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") 
Set colItems = objWMIService.ExecQuery _ 
    ("Select * From Win32_Share Where Name = '" & strShare & "'") 
For Each objItem in colItems 
    Wscript.Echo objItem.Path 
Next 

ご覧のように、まず典型的なUNCパス:\atl-fs-01publicを使用しました.ちなみに、このパスはstrPathという変数に格納されます.このパス名があれば、私たちは2つのことをしなければなりません.まず、コンピュータ名(atl-fs-01)と共有名(public)を区別する必要があります.その後、コンピュータatl-fs-01に接続し、publicフォルダのローカルパスを決定する必要があります.それはどれくらい難しいですか.ちっとも難しくない.
特に、私たちが「無敵」のライバルに勝ったばかりのシナリオライターです.まだ言ってないでしょ?最後の得点は4対2です.私たちはそんなによくありませんが.コーチがいいに違いない...
本題に戻りましょう.まず、UNCパスの前の\を削除しなければなりません.他にもいくつかの方法がありますが、Replace関数を使用して、表示される各\を空の内容に置き換えるだけです.
strPath = Replace(strPath, "\\", "")
この行のコードを実行すると、変数strPathはatl-fs-01publicに等しくなります.これは、Split関数を使用してこの値を配列に分割できることを意味します.
arrPath = Split(strPath, "\")
に基づいて分離すると、最終的に2つのデータからなる配列が得られます.
? atl-fs-01
? public
言うまでもなく、これは私たちが探している2つの情報です.コンピュータ名と共有フォルダ名です.これを明らかにすると、配列の最初の項目(項0)をstrComputerという変数に、2番目の項目(項1)をstrShareという変数に割り当てます.
strComputer = arrPath(0)
strShare = arrPath(1)
では、今私たちは難しい部分に着いたのではないでしょうか.信じるかどうかにかかわらず、これは難しい部分です.その後、標準のWMIスクリプトを使用するだけです.まず、リモートコンピュータのWMIサービスに接続します.(どのリモートコンピュータですか?strComputerという変数に格納されているAtl-fs-01です.)次に、ExecQueryメソッドを使用してコンピュータ上のすべての共有フォルダのセットを取得します.
Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_Share Where Name = '" & strShare & "'")
良いアイデア:私たちはすべての共有フォルダを取得していませんよね?代わりに、Name属性がstrShare変数の値に等しい共有フォルダのみを取得しました.(しばらく居眠りをすると、strShareはpublic、つまり共有フォルダ名に等しい)次に、For Eachループを作成してコレクションを巡ります.(1台のコンピュータ上の共有フォルダ名が一意でなければならないため、このセットには1つしかありません)、Path属性の値を戻します.Path属性はatl-fs-01上のフォルダのローカルパスを教えてくれます.
D:\Scripts\Public
これが、UNCパスを取得し、ローカルフォルダパスを決定するために必要なすべてです.