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ファイルの取り込みまたは出力を行うには

PowerShellCSVファイルを取り込みまたは、出力することはとても簡単です。

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.csvCSVファイルとして出力します。

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

参考書籍

Windows PowerShellクックブック

Windows PowerShellクックブック

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 は、SQLServerWindows認証で接続するため

Windowsにログイン中のユーザーをSQLServerWindows認証ユーザーで登録します。

登録ユーザーには、サーバーロール 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
    {"動いています。"}