Skip to content

Instantly share code, notes, and snippets.

@potatoqualitee
Last active November 5, 2018 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save potatoqualitee/81ac7fd28bdfdf006b4983d5458cb98b to your computer and use it in GitHub Desktop.
Save potatoqualitee/81ac7fd28bdfdf006b4983d5458cb98b to your computer and use it in GitHub Desktop.
filestream_enable.vbs
'
' USAGE:
'
' cscript filestream_enable.vbs [/Machine:<MachineName>] [/Instance:<InstanceName>] [/Level:<0|1|2|3>] [/Share:<ShareName>]
' from the codeplex site https://archive.codeplex.com/?p=sqlsrvengine
'
InstanceName = "MSSQLSERVER"
MachineName = "."
TargetLevel = 3
ShareName = ""
If WScript.Arguments.Named.Exists("Machine") Then
MachineName = WScript.Arguments.Named("Machine")
End If
If WScript.Arguments.Named.Exists("Instance") Then
InstanceName = WScript.Arguments.Named("Instance")
End If
If WScript.Arguments.Named.Exists("Level") Then
TargetLevel = WScript.Arguments.Named("Level")
End If
If WScript.Arguments.Named.Exists("Share") Then
ShareName = WScript.Arguments.Named("Share")
End If
WScript.Echo "Machine: " & MachineName
WScript.Echo "Instance: " & InstanceName
WScript.Echo "Level: " & TargetLevel
WScript.Echo "ShareName: " & ShareName
WScript.Echo vbNewLine & "Current Filestream configuration:"& vbNewLine
set fsInstance = GetObject("WINMGMTS:\\" & MachineName & "\root\Microsoft\SqlServer\ComputerManagement10:FilestreamSettings='" & InstanceName & "'")
WScript.Echo "InstanceName = " & fsInstance.InstanceName
WScript.Echo "AccessLevel = " & cstr(fsInstance.AccessLevel)
WScript.Echo "ShareName = " & fsInstance.ShareName
WScript.Echo "RsFxVersion = " & fsInstance.RsFxVersion
WScript.Echo vbNewLine & "Calling method EnableFilestream with new level" & vbNewLine
Set method = fsInstance.Methods_("EnableFilestream")
Set inParam = method.inParameters.SpawnInstance_()
inParam.AccessLevel = TargetLevel
inParam.ShareName = ShareName
Set outParam = fsInstance.ExecMethod_("EnableFilestream", inParam)
If outParam.returnValue = 0 Then
WScript.Echo "Method executed successfully" & vbNewLine
Else
WScript.Echo "Method failed: hr = " & cstr(outParam.returnValue)
' WBEM_E_INVALID_OPERATION == IDS_FILESTREAM_CANNOT_CHANGE_SHARE (0x80041016 : -2147217386)
' HRESULT_FROM_WIN32 (ERROR_ALREADY_EXISTS) == IDS_FILESTREAM_DUP_SHARE_NAME (0x800700B7 : -2147024713)
' HRESULT_FROM_WIN32 (ERROR_ACCESS_DENIED) == IDS_FILESTREAM_ACCESS_DENIED (0x80070005 : -2147024891)
' HRESULT_FROM_WIN32 (ERROR_INVALID_SHARENAME) == IDS_FILESTREAM_INVALID_SHARENAME (0x800704BF : -2147023681)
' HRESULT_FROM_WIN32 (ERROR_FILENAME_EXCED_RANGE) == IDS_FILESTREAM_SHARENAME_TOO_LONG (0x800700CE : -2147024690)
' HRESULT_FROM_WIN32 (ERROR_RESOURCE_NOT_FOUND) == IDS_FILESTREAM_PRIMARY_NODE_NOT_ENABLED (0x8007138F : -2147019889)
' HRESULT_FROM_WIN32 (ERROR_CLUSTER_INVALID_REQUEST) == IDS_FILESTREAM_SHARENAME_NODE_MISMATCH (0x800713B8 : -2147019848)
' HRESULT_FROM_WIN32 (ERROR_SUCCESS_RESTART_REQUIRED) == IDS_FILESTREAM_DISABLED_RESTART (0x80070bc3 : -2147021885)
' WBEM_E_INVALID_PARAMETER == IDS_FILESTREAM_GENERAL_ERROR (0x80041008 : -2147217400)
If outParam.returnValue = -2147217386 Then
WScript.Echo "WBEM_E_INVALID_OPERATION == IDS_FILESTREAM_CANNOT_CHANGE_SHARE (0x80041016 : -2147217386)"
Else If outParam.returnValue = -2147024713 Then
WScript.Echo "HRESULT_FROM_WIN32 (ERROR_ALREADY_EXISTS) == IDS_FILESTREAM_DUP_SHARE_NAME (0x800700B7 : -2147024713)"
Else If outParam.returnValue = -2147024891 Then
WScript.Echo "HRESULT_FROM_WIN32 (ERROR_ACCESS_DENIED) == IDS_FILESTREAM_ACCESS_DENIED (0x80070005 : -2147024891)"
Else If outParam.returnValue = -2147023681 Then
WScript.Echo "HRESULT_FROM_WIN32 (ERROR_INVALID_SHARENAME) == IDS_FILESTREAM_INVALID_SHARENAME (0x800704BF : -2147023681)"
Else If outParam.returnValue = -2147024690 Then
WScript.Echo "HRESULT_FROM_WIN32 (ERROR_FILENAME_EXCED_RANGE) == IDS_FILESTREAM_SHARENAME_TOO_LONG (0x800700CE : -2147024690)"
Else If outParam.returnValue = -2147019889 Then
WScript.Echo " HRESULT_FROM_WIN32 (ERROR_RESOURCE_NOT_FOUND) == IDS_FILESTREAM_PRIMARY_NODE_NOT_ENABLED (0x8007138F : -2147019889)"
Else If outParam.returnValue = -2147019848 Then
WScript.Echo "HRESULT_FROM_WIN32 (ERROR_CLUSTER_INVALID_REQUEST) == IDS_FILESTREAM_SHARENAME_NODE_MISMATCH (0x800713B8 : -2147019848)"
Else If outParam.returnValue = -2147021885 Then
WScript.Echo "HRESULT_FROM_WIN32 (ERROR_SUCCESS_RESTART_REQUIRED) == IDS_FILESTREAM_DISABLED_RESTART (0x80070bc3 : -2147021885)"
Else If outParam.returnValue = -2147217400 Then
WScript.Echo "WBEM_E_INVALID_PARAMETER == IDS_FILESTREAM_GENERAL_ERROR (0x80041008 : -2147217400)"
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
WScript.Echo vbNewLine & vbNewLine & "New Filestream configuration:"& vbNewLine
set fsInstance = GetObject("WINMGMTS:\\" & MachineName & "\root\Microsoft\SqlServer\ComputerManagement10:FilestreamSettings='" & InstanceName & "'")
WScript.Echo "InstanceName = " & fsInstance.InstanceName
WScript.Echo "AccessLevel = " & cstr(fsInstance.AccessLevel)
WScript.Echo "ShareName = " & fsInstance.ShareName
WScript.Echo "RsFxVersion = " & fsInstance.RsFxVersion
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment