Excelシートコピー時の既に存在する警告を消す
シートコピーでごみがあるため重複警告が沢山でる。
そんなときにはCtrl+F3でごみ名前を消すのだがまだ残っている。
マクロで非表示ごみ名前も出てくるように出来る。
エクセル2013でシートコピー時の「既に存在...」エラーを除去するための
非表示になっている名前を表示する
Public Sub VisibleNames()
Dim name As Object
For Each name In Names
If name.Visible = False Then
name.Visible = True
End If
Next
MsgBox "すべての名前の定義を表示しました。", vbOKOnly
End Sub
コレ実行後にCtrl+F3で名前を表示するとごみが盛りだくさん。
コレを消す!
指定IPからのアクセス以外はBASIC認証
AuthType Basic
AuthName OneTeam
AuthUserFile /home/aaa/p/.htpasswd # これは生成して格納
Require valid-user
Satisfy any
Order deny,allow
Allow from 999.999.999.999 #通したいIP
Allow from 999.999.999.999 #通したいIP
Allow from 999.999.999.999 #通したいIP
Deny from all
.htpasswd の作成は
http://tech-unlimited.com/makehtpasswd.html にて
MySQL リストア時のエンコード指定
mysql -u root --default-character-set=utf8 {DBNAME} < {DUMP_FILENAME}
BOOTSTRAP form-inline効かない
bootstrap は form-inlineの指定はウィンドウが768px以上のときでないと効かない
これらがわかれば色々PowerShellでバッチ作れるメモ
■実行ポリシーの変更
「スクリプトの実行がシステムで無効になっているため..」が出る。
Set-ExecutionPolicy RemoteSigned
Y
でポリシー変更によりPSが実行できるようになる。
■ファイル名
Script.ps1 拡張子が ps1 だ。
コマンドプロンプトより powershell 打ち
PS C:\> より
PS C:\>C:\Script.ps1 で実行
■イベントログへのログ出力機能
if ([System.Diagnostics.EventLog]::SourceExists("ScriptName") -eq $FALSE){
New-EventLog -LogName Application -Source ScriptName
}
Write-EventLog -LogName Application -EntryType Error -Source ScriptName -EventId 901 -Category 0 -Message "Power Shell Error Test"
Write-EventLog -LogName Application -EntryType Warning -Source ScriptName -EventId 901 -Category 0 -Message "Power Shell Warn Test"
Write-EventLog -LogName Application -EntryType Information -Source ScriptName -EventId 901 -Category 0 -Message "Power Shell Info Test"
# ソースを削除する場合
#Remove-EventLog -Source ScriptName
■文字列同士の連結
+演算子で接続
■変数の利用
変数は頭に$を付ける。
$a = 100 という書き方。
連想配列は
$hash_table = @{one = 1; two = 2; three = 3} で初期化$hash_table.Add("four", 4) で追加
$hash_table.Remove("three") で除去
繰り返しは
foreach ($key in $hash_table.Keys) {
$key + ":" + $hash_table[$key]
}存在確認は
$hash_table.ContainsKey("four") でキーにあるか True、なければFalse
■設定ファイルの参照
可能
config.ini に以下のように書いたとして
; configure
name1=value1
name2=value2
name3=value3
function read_ini($filename)
{
$lines = get-content $filename
foreach($line in $lines){
# コメントと空行を除外する
if($line -match "^$"){ continue }
if($line -match "^\s*;"){ continue }$param = $line.split("=",2)
write-host("key : " + $param[0])
write-host("val : " + $param[1])
}
}
read_ini ".\config.ini"
■PSファイルのスケジューラでの実行方法は?
http://www.atmarkit.co.jp/ait/articles/1412/03/news125.html
にある通り、注意が必要らしい
■起動時の引数渡せるか
param($a=1) とやると、起動時に
c:\test\aaa.ps1 150000
とすると$a = 150000 が代入されてくる。
■ディレクトリ参照、ファイル名の降順とかファイルの操作
$hashFileNames =@{}
$path = "C:\test"
$wildcard = 'AAAA-BBBB-*'
$directoryItems = Get-ChildItem -Include $wildcard -Path $path -Recurse | Sort-Object LastWriteTime -Descending
foreach ($item in $directoryItems) {
if ($item.Attributes -eq "Directory") {
continue
}
Write-Output $item.Name
$fullpath = foreach-object -process { $item.FullName }
#Write-Output $fullpath
# 連想配列に追加
$hashFileNames.Add($item.Name, $fullpath)
}
# 連想配列に入っているれば取得
foreach($key in $hashFileNames.Keys){
Write-Host $key " " $hashFileNames[$key]
}
■日付の扱い
$yesterday = (Get-Date).AddDays(-1) これ昨日だ。
$yesterday = (Get-Date).AddDays(-1).ToString("yyyy-MM-dd")
■CSVファイルの参照制御
servers.csv というCSVファイル
hostname os version
- -- -------
server1 ReHat Enterprise Linux 6.5
server2 Windows Server 2012R2を
Import-Csv 'servers.csv' | ForEach-Object {
$_.hostname
}
↑↑↑↑↑↑上記だとUTF-8じゃないと扱えなかった。なので以下で実施。$file = "c:\test\log.csv"
$headerstr = "タイムスタンプ,イベント,アラート,氏名,ログイン"
$header = $headerstr -split ","
$csv = Get-Content $file | ConvertFrom-Csv -Header $header
$csv | ForEach-Object {
Write-Host ("[{0}] {1} - {2}" -f $_."タイムスタンプ", $_."イベント", $_."氏名")
}
■固定長ファイルの編集出力制御
・パディングみたいなのできる?
$testText = 'abc'
$testText.PadRight(10) ⇒ "abc "
$testText.PadLeft(10) ⇒ " abc"で固定長づくりできる。
・テキストファイル出力
# 出力ファイル名
[String]$output_file = "C:\test.txt"
# ファイルストリームをオープン(SJIS..MS932)
$sw = New-Object System.IO.StreamWriter($output_file, $false, [Text.Encoding]::GetEncoding(932))
# テキスト書き込み
$sw.WriteLine("いちぎょうめ")
$sw.WriteLine("にぎょうめ")
$sw.WriteLine("さんぎょうめ")
# ファイルストリームクローズ
$sw.Close()
■FTPファイル転送制御
$user = '
'
$password = ''
$url = 'ftp:///'
$wc = New-Object System.Net.WebClient
$wc.Credentials = New-Object System.Net.NetworkCredential($user,$password)
$wc.BaseAddress = $url
try{
$wc.UploadFile(""," ")
Write-Host "FTP UPLOAD SUCCESS"
} catch [Exception] {
Write-Host "FTP UPLOAD ERROR"
}finally{
$wc.Dispose()
}
■ブール値やNULL の書き方
true : $TRUE
false: $FALSE
null : $NULL
CakePHP IEでSessionが保存されない
恥ずかしながら知らなかった。
ドメインにアンダーバーを利用するとNGとのこと。