LoginSignup
0
5

More than 5 years have passed since last update.

powershellの実行結果をエクセルに出力

Last updated at Posted at 2017-11-11

したいこと:
ショートカットのリンク先変更
以前の投稿より改善箇所が多いので改めて投稿

コメント:
いろいろな方のいいところの全部乗せ。
リンク先の書き換えができなかったときにそなえ、
もともとのリンク先をエクセルに落とし込みたかった。
エクセルの1列目にショートカットの名前、
2列目にリンク先が出力されます。

$$特殊フォルダとしてデスクトップを取得
$path=[system.environment]::getfolderpath([system.environment+specialfolder]::desktop)
cd $path

$$ファイルオブジェクトの生成
$wsh=New-Object -ComObject wscript.shell
$fnames=Get-ChildItem -Recurse -Include *.lnk

$$エクセルのオブジェクト生成
$excel=New-Object -ComObject excel.application
$excel.visible=$false
$wb=$excel.workbooks.add()
$sheet=$excel.worksheets.item(1)
$i=2 #エクセルファイルの2行目から書き込み

$$ショートカットをひとつひとつ処理する
foreach($fname in $fnames){
$sht=$wsh.createshortcut($fname)
$fnamefull=$sht.fullname
$link_name=$sht.targetpath
$sheet.cells.item(1,1)="ショートカットの名前"
$sheet.cells.item(1,2)="リンク先"
$sheet.cells.item($i,1)=$fnamefull
$sheet.cells.item($i,2)=$link_name
$i++
$str=$link_name.split("\")
$str.length

$$リンク先の判別。リンク先を¥で分割して配列にして対応
if($str[1] -match "Users"){
$変更したいリンク先と入れ替え
$str[1]="dell"
$new_path=$str -join "\"
$sht=$wsh.createshortcut($fnamefull)
$sht.targetpath=$new_path
$sht.save()
}else{
}
}

$$エクセルの列幅を文字にあわせる
$null = $sheet.Columns.AutoFit()
$wb.saveas($path + "\" + "recult.xlsx")
$excel.quit()
$excel=$null
$wsh.popup("完了しました。")

0
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
5