動作していないデバイスをリストアップする ~PowerShell編~

by HIRO 15. 1月 2010 10:27

ご無沙汰しております。

HIROです。 

本年も PowerShell from Japan!! をよろしくお願いいたします。

さて本年一発目のネタですが、人様のパクリになってしまいました。

ネタもとは gsf_zero1 さんの動作していないデバイスをリストアップするです。

gsf_zero1さんはC# MVPの方で、すばらしい記事を多数書かれておられます。

ぜひご覧ください。(gsf_zero1さんのサイトはこちら → http://d.hatena.ne.jp/gsf_zero1/

 

では本題です。

PowerShell 2.0から、Get-Wmiという新しいコマンドレットが追加されています。

これによりPowerShellからWMI操作を容易に行うことができるようになりました。

今回は、gsf_zero1さんが紹介してくださっているWin32_PnpEntityをPowerShellで使ってみようと思います。

コードは下記の通りです。

Get-WmiObject -Class Win32_PnpEntity -Filter "ConfigManagerErrorCode<>0" | %{$_.Description, $_.ConfigManagerErrorCode} 

 

Get-Wmiコマンドレットは-Classパラメータの後ろにWMI クラスの名前を指定します。また-filterの後ろにはWhere句に相当する文を使用します。

この文はWMI クエリ言語 (WQL) の構文を使用します。

今回示したコードでは、ConfigManagerErrorCode<>0 でないものを抽出し、パイプで受け取っオブジェクトから必要なもののみ(DescriptionとConfigManagerErrorCode)を表示しています。

現在のレート 5.0 (3人)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell 2.0 | WMI

Powershellでフォルダのアクセス権限を一括設定

by 山口 12. 1月 2010 18:19

久しぶりにネタを投下します。

マシンのセットアップ作業なんかをしていると、フォルダのアクセス権限を設定する作業なんてのがよくありますよね(実際今やってます)。

そんな時にスクリプトでパパッとやれたらなと思って、サクッと作ってみました。一括で設定するので、設定ファイルを読み込んでアクセス権限を設定する事にします。

まず、以下のようなXMLファイルを作ります。

Auth.xml
<?xml version="1.0" encoding="utf-8"?>
<AccessControls>
     <AccessControl>
         <Path>C:\Users\coma2n\Desktop\Hoge</Path>
         <Rules>
             <Rule>
                 <Identity>Everyone</Identity>
                 <Rights>ReadData</Rights>
                 <Type>Allow</Type>
             </Rule>
         </Rules>
     </AccessControl>
     <AccessControl>
         <Path>C:\Users\coma2n\Desktop\Fuga</Path>
         <Rules>
             <Rule>
                 <Identity>Everyone</Identity>
                 <Rights>ReadData</Rights>
                 <Type>Allow</Type>
             </Rule>
         </Rules>
     </AccessControl>
</AccessControls>

AccessControl要素(複数指定可)にはアクセス権限を設定するフォルダを指定します。 Rule要素(複数指定可)にはそのフォルダに設定する権限を指定します。

そして、以下のように「Set-Auth」スクリプト(後述)を呼び出します。

PS > Set-Auth.ps1 Auth.xml

これで複数のフォルダに一括でアクセス権限を設定できます。

「Set-Auth」スクリプトの中身は以下

Set-Auth.ps1

param([string]$authFile)

$config = [xml](Get-Content $authFile)
$config.AccessControls.AccessControl | % {
   $acl = Get-Acl $_.Path
   
   $_.Rules.Rule | % {
     $rule = New-Object Security.AccessControl.FileSystemAccessRule($_.Identity, $_.Rights, $_.Type)
     $acl.SetAccessRule($rule)
   }
   Set-Acl $_.Path $acl
}

XMLファイルをぐるぐる回してACLを設定していくだけ。

こんだけのスクリプトでかなりの作業減が見込めるので、やっぱりPowerShellはすごいですね。

現在のレート 5.0 (2人)

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

PowerShell

Calendar

<<  3月 2010  >>
月曜火曜水曜木曜金曜土曜日曜
22232425262728
1234567
891011121314
15161718192021
22232425262728
2930311234

View posts in large calendar
Disclaimer
The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.

© Copyright 2010 PowerShell from Japan!!