これは、Microsoft System Center Configuration Manager 2007にいくらか関連していますが、実際には、VBScript、FileSystemObject API、およびサブフォルダープロパティの読み取りに関する問題です。
スクリプトを実行して、配布ポイントの1つ(パッケージ共有の下にあるすべてのフォルダー)のフォルダーとフォルダーサイズを列挙しようとしています。FileSystemObject APIをVBscriptで使用しているので、サブフォルダーの約60%をクロールして名前とサイズを取得できますが、残りは「エラー70/アクセス許可が拒否されました」を返します。スクリプトを実行するアカウントは関係ありません。各サブフォルダーオブジェクト参照の間にSleep()遅延を追加してみました。それでもすべてを取得することはできません。
手動でフォルダを探索すると、問題なくそれらのプロパティを表示できます。これはFSOまたはWindowsScriptingHostの既知の問題ですか?以下にスクリプトコードを添付しました。TIA!
'****************************************************************
' Filename..: fso_subfolder_sizes.vbs
' Author....: skatterbrainz
' Date......: 02/10/2013
' Purpose...: enumerate package folders and tally disk space
'****************************************************************
Option Explicit
Const rootFolder = "\\SERVER123\ShareName$"
Dim time1, folderCount, totalSpace
Dim objFSO, objFolder, objSub
Dim GBsize, folderName, folderSIze
time1 = Timer
Set objFSO = CreateObject("Scripting.FileSystemObject")
folderCount = 0
totalSpace = 0
On Error Resume Next
Set objFolder = objFSO.GetFolder(rootFolder)
If err.Number = 0 Then
wscript.echo "<folders>"
For each objSub in objFolder.SubFolders
folderName = objSub.Name
folderSize = objSub.Size
GBsize = FormatNumber(Bytes2Gbytes(folderSize), 2) & " GB"
wscript.echo "<folder name=""" & folderName & """ size=""" & GBsize & """/>"
folderCount = folderCount + 1
totalSpace = totalSpace + folderSize
Next
Set objFolder = Nothing
wscript.echo "</folders>"
wscript.echo "--------------------------"
wscript.echo "sub-folders: " & folderCount
wscript.echo "total space: " & FormatNumber(Bytes2GBytes(totalSpace),2) & " GB"
Else
wscript.echo "root folder not found"
End If
Set objFSO = Nothing
wscript.echo "runtime: " & FormatNumber(Timer - time1, 2) & " Msecs"
Function Bytes2Gbytes(n)
If n > 0 Then
Bytes2Gbytes = (n / 1024 / 1024 / 1024)
Else
Bytes2Gbytes = 0
End If
End Function