せでぃのブログ

ブログ初心者おいどんのどうでもいい愚痴やどうでもいい愚痴やどうでもいいマメ知識などを披露するチラシの裏です。

メモ3

 ここまで悩んだ甲斐があった。linkstationのサルベージに成功した。しっかり日中は仕事をしつつ、PC2台ほどデータ移行させられた。つっかれた。

Windows PowerShellの注意点

 PowerShell2.0。Windows7のデフォルトがこのバージョン。
 自宅にはXPしかないので、実機で少し試した結果をフィードバックしておく。

  1. "ドライブレター"も英字もパスは大文字小文字を区別する
  2. Copy-Itemの"-Recurse"オプションはファイルが対象でも問題ない
  3. オプション"-Path"は、あってもなくても動く
  4. リダイレクト">"や">>"はUnicodeで出力するので、Get-Dateの出力形式で2バイト文字は避けたい
  5. リダイレクト先のパスは変数ではダメで、ドライブレターから始まる絶対パスを明示しないとカレントディレクトリが混ざったおかしなパスになる
  6. 共有フォルダへのアクセスは、net useでドライブレターを割り当ててパスを入れる
  7. ゲストフルアクセスの場合はユーザ名等の指定は不要
  8. 共有フォルダのドライブレターは、一度、cdで共有フォルダに移動しないと、何故かファイルをコピーできない。


 うーむ、マニュアルにない変な癖があって、使いづらいなぁ。結局、共有フォルダ内のファイルはその日によってTest-Pathの答えが異なるので諦めた。

# ready for diskcopy
# 移行対象のフォルダリストを作り、1つずつコピーする
net use Z: ¥¥192.168.1.10
net use Y: ¥¥192.168.1.12
cd Z:
Test-Path "Z:¥share¥hoge"
cd Y:
Test-Path "Y:¥share¥hoge"
cd C:¥test¥script
Get-ChildItem -Path Z:¥share | Add-Content C:¥test¥dir.log -Encoding Unicode
# PS1実行スクリプトの許可
Set-ExecutionPolicy RemoteSigned
.¥dataMigrate.ps1


# "dataMigrate.ps1"
# powershell for diskcopy
# 開始終了とエラーをログに出力して、コピー完了の確認をできるようにする

# Line1
Write-Output "StartCopy" >> C:¥test¥copy.log
Get-Date -Format G >> C:¥test¥copy.log
Copy-Item -Path "Z:¥share¥hogefile" "Y:¥share" -Recurse 2>> C:¥test¥copy.log
Get-Date -Format G >> C:¥test¥copy.log
Write-Output "EndCopy" >> C:¥test¥copy.log

 ">>"のエンコードを気にするのであればその代わりに、パイプでつないでAdd-Contentを使うといいかも。Asciiらしい。

Write-Output "あいうえお" | Add-Content out.txt -Encoding Ascii
Write-Output "かきくけこ" | Add-Content out.txt -Encoding Unicode