Get-WmiObject 无法在 PowerShell (x86) 上执行,但在 PowerShell 上执行
Get-WmiObject can't be executed on PowerShell (x86) but on PowerShell
为什么我可以在 PowerShell 上执行以下代码,但不能在同一台计算机上的 PowerShell (x86) 上执行?
Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement13" -Class ServerSettingsGeneralFlag -Filter "FlagName='ForceEncryption'"
异常:
At line:1 char:1
+ Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement ...
+ CategoryInfo : NotSpecified: (:) [Get-WmiObject], FileNotFoundException
+ FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
正如@AnsgarWiechers 所说,它可能不存在。至于为什么,也许您安装的是 64 位 SQL 服务器而不是 32 位?
解决此问题的一种方法是使用 PowerShell 远程处理。如果启用并配置了 PowerShell 远程处理,您可以从 32 位进程远程访问您自己的计算机,然后您将连接到 64 位实例。因此,您可以 运行 此代码从 64 位会话中获取结果。
$result64 = Invoke-Command -ComputerName . -ScriptBlock {
Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement13" -Class ServerSettingsGeneralFlag -Filter "FlagName='ForceEncryption'"
}
为什么我可以在 PowerShell 上执行以下代码,但不能在同一台计算机上的 PowerShell (x86) 上执行?
Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement13" -Class ServerSettingsGeneralFlag -Filter "FlagName='ForceEncryption'"
异常:
At line:1 char:1 + Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement ... + CategoryInfo : NotSpecified: (:) [Get-WmiObject], FileNotFoundException + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
正如@AnsgarWiechers 所说,它可能不存在。至于为什么,也许您安装的是 64 位 SQL 服务器而不是 32 位?
解决此问题的一种方法是使用 PowerShell 远程处理。如果启用并配置了 PowerShell 远程处理,您可以从 32 位进程远程访问您自己的计算机,然后您将连接到 64 位实例。因此,您可以 运行 此代码从 64 位会话中获取结果。
$result64 = Invoke-Command -ComputerName . -ScriptBlock {
Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement13" -Class ServerSettingsGeneralFlag -Filter "FlagName='ForceEncryption'"
}