Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
Warning: preg_match(): Compilation failed: unrecognized character follows \ at offset 1 in /home/r5652521/public_html/soma-engineering.com/wp-content/themes/affinger/functions.php on line 1548
こんにちは!SEブログの相馬です。
今回は、ファイルやフォルダを作成したりする方法について書いてみました。
システム運用管理の業務をしていますと、何かの処理をさせる為にユーザー のPC の特定の場所にファイルやフォルダを作成したりする事があるかと思います。
PC のキッティング前にそれが分かればキッティング時に行えば良いですが、運用開始後に調査や改善の為に実施する事がしばしばあるかと思いますのでどうしてもキッティング時には行えないわけです。
例えば、何か PC 不具合の調査で特定の処理結果をログに出力したいけど、サーバーにログファイルを置いてログを書き込ませるのではなく、PC 上にログファイルを作成してそこにログを書き込ませるといった事です。また、PC のローカル上で動作させた方が良いバッチがあるとして、バッチファイルをコピーするとかといったイメージです。
そしてログを保管する場所を C ドライブ直下に Log という名前のフォルダを作成し、そこにログファイルを生成させれば良いかと思います。また Log フォルダはユーザーが削除できないよう、アクセス権限を制限しておくべきだと思います。
さて、こういった事を PC 1 台毎に手動で設定するのは気が遠くなる作業ですし、時間の無駄ですので自動化してしまいましょう。
ファイルやフォルダの作成
ファイルやフォルダを作成するには New-Item コマンドレットを使います。
New-Item コマンドレットについては、@IT の記事に分かり易い説明があります。
【 New-Item 】コマンドレット――ファイル/フォルダを新規作成する | @IT
New-Item コマンドレットのオプションは以下の通りです。
オプション | 意味 |
---|---|
-Path | ディレクトリパスを指定 |
-ItemType | 作成する種類を指定 |
-Force | 上書き |
-Value | 文字列を指定 |
フォルダの作成
それでは C ドライブ直下に Log という名前のフォルダを作成してみましょう。-ItemType に Directory を指定するとフォルダになります。
1 2 3 4 5 6 7 8 9 10 11 12 |
$Folder = "C:\" New-Item -Path $Folder -Name "Log" -ItemType Directory # 実行結果 ディレクトリ: C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d----- 2018/08/25 21:24 Log |
ファイルの作成
フォルダを作成したので、今度はそのフォルダの下にファイルを作成してみましょう。-ItemType に File を指定するとファイルになります。
1 2 3 4 5 6 7 8 9 10 |
New-Item -Path "C:\Log\20180825.log" -ItemType File # 実行結果 ディレクトリ: C:\Log Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2018/08/25 21:59 0 20180825.log |
これで C ドライブ直下に Log フォルダが作成されました。今度は作成したフォルダやファイルの名前を変更してみましょう。
フォルダやファイルの名前変更
フォルダ名の変更
それでは作成したフォルダの名前を変更してみます。変更するには Rename-Item コマンドレットを使います。ここでは、上で作成した Log フォルダを Logs にフォルダ名を変更します。
構文:Rename-Item "変更前のフォルダ名" "変更後のフォルダ名"
1 |
Rename-Item "C:\Log" "C:\Logs" |
ファイル名も同じ方法で変更できますので、ここでは割愛します。
フォルダやファイルの変更ができましたので、今度はフォルダを削除してみましょう。
フォルダやファイルの削除
フォルダやファイルを削除するには、Remove-Item コマンドレットを使います。ここでは、Logs フォルダ内にある、ログファイルを削除してみます。フォルダも同じ方法で削除できます。
1 |
Remove-Item "C:\Logs\20180826.log" |
まとめ
以上になります。いかがでしょうか。
フォルダやファイルを自動で作成できますと、色々な用途で使えそうですね。例えば、ユーザーの PC の C ドライブ直下に作業フォルダや Log フォルダを作成したりできます。
フォルダの作成の場合は、Active Directory の GPO でログオン時に処理させるようにすれば良いわけです。また、フォルダの存在有無はスクリプトの最初にチェックするように処理を書いておけば良いでしょう。存在していなければフォルダを作成するといった感じです。
1 2 3 4 5 6 7 8 |
$Folder = "C:\Log" If (Test-Path $Folder) { Write-Output "Log フォルダは既に存在しています。" #Write-Outputは不要ですが一応 Exit } Else { New-Item -Path $Folder -Name "Log" -ItemType Directory } |
それでは最後までお読みいただきありがとうございました!