FC2ブログ

WIN1@Codename

Codename

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Invoke-Command がちょっとだけ簡単になるかも

Hyper-Vなどをリモートから管理するには、PoweerShellをリモートで実行することが多々あります。

Invoke-Commandを使えば、リモート先でコマンドを実行させることができるのですが、実行させたいコマンド、スクリプトに引数を渡すのにちょっとクセがあります。

$Name = "VM01"
Invoke-Command $Server -Credential $ServerCredential -ScriptBlock {
    $VM = $args[0]
    Get-VM $VM
} -ArgumentList $Name

ArgumentListで渡したい引数をScriptBlockの中では、$args[0]などで置き換えて実行する必要があります。

渡したい引数が多くなった場合など、なかなか面倒な作業になります。

 

型としてのScriptBlockを利用すると、実行したいコマンド自体を文字列として書いてしまえば、ScriptBlock型に変換して引数の渡し方など考えずにそのまま実行することができます。

$Name = "VM01"
[string]$Command = "Get-VM " + $Name
[scriptblock]$MyScriptBlock = [scriptblock]::Create($Command)
Invoke-Command $Server -Credential $ServerCredential -ScriptBlock $MyScriptBlock


参考:http://www.thomasmaurer.ch/2011/11/powershell-convert-string-to-scriptblock/
スポンサーサイト

ライブマイグレーションの設定が少し楽になったかも

以前ライブマイグレーションの設定でこんな記事を書きました
https://www.gmo.jp/report/single/?art_id=157

Windows Server 2016 で改めて設定を確認してみたところ、面倒だったActive Directoryの委任設定で、
「任意のサービスへの委任でこのコンピューターを信頼する(Kerverosのみ)」
を選択してもライブマイグレーションが出来るようになっていました。

20184506010739

以前は、「cifs」と「Microsoft Virtual System Migration Service」を任意のプロトコルで追加しないとライブマイグレーションができませんでした。
GUIでも面倒でしたが、この部分スクリプトに落とし込むのも結構大変でした。
http://www.vwnet.jp/Windows/WS12R2/MoveVMSetting/MoveVMSet.htm


GUIではチェックを入れるだけですが、「任意のサービスへの委任でこのコンピューターを信頼する(Kerverosのみ)」をスクリプトに落とし込むと

$Acct = Get-ADObject -Filter {Name -eq "<ServerNmae>"} -Properties userAccountControl
$NewUAC = $Acct.userAccountControl -bor 0x00080000
Set-ADObject -Identity $Acct -Replace @{"userAccountControl" = $NewUAC}

(https://bamcisnetworks.wordpress.com/page/5/)

となります。


Hyper-Vのホスト設定のコード化が少し楽になりそうです。

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

次のページ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。