2013年7月26日金曜日

◆スクリーンセーバーの情報を取得する

Finding Screen Saver Information - Power Tips - PowerShell.com – PowerShell Scripts, Tips, Forums, and Resources

001
002
003
004
005
006
007

gwmi win32_desktop | ?{$_.name -eq "NT AUTHORITY\SYSTEM"}

gwmi win32_desktop -filter "name='NT AUTHORITY\\SYSTEM'"

gwmi win32_desktop -Filter "name='$env:userdomain\\$env:username'"

[wmi]"win32_desktop='NT AUTHORITY\SYSTEM'"

基本的にはどの行も同じ結果が表示される。
image

「¥」の扱いにちょっと注意が必要。
WMIの世界ではエスケープが必要で、PowerShellの世界ではエスケープが不要って事かな。

2013年7月10日水曜日

◆Usingラベルのサンプル

別セッションに変数を渡すサンプル。(V3からの機能だそうです)

001
002
003
004
005

$class = 'Win32_LogicalDisk'
$ComputerName = 'hogePC.sample.co.jp'

Invoke-Command -ScriptBlock
 { 
 
Get-WmiObject -Class $using:class } -ComputerName $ComputerName

バックグラウンドジョブを使うときなんかに重宝するかも。

 

参考までにV2でやるにはこんな感じでパラメータ渡ししてあげるらしいです。

001
002
003
004
005
006

$class = 'Win32_LogicalDisk'
$ComputerName = 'vista3.ad.ics.co.jp'
Invoke-Command -ScriptBlock
 { 
 
param($class
) 
 
Get-WmiObject -Class $class
 
} 
-ComputerName $ComputerName -ArgumentList $class

 

参考
Using "Using:" On Remote PowerShell Sessions - Power Tips - PowerShell.com – PowerShell Scripts, Tips, Forums, and Resources

2013年7月4日木曜日

◆Invoke-WebRequestサンプル

以前もちょっと取り上げたV3で追加になったコマンド。

実際に使う機会があったのでサンプルとして記載しておく。

かつてノーツで作られていた議事録をSharePointに移行したリストがあったのだが、移行ツールに不具合があるのか稀に添付文書のリンク切れが発生している。
そこで、リンク切れをチェックしてリストアップするスクリプトを書いた。

リスト形式(一覧)では添付の有無しか判らず、そのパスは明細を読む必要がある。
そこで、リストを一旦CSVに落として添付があるものについて「Invoke-WebRequest」で読み込んでみる。
そこから「href」に「Attachment」(すなわち添付)の文字があるものを抽出して存在チェックする。
とりあえず存在チェック自体も「Invoke-WebRequest」で読んでみてエラーになるかどうかで判断している。(これについては他にもっと良い方法が有るのかも・・・)

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015

$url = "http://server/sites/hoge/MEETING/Lists/List/DispForm.aspx?ID={0}"
$csv = Import-Csv "F:\Desktop\打ち合わせ報告書.csv" -Encoding default
$csv | %
{
 
if($_.添付 -eq 1
){
   
$_.整理番号 | Tee-Object -Variable number
    $urlString = $url -f $_.
ID
   
$web = Invoke-WebRequest -uri $urlString -UseDefaultCredentials
 
   
$web.links | ?{$_.href -like "*attachment*"} | %
{
     
$_.href |  %
{
       
Invoke-WebRequest -uri $_ -UseDefaultCredentials | Out-Null
        if($? -eq $false){$number >> "F:\Desktop\整理番号.txt"}
      }
    }
  }
}
<!-