我有以下Powershell脚本,我们在许多服务器上运行该脚本来检索SQL VersionString:
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
$srv = New-Object "Microsoft.SqlServer.Management.Smo.Server" "."
$srv.VersionString
它适用于所有服务器,除了一个服务器,它返回一个空行。
仅运行:
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | out-null
New-Object "Microsoft.SqlServer.Management.Smo.Server" "."
返回:
AuditLevel :
BackupDirectory :
BrowserServiceAccount :
BrowserStartMode :
BuildClrVersionString :
BuildNumber :
ClusterName :
ClusterQuorumState :
ClusterQuorumType :
Collation :
CollationID :
ComparisonStyle :
ComputerNamePhysicalNetBIOS :
DefaultFile :
DefaultLog :
Edition :
ErrorLogPath :
FilestreamLevel :
FilestreamShareName :
HadrManagerStatus :
InstallDataDirectory :
InstallSharedDirectory :
InstanceName :
IsCaseSensitive :
IsClustered :
IsFullTextInstalled :
IsHadrEnabled :
IsSingleUser :
Language :
LoginMode :
MailProfile :
MasterDBLogPath :
MasterDBPath :
MaxPrecision :
NamedPipesEnabled :
NetName :
NumberOfLogFiles :
OSVersion :
PerfMonMode :
PhysicalMemory :
PhysicalMemoryUsageInKB :
Platform :
Processors :
ProcessorUsage :
Product :
ProductLevel :
ResourceLastUpdateDateTime :
ResourceVersionString :
RootDirectory :
ServerType :
ServiceAccount :
ServiceInstanceId :
ServiceName :
ServiceStartMode :
SqlCharSet :
SqlCharSetName :
SqlDomainGroup :
SqlSortOrder :
SqlSortOrderName :
Status :
TapeLoadWaitTime :
TcpEnabled :
VersionMajor :
VersionMinor :
VersionString :
Name : SERVERDR
Version :
EngineEdition :
ResourceVersion :
BuildClrVersion :
DefaultTextMode : True
Configuration : Microsoft.SqlServer.Management.Smo.Configuration
AffinityInfo :
ProxyAccount :
Mail :
Databases :
Endpoints :
Languages :
SystemMessages :
UserDefinedMessages :
Credentials :
CryptographicProviders :
Logins :
Roles :
LinkedServers :
SystemDataTypes :
JobServer :
ResourceGovernor :
ServiceMasterKey :
Settings : Microsoft.SqlServer.Management.Smo.Settings
Information : Microsoft.SqlServer.Management.Smo.Information
UserOptions : Microsoft.SqlServer.Management.Smo.UserOptions
BackupDevices :
FullTextService :
ActiveDirectory :
Triggers :
Audits :
ServerAuditSpecifications :
AvailabilityGroups :
ConnectionContext : Data Source=.;Integrated Security=True;MultipleActiveResultSets=False;Application Name="SQL Management"
Events : Microsoft.SqlServer.Management.Smo.ServerEvents
OleDbProviderSettings :
Urn :
Properties :
UserData :
State : Existing
IsDesignMode : False
DomainName : SMO
DomainInstanceName :
所以问题是,为什么它不返回有关此服务器上安装的SQL的信息?
服务器详细信息:视窗 2008 R2Microsoft SQL Server 2012 - 11.0.5058.0 (X64(Powershell 版本 5.1
显然,对于SQL Server 2008,您还需要加载辅助程序集:
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
#Need SmoExtended for smo.backup
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SmoExtended") | Out-Null
至少,当您想在SQL Server中进行SQL Server还原时,您需要它,因此也许您的目的也需要它。
我在这里找到了这些信息
不过我自己无法测试..