sql-server
  • powershell
  • filenotfoundexception
  • 2016-09-18 10 views 1 likes 
    1

    次のコードはPowerShellでは実行できますが、PowerShell(x86)では同じコンピュータで実行できません。Get-WmiObjectはPowerShell(x86)では実行できませんが、PowerShellで

    Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement13" -Class ServerSettingsGeneralFlag -Filter "FlagName='ForceEncryption'" 
    

    例外:@AnsgarWiechersが言ったように

    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
    +3

    それぞれの名前空間またはクラスが32ビット環境に存在しないと思われます。名前空間は以下のように列挙できます: 'function List-WmiNamespaces {Get-WmiObject -Namespace $ args [0] -Class '__namespace' | ForEach-Object {$ ns = '{0} \ {1}' -f $ _.__名前空間、$ _。名前; $ ns;リスト-WmiNamespaces $ ns}}; List-WmiNamespaces 'root \ microsoft''、および次のような名前空間内のクラス: 'Get-WmiObject -Namespace' root \ Microsoft \ SqlServer '-List | Select-Object -Expand Name'を選択します。 –

    +0

    私は確かに64ビットSQL Serverをインストールしました。 しかし、これら2つのスクリプトは、64ビットPowerShellと32ビットPowerShellの両方で同じ結果を得ています。 "root \ Microsoft \ SqlServer \ ComputerManagement13"とServerSettingsGeneralFlagの両方が存在します。 –

    答えて

    0

    、それはおそらく存在しません。なぜ、おそらく32ビットではなく64ビットのSQL Serverをインストールしたのでしょうか?

    これを回避する方法の1つは、PowerShellリモーティングです。 PowerShellリモーティングが有効で設定されている場合は、32ビットプロセスから自分のマシンにリモート操作できます.64ビットインスタンスに接続されます。このコードを実行すると、64ビットセッションから結果を得ることができます。

    $result64 = Invoke-Command -ComputerName . -ScriptBlock { 
        Get-WmiObject -Namespace "root\Microsoft\SqlServer\ComputerManagement13" -Class ServerSettingsGeneralFlag -Filter "FlagName='ForceEncryption'" 
    } 
    
    +0

    あなたのスクリプトは私のために働いた。 @ ansgar-wiechersスクリプトでも同じ結果が得られます。 –

    関連する問題