WIN1@Codename

Codename

New-NetNat エラー修正方法

Windows Server 2016 から利用できる New-NetNat コマンドですが、時々エラーとなってNatの設定ができなくなる場合があります。

New-NetNat : パラメーターが間違っています。
発生場所 行:5 文字:1
+ New-NetNat -Name "Nat -InternalIPInterfaceAddressPrefix 192.168. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (MSFT_NetNat:root/StandardCimv2/MSFT_NetNat) [New-NetNat]、CimException
    + FullyQualifiedErrorId : Windows System Error 87,New-NetNat

 

このエラーの修正方法を紹介します。

Net Stop winmgmt #WMIと関連サービスを停止します
Rename-Item C:\Windows\System32\wbem\repository repository_bak #フォルダ名を変更
Net Start winmgmt #WMIと関連サービスを再開します


WMIのC:\Windows\System32\wbem\repository フォルダ内容に問題があるため、新しいNAT設定ができないようです。

PowerShellでConoHaをどうにかしてみる-Vol.3

GMOインターネットが提供するVPSサービス「ConoHa」のAPIを使って、オリジナルコマンドを使ったサーバー管理方法を3回に渡ってご紹介するレポート。最終回のVol.3では、仮想マシンの作成コマンドについてご紹介します。

https://www.gmo.jp/report/single/?art_id=226

PowerShellでConoHaをどうにかしてみる-Vol.2

GMOインターネットが提供するVPSサービス「ConoHa」のAPIを使って、オリジナルコマンドを使ったサーバー管理方法を3回に渡ってご紹介するレポート。Vol.2では、モジュールファイルの配置やサーバーの起動と停止コマンドをご紹介します。

https://www.gmo.jp/report/single/?art_id=225

PowerShellでConoHaをどうにかしてみる-Vol.1

GMOインターネットが提供するVPSサービス「ConoHa」のAPIを使って、オリジナルコマンドを使ったサーバー管理方法を3回に渡ってレポートします。
Vol.1では、APIを利用するメリットや利用方法をご紹介します。

https://www.gmo.jp/report/single/?art_id=224

PowerShell Where句で、カッコの有り無し考察

PowerShell Where句で{}が省略できるとのことで検証。

  

PS C:\> Get-Process | Where {$_.Id -eq 4144}

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName                              
-------  ------    -----      ----- -----   ------     -- -----------                              
    999      75   163744     222024  1033   153.50   4144 powershell_ise                           

 

PS C:\> Get-Process | Where $_.Id -eq 4144
Where-Object : パラメーター 'Property の引数を確認できません。引数が null または空です。null または空でない引数を指定して、コマンドを再度実行してください。
発生場所 行:1 文字:21
+ Get-Process | Where $_.Id -eq 4144
+                     ~~~~~
    + CategoryInfo          : InvalidData: (:) [Where-Object]、ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.WhereO
   bjectCommand

 

PS C:\> Get-Process | Where Id -eq 4144

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName                              
-------  ------    -----      ----- -----   ------     -- -----------                              
    999      75   163744     222024  1033   153.50   4144 powershell_ise                           

 

PS C:\> Get-Process | Where (Id -eq 4144)
Id : 用語 'Id' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパス
が正しいことを確認してから、再試行してください。
発生場所 行:1 文字:22
+ Get-Process | Where (Id -eq 4144)
+                      ~~
    + CategoryInfo          : ObjectNotFound: (Id:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

 

PS C:\> Get-Process | Where {Id -eq 4144}
Id : 用語 'Id' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパス
が正しいことを確認してから、再試行してください。
発生場所 行:1 文字:22
+ Get-Process | Where {Id -eq 4144}
+                      ~~
    + CategoryInfo          : ObjectNotFound: (Id:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException
 
Id : 用語 'Id' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパス
が正しいことを確認してから、再試行してください。
発生場所 行:1 文字:22
+ Get-Process | Where {Id -eq 4144}

 

 

 

結論 

$_ を使うときは { } が必要。 

Get-Process | Where {$_.Id -eq 4144}

 

無しの場合は不要 むしろ ( ) { } など付けるとエラー

Get-Process | Where Id -eq 4144

 

次のページ

FC2Ad