Powershellで文字コードがShift-Jisのファイルを出力するには
文字コードを指定して、ファイルを出力するには
Add-Content コマンドを使用します。
【構文】 Add-Content -path 出力するファイル名 -value 出力する内容 -encoding 文字コード 【文字コード Shift-jisでファイルを出力する例】 Add-Content -path c:\test.txt -value テストデータ -encoding String
【解説】
- Add-Contentコマンドは、ファイルが存在する場合、新しくファイルを作成してデータを書き込みます。
- ファイルが存在する場合、既存のファイルにデータを追加します。
- ファイルの文字コードをShift-jisにする場合、「-encoding」パラメータに「String」を指定します。
PowerShellでCSVファイルの取り込みまたは出力を行うには
PowerShellでCSVファイルを取り込みまたは、出力することはとても簡単です。
CSVのサンプルファイルとして下記のようなファイルがあったとします。
c:\temp\test.csv
test.csvファイルの中身
col1,col2,col3,col4 a,b,c,d d,e,f,g h,i,j,k
CSVファイルの1行目がヘッダーとなっており、2行目以降がデータです。
区切り文字としてカンマを使用しています。
CSVファイルを取り込むには、Import-Csvコマンドを使用します。
Import-Csv c:\temp\test.csv col1 col2 col3 col4 ---- ---- ---- ---- a b c d d e f g h i j k
取り込んだCSVから特定の項目を抽出するには、Select-Objectコマンドを使用します。
Import-Csv c:\temp\test.csv | Select-Object col1,col2 col1 col2 ---- ---- a b d e h i
さらにデータを条件で抽出したい場合には、Where-Objectコマンドを使用します。
Import-Csv c:\temp\test.csv | Select-Object col1,col2 | Where-Object {$_.col1 -eq "d"} col1 col2 ---- ---- d e
さらに結果をソートする場合は、Sort-Objectコマンドを使用します。
Import-Csv c:\temp\test.csv | Select-Object col1,col2 | Where-Object {$_.col1 -eq "d"} | Sort-Object col1
CSVにデータを出力する場合、Export-Csvコマンドを使用します。
下記の例では、Get-ChildItemコマンドの実行結果をc:\temp\item.csvにCSVファイルとして出力します。
Get-ChildItem | Export-csv c:\temp\item.csv
PowerShellでプロファイルを編集するには
PowerShellには。プロファイルという毎回PowerShell起動時に
読み込まれるファイルがあります。Dosで言うAutoExec.batのようなものです。
プロファイルによく利用する変数、関数、エイリアスを登録し、
自分の利用したいようにカスタマイズすることができます。
新しいプロファイルを作成するには
PowerShellを起動し、下記のコマンドを入力します。
New-Item -tpe file -force $profile
と入力します。既にプロファイルが存在する場合は、そのプロファイルが上書きされます。
プロファイルの場所を確認するには、下記のコマンドを入力します。
$profile
プロファイルを編集するには、下記のコマンドを入力します。
notepad $profile
登録例として、プロンプトに自分のPC名を表示する関数を登録します。
function Prompt{ "PS [$env:COMPUTERNAME] >" }
プロファイルを表示するには、下記のコマンドを入力します。
Get-ChildItem $profile
作成したプロファイルをすぐ有効にするには、下記のコマンドを入力します。
. $profile
参考書籍
- 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/10/23
- メディア: 大型本
- 購入: 4人 クリック: 72回
- この商品を含むブログ (15件) を見る
Administrators 権限を与えたユーザーで、DOSのバッチやPowerShellを実行するには
WindowsServer2008での話です。
BuiltinのAdministratorユーザー以外に
Administratorsグループに属するユーザーを追加し、
そのユーザーでDOSのバッチやPowerShellなど、CUIベースの操作をしようとすると
(例えば、サービスの再起動など。)
「システム エラー 5 が発生しました。」「Access is denied.」
などが表示されます。
これは、ユーザーアカウント制御 (UAC; User Account Control)が邪魔をしているため、
コマンドから実行できません。
GUIベースでは問題なく実行できます。
バッチでサービス起動等を実行するには、
バッチ実行ユーザーのUACを外してあげる必要があります。
UACを外す場合、サーバ再起動が必要になります。
PowerShellでSQLServerAgentのジョブを実行するには
SQLServerの Sqlpsツールを使用してSQLServerAgentのジョブを起動します。
【実行環境】
実行環境は、下記を前提としています。
SQLServer2008 R2 が動作しているWindowsServer上で実行します。
SQLServer Agentサービスが起動されていること。
【事前準備】
sqlps は、SQLServerにWindows認証で接続するため
Windowsにログイン中のユーザーをSQLServerにWindows認証ユーザーで登録します。
登録ユーザーには、サーバーロール public,sysadminを割り当てます。
【実行手順】
コマンドプロンプトやファイル名を指定して実行ダイヤログから
sqlps
と入力します
sqlps の画面で下記コマンドを入力するとSQLServerAgentのジョブを起動することができます。
cd sql\マシン名\インスタンス名\JobServer\jobs dir | where-object{$_.Name -eq “ジョブ名”} | foreach-object{$_.Start()}
例
マシン名:PC1
インスタンス名:DEFAULT
ジョブ名:Test.Subplan_1
の実行コマンド例です。
cd sql\PC1\DEFAULT\JobServer\jobs dir | where-object{$_.Name -eq “Test.Subplan_1”} | foreach-object{$_.Start()}
PowerShell サービスを起動するバッチ
PowerShellでWindwosのサービスを起動するバッチを作成しました。
サービス一覧を取得するには
Get-Service
と入力するとサービスの一覧を取得することができます。
下記のバッチは、"Netlogon"サービスが起動していない場合は、
起動させるというものです。
#PowerShell #NetLogonServiceを起動する $ServiceName = 'Netlogon' #Get-Service if (Get-Service $ServiceName | Where-Object {$_.status -eq "stopped"}) #サービスが止まっている場合は、サービスを起動します。 {Start-Service $ServiceName} else {"動いています。"}