SharePoint 2010 と .Net Framework 4.0

by manamana 8. 3月 2013 08:00

Excel PowerShell Tool は .Net Framework 4.0 を採用しています。

SharePoint 2010 用のスクリプトを組んで検証しようとした所、次のようなエラーに会いました。

どうやら SP2010 のコマンドレットは .Net Framework 4.0 環境と相性が悪いようです。
そういえば、PowerShell 3.0 (≒WinMF 3.0) を導入すると SP2010 の管理ができなくなるという話がありました…
これは PowerShell の呼び出しに -version 2 オプションを付けることで回避できる様ですが、
PS Tool にはそのようなオプションはありません…

SharePoint 2013 なら問題ないハズですが、こちらはまだ未経験。なにせリソース食い過ぎで入れる環境がない...orz
SP2010 を無視するわけにはいかないので、対応が必要となりそうです。 

Tags:

Excel からソフトウェアデプロイメントを監視する

by manamana 4. 3月 2013 11:00

管理者をやっていると、各PCにどのようなプログラムがインストールされているかの把握が必要になります。
一台ずつ回って確認するわけにもいかないし、標準の管理ツールでクリックするのも手間です。

PowerShell からリモート上のPCに対して WMI の制御ができることがわかったので、
例によって Excel PowerShell Tool 用のスクリプトを書いてみました。

PcTable と名付けたテーブルに必要な項目を記述しておきます。
ユーザー名が空欄なら、ログインユーザーの権限でアクセスする約束です。※データは環境に合わせて編集してください

この状態で、"Get-Win32Product.ps1" を呼び出すと…
 

こんな感じで、インストールされているソフトウェアの一覧を取得することができます。

これは、WMI の Win32_product クラスの情報を表示しているだけなので、「プログラムと機能」の一覧とは微妙に異なります。
一致させるためにはレジストリの探索等も必要になりますが、今回はこれで良しとしましょう。

↓↓↓ダウンロード

Get-Win32Product.zip (8.90 kb)

Tags:

PowerShell

XP PC をリモートで Get-WmiObject する

by manamana 4. 3月 2013 06:00

PowerShell には WMI を操作するため幾つかのコマンドレットが用意されています。

WMI(=Windows Management Instrumentation)は OS の管理基盤です。
アプリケーションやプロセスの一覧を取得したり削除したりできますが、GUIからそれを意識する事はありません。

Get-WmiObject を使って、XP32というPCにインストールされたアプリの一覧を得るには次のようにします

> Get-WmiObject -ComputerName XP32 -class win32_product -Credetial $c
※$c には認証情報が代入されている

でもこれ、大抵の場合 FireWall で弾かれます。
WMIはRPCの動的ポートを利用しますが、今時のFireWallはRPCの動的ポートからの侵入を許してくれません。
※レジストリを弄ればOKです 

こんな時でも WimRM の環境が整っていれば大丈夫です。

> Invoke-Command -ComputerName XP32 -Credential $c { Get-WmiObject -class win32_product }

Invoke-Command を利用して、Get-WmiObject をリモート実行すれば良いだけです。

Tags:

PowerShell

Excel で Hyper-V を管理する

by manamana 3. 3月 2013 01:00

Windows 8/Server 2012 に搭載される Hyper-V 3.0 には、PowerShell モジュールが付属しています。
これを利用すると、Hyper-V マネージャー無しに仮想マシンを制御することが出来て便利です。

Hyper-V Cmdlets in Windows PowerShell

複数の仮想マシンを「同時」起動したり、Windows Updateを一斉に実行すると極端に性能が低下します。
これは HDD のランダムアクセス性能が低いのが原因で、SSD上の仮想マシンだとそれ程気になりません。
しかし、仮想マシンを SSD 上に用意できる環境は少数であり、管理者は苦労していると思います。

VMWare には仮想マシンを「順次」起動させる機能があるようですが、Hyper-V には存在しません。
そこで、 先日公開した Excel PowerShel Tool の応用として Hyper-V を管理する環境を作ってみました。
これを使えば、仮想マシンの一覧に対して以下の機能が使えます。

  

  1. 状態              仮想マシンの状態を取得する
  2. 起動              仮想マシンを起動する
  3. 保存              仮想マシンを保存する
  4. スナップショット    仮想マシンのスナップショットを作る
  5. シャットダウン     仮想マシンを終了する
  6. 更新              Windows Update を実行する

1~5は、Hyper-V用のコマンドレットを使って実現しています。
2の起動に関しては少し工夫をしていて、ハートビートが確認できるまで待機します。
これにより、仮想マシンの順次起動のタイミングを取っています。
その他は単純にコマンドレットを使うだけですが、完了するまで待機されるので順次実行に問題はありません。

6は PsTools に含まれる PsExec を用いて実現しています。

PsTools (Technet)

実際には PsExec により、仮想マシン上に予め配置してある Windows Update 用のスクリプト "Run-WinUpdate.ps1" を実行します。
これには次の記事が非常に役に立ちます。

更新プログラムを検索、ダウンロード、およびインストールする方法はありますか (Hey, Scripting Guy!)

普通に考えれば、PowerShell のリモートセッションでスクリプトを実行するところですが、
リモートからでは「管理者として実行」するのが困難です。
dcomcnfg で設定できると思ったのですが…挫折しました。
PsExec の -s オプションを使えばリモートからでも 「管理者として実行」 できるのでこれを採用しましたが、
PsExec はパスワード部分が平文で流れる等のセキュリティ的な問題もあるので、使用時には注意が必要です。
"Run-WinUpdate.ps1" は再起動まではサポートしていません。必要な場合は、手動で再起動してください。
※もちろん、シャットダウン&起動はExcel上から行えます 

使い方は、画面を見れば分かると思います。
HyperVTable に必要な情報を記述し、スクリプトとして "Act-Hyper-V.ps1" を呼び出します。
複数の仮想マシンをバッチ的処理してくれるので、Windows Update の日には活躍してくれるでしょう。

 

実際の使用に関しては、スクリプト内のファイルパスを調節してください。
ここでは、PsExec.exe をパスの通った場所に配置し、
"Run-WinUpdate.ps1" は 各仮想マシンの C:\PSScripts\WindowsUpdate に配置している事が前提です。
また、Excel を「管理者として実行」しないと動かないので注意してください。 

↓↓↓ ダウンロード 

Act-Hyper-V.zip (13.56 kb)

Tags:

Hyper-V | PowerShell

XP(x64) と PowerShell 2.0

by manamana 1. 3月 2013 18:00

存在すら忘れられている気がする XP 64bit 版ですが PowerShell が使いたい!
…と思ってはみたものの、正式に対応したファイルは見つかりませんでした。

そこで、内部構造がほぼ同じと思われる Server 2003 x64 用のモジュールを入れてみました。

Windows Server 2003 x64 Edition 用更新プログラム (KB968930)

インストールは呆気なく終了。コマンド類も普通に動く様子です。

 

なんかちょっと嬉しい

Tags:

その他の IT 系


スポンサーリンク

Calendar

<<  11月 2024  >>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

View posts in large calendar

Month List

Twitter