sample1PS C:\Documents and Settings\HIRO> Get-ChildItemディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Users\HIRO Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/09/26 23:26 .gimp-2.2 d---- 2007/07/26 22:50 .VirtualBox d---- 2007/06/14 22:50 AAA -a--- 2007/06/23 23:05 619 _viminfo |
sample2C:\Users\HIRO>dirC:\Users\HIRO のディレクトリ 2007/10/31 19:40 <DIR> . 2007/10/31 19:40 <DIR> .. 2007/09/26 23:26 <DIR> .gimp-2.2 2007/07/26 22:50 <DIR> .VirtualBox 2007/06/14 22:50 <DIR> AAA 2007/06/23 23:05 619 _viminfo |
sample3PS C:\Documents and Settings\HIRO> exit |
sample1PS C:\Users\HIRO> Gett-Help Get-PSDrive |
sample2C:\Users\HIRO> Get-Help Get-PSDrive -Detailed |
sample3C:\Users\HIRO> Get-Help Get-PSDrive -full |
sample1PS C:\Users\HIRO> Get-Help Get-*Name Category Synopsis ---- -------- -------- Get-Command Cmdlet マンドレットおよびその他の Windows... Get-Help Cmdlet Windows PowerShell のコマンドレット... Get-History Cmdlet 現在のセッション中に入力したコマンド... Get-PSSnapin Cmdlet コンピュータ上の Windows PowerShell ... Get-EventLog Cmdlet ローカル イベント ログまたはこれらの... Get-ChildItem Cmdlet 1 つ以上の指定された場所から項目およ... 以下省略 |
ショートカットキー | 説明 |
---|---|
[↑]キー | 今までに入力したコマンドレットの履歴を過去方向へさかのぼって表示していきます。 |
[↓]キー | 今までに入力したコマンドレットの履歴を未来方向へ表示していきます。 |
[PgUp]キー | 一番最初に入力したコマンドを表示します |
[PgDn]キー | 一番最後に入力したコマンドを表示します |
[→]キー | 一番最後に入力したコマンドを一文字ずつ補完しながら表示します |
[Home]キー | コマンドラインの先頭へ移動します |
[End]キー | コマンドラインの最後尾へ移動します |
[Ctrl]+[←]キー | カーソルを単語単位で先頭方向へ移動させます |
[Ctrl]+[→]キー | カーソルを単語単位で後方方向へ移動させます |
[Ctrl]+[c]キー | 現在実行中のコマンドをキャンセルします |
[F7]キー | 今までに入力したコマンドの履歴をダイアログボックスで表示させ、矢印キーで選択、[Enter]キーで実行することができます |
[Tab]キー | 現在入力途中であるコマンドを補完して表示させます。[Tab]キーを何度も押すと、現在入力したところまでの文字列から推測できるコマンドの候補が次々表示されます |
sample1PS C:\Users\HIRO> Clear-Host[Enter] |
項目 | 略称 |
---|---|
G et | g |
S et/td> | s |
G et- I tem | gi |
S et- I tem | si |
G et- L ocation | gl |
S et- L ocation | sl |
G et- C ommand | gl |
S et- C ommand | sl |
sample1PS C:\Users\HIRO> Get-Alias lsCommandType Name Definition ----------- ---- ---------- Alias ls Get-ChildItem |
sample2PS C:\Windows> aliasCommandType Name Definition ----------- ---- ---------- Alias ac Add-Content Alias asnp Add-PSSnapin Alias clc Clear-Content Alias cli Clear-Item Alias clp Clear-ItemProperty Alias clv Clear-Variable : 以下省略... |
sample1C:\Users\HIRO> Set-Alias -Name gh -Value Get-Help |
sample1PS C:\Users\HIRO> Set-Alias den calc |
sample1PS C:\Users\HIRO> remove-item alias:ls |
sample1PS C:\Users\HIRO> Get-Command | Out-Host -PagingCommandType Name Definition ----------- ---- ---------- Cmdlet Add-Content Add-Content [-Path] <String[]> [-Value] <Object[... Cmdlet Add-History Add-History [[-InputObject] <PSObject[]>] [-Pass... Cmdlet Add-Member Add-Member [-MemberType] <PSMemberTypes> [-Name]... Cmdlet Add-PSSnapin Add-PSSnapin [-Name] <String[]> [-PassThru] [-Ve... Cmdlet Clear-Content Clear-Content [-Path] <String[]> [-Filter <Strin... : 省略 : <Space> 次のページ、<CR> 次の行、Q 終了 |
sample2PS C:\Users\HIRO> Get-Command | moreCommandType Name Definition ----------- ---- ---------- Cmdlet Add-Content Add-Content [-Path] |
sample1PS C:\Users\HIRO> Get-Command | Out-File -FilePath C:\CommandList.txt |
sample2PS C:\Users\HIRO> Get-Command | Out-File -FilePath C:\CommandList.txt -Encoding Ascii |
sample1PS C:\Work2> Get-PSDriveName Provider Root CurrentLocation ---- -------- ---- --------------- A FileSystem A:\ Alias Alias C FileSystem C:\ Work2 cert Certificate \ D FileSystem D:\ E FileSystem E:\ Env Environment Function Function HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE T FileSystem T:\ U FileSystem U:\ V FileSystem V:\ Variable Variable W FileSystem W:\ X FileSystem X:\ Y FileSystem Y:\ Z FileSystem Z:\ |
sample2PS HKCU:\> Get-ChildItemHive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER SKC VC Name Property --- -- ---- -------- 2 0 AppEvents {} 0 36 Console {ColorTable00, ColorTable01, ColorTable02, ColorTable03...} 12 0 Control Panel {} 0 3 Environment {TEMP, TMP, DXROOT} 4 0 EUDC {} |
sample1PS C:\Users\HIRO> Set-Location C:PS C:\Users\HIRO> |
sample2PS C:\Users\HIRO> Set-Location HKCU:PS HKCU:\> |
sample3PS HKCU:\> Get-ChildItemHive: Microsoft.PowerShell.Core\Registry::HKEY_CURRENT_USER SKC VC Name Property --- -- ---- -------- 2 0 AppEvents {} 0 36 Console {ColorTable00, ColorTable01, ColorTable02, ColorTable03...} 12 0 Control Panel {} 0 3 Environment {TEMP, TMP, DXROOT} 4 0 EUDC {} 1 6 Identities {Identity Ordinal, Migrated7, Last Username, Last User ID...} 3 0 Keyboard Layout {} 0 0 Network {} 4 0 Printers {} 48 0 Software {} 1 0 System {} 0 1 SessionInformation {ProgramCount} 1 8 Volatile Environment {LOGONSERVER, USERDOMAIN, USERNAME, USERPROFILE...} |
sample1PS C:\Work> Set-Location -Path .. -PassThruPath ---- C:\ PS C:\> |
Restricted | 構成ファイルの読み込みやスクリプトの実行を行いません。 既定値は "Restricted" です。 |
AllSigned | すべてのスクリプトと構成ファイルが信頼された発行元によって署名されていることを要求します (ユー ザーがローカル コンピュータに書き込むスクリプトを含む)。 |
RemoteSigned | インターネットからダウンロードされたすべてのスクリプトおよび構成ファイルが、信頼された発行元によって署名されていることを要求します。 |
Unrestricted | すべての構成ファイルを読み込み、すべてのスクリプトを実行します。 インターネットからダウンロ ードされた署名されていないスクリプトを実行する場合、スクリプトを実行する前に確認を求められます。 |
sample1PS C:\Users\HIRO > Set-ExecutionPolicy RemoteSigned |
sample2PS C:\Users\HIRO > Get-ExecutionPolicyRemoteSigned |
sample1PS C:\Work> .\GetRegSoft.ps1Hive: Microsoft.PowerShell.Core\Registry::hklm\software SKC VC Name Property --- -- ---- -------- 1 0 Acrobat Reader {} 2 0 Adobe {} 9 0 ahead {} 2 0 Analog Devices {} 1 0 Apple Computer, Inc. {} : 以下省略 |
sample1$args[0]$args[1] |
sample2PS C:\Work> ./test1.ps1 3 53 5 |
sample3function Tashizan ($x, $y){return $x + $y } Tashizan $args[0] $args[1] |
sample4PS C:\Work2> ./test2.ps1 3 58 |
sample1function Tashizan ($x, $y){return $x + $y } Tashizan $args[0] $args[1] |
sample2PS C:\Work2> $result = ./test1.ps1 3 2PS C:\Work2> $result 5 |
sample1PS C:\Users\HIRO> $a = "HIRO" |
sample2PS C:\users\HIRO> $aHIRO |
sample3PS C:\Users\HIRO> $a = 3 |
sample4PS C:\Users\HIROKI> $a = Get-DatePS C:\Users\HIROKI> $a 2007年11月18日 21:57:33 |
sample5PS C:\Users\HIROKI> $a = "HIRO"PS C:\Users\HIROKI> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String System.Object PS C:\Users\HIROKI> $a = 3 PS C:\Users\HIROKI> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Int32 System.ValueType PS C:\Users\HIROKI> $a = Get-Date PS C:\Users\HIROKI> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True DateTime System.ValueType |
型 | 例 |
---|---|
byte | [byte] $a = 1 |
int | [int] $a = 3 |
single | [single] $a = 3 |
double | [double] $a = 3.14159 |
string | [string] $a = "HIRO" |
sample1PS C:\Users\HIRO> [System.String] $a = "HIRO"PS C:\Users\HIRO> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String System.Object |
sample1PS C:\Users\HIROKI> $a = 1,2,3,4,5PS C:\Users\HIROKI> $a 1 2 3 4 5 |
sample2PS C:\Users\HIRO> $a.GetType()IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Object[] System.Array |
sample3PS C:\Users\HIRO> $a[2]3 |
sample4PS C:\Users\HIRO> $a[1..3]2 3 4 |
sample5PS C:\Users\HIRO> $a[1,2,4]2 3 5 |
sample6PS C:\Users\HIRO> $a[1] = 5 |
sample1PS C:\Users\HIRO> $a = @(@(1,2), @(3,4)) |
sample2PS C:\Users\HIRO> $a[0][0]1 PS C:\Users\HIRO> $a[0][1] 2 PS C:\Users\HIRO> $a[1][0] 3 PS C:\Users\HIRO> $a[1][1] 4 |
sample3PS C:\Users\HIRO> $a1 2 3 4 |
sample4PS C:\Users\HIRO> $a[0][1] = 5 |
sample1PS C:\Users\HIRO> $a = 1,2,3,4,5PS C:\Users\HIRO> $a.Length 5 |
sample2PS C:\Users\HIRO> $a=@(@(1,2,3),@(4,5,6))PS C:\Users\HIRO> $a.Length 2 PS: C:\Users\HIRO> $a[0].Length 3 PS: C:\Users\HIRO> $a[1].Length 3 |
sample3PS C:\Users\HIRO> $a = 1,2,3,4,5,6,7,8,9,10PS C:\Users\HIRO> $a[3..6].Length 4 PS C:\Users\HIRO> $a[0,2,4,6,8].Length 5 |
sample1PS C:Users\HIRO> $a = {Elephant="象",Tiger="虎",Snake="蛇"} |
sample2PS C:Users\HIRO> $aElephant="象",Tiger="虎",Snake="蛇" |
sample3PS C:Users\HIRO> $a["Tiger"]虎 PS C:Users\HIRO> $a.Tiger 虎 |
sample4PS C:Users\HIRO> $a["Tiger"] = "とら"PS C:Users\HIRO> $a.Tiger = "トラ" |
sample5PS C:\Users\HIRO> $aName Value ---- ----- Tiger 虎 Snake 蛇 Elephant 象 |
sample1PS C:\Users\HIRO> $b = $TRUEPS C:\Users\HIRO> $b.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Boolean System.ValueType |
sample1PS C:\Users\HIRO> $PI = 3.1415 #円周率を設定 |
sample2PS C:\Users\HIRO> $a = "#はダブルクォーテーションの内側に記述された場合は文字です" |
sample1PS C:\Users\HIRO> $a = 0x0fPS C:\Users\HIRO> $a 15 |
sample1PS C:\Users\HIROKI> $a = 3.14e3PS C:\Users\HIROKI> $a 3140 |
sample1PS C:\Users\HIRO> 1KB1024 PS C:\Users\HIRO> 1MB 1048576 PS C:\Users\HIRO> 1GB 1073741824 |
sample2PS C:\Users\HIRO> 1GB / 256MB4 PS C:\Users\HIRO> 1MB / 256KB 4 PS C:\Users\HIRO> 1MB / 128KB 8 |
List1PS C:\Work> Remove-Variable a |
+ | 2つの値を加算する |
- | 一方の値から他方の値を減算する |
- | 値を負の数値に変換する |
* | 2つの値を乗算する |
/ | 2つの値で除算を行う |
% | 除算で発生した余りを返す |
sample1PS C:\Users\HIRO> 2 + 8 / 2 * 314 |
sample2PS C:\Users\HIRO> (1 + 2) * ( 3 + 4 )21 PS C:\Users\HIRO> 1 + 2 * 3 + 4 11 |
= | 指定した値を変数の値に設定します。 |
+= | 指定した値を変数の値に加算するか、指定した値を既存の値に追加します。 |
-= | 指定した値を変数の値から減算します。 |
*= | 指定した値で変数の値を乗算するか、指定した値を既存の値に追加します。 |
/= | 指定した値で変数の値を除算します。 |
%= | 指定した値で変数の値を除算し、余り (法) を変数に代入します。 |
sample1PS C:\Users\HIRO> $a = 3PS C:\Users\HIRO> $a 3 PS C:\Users\HIRO> $b = "HIRO" PS C:\Users\HIRO> $b HIRO PS C:\Users\HIRO> $c = "VB.NET", "C#", "PowerShell" PS C:\Users\HIRO> $c VB.NET C# PowerShell |
sample2PS C:\Users\HIRO> $a = 2PS C:\Users\HIRO> $a += 3 PS C:\Users\HIRO> $a 5 PS C:\Users\HIRO> $b = "Hel" PS C:\Users\HIRO> $b += "lo" PS C:\Users\HIRO> $b Hello |
sample3PS C:\Users\HIROKI> $a = 5PS C:\Users\HIROKI> $a -= 3 PS C:\Users\HIROKI> $a 2 |
sample4PS C:\Users\HIRO> $a = 5PS C:\Users\HIRO> $a *= 3 PS C:\Users\HIRO> $a 15 PS C:\Users\HIRO> $b = "Hello" PS C:\Users\HIRO> $b *= 3 PS C:\Users\HIRO> $b HelloHelloHello |
sample5PS C:\Users\HIRO> $a = 6PS C:\Users\HIRO> $a /= 3 PS C:\Users\HIRO> $a 2 |
sample6PS C:\Users\HIRO> $a = 7PS C:\Users\HIRO> $a %= 3 PS C:\Users\HIRO> $a 1 |
演算子 | 説明 |
---|---|
-and | 論理積 |
-or | 論理和 |
-not | 論理否定 |
! | 論理否定 |
sample1PS C:\Users\HIRO> $a = (2 -gt 1) -and (5 -gt 2)PS C:\Users\HIRO> $a True |
sample2PS C:\Users\HIRO> $a = (2 -gt 1) -or (5 -gt 2)PS C:\Users\HIRO> $a True PS C:\Users\HIRO> $a = (1 -gt 2) -or (2 -gt 5) PS C:\Users\HIRO> $a False |
sample3PS C:\Users\HIRO> $a = -not (2 -gt 1)PS C:\Users\HIRO> $a False |
演算子 | 説明 |
---|---|
-eq | 等しい |
-ne | 等しくない |
-gt | より大きい |
-ge | 以上 |
-lt | より小さい |
-le | 以下 |
-like | ワイルドカードによる比較 |
-notlike | ワイルドカードによる比較 |
-match | 正規表現による比較 |
-nomatch | 正規表現による比較 |
sample1PS C:\Users\HIRO> 5 -eq 5True PS C:\Users\HIRO> 5 -eq 3 False |
sample2PS C:\Users\HIRO> 5 -ne 3True PS C:\Users\HIRO> 3 -ne 3 False |
sample3PS C:\Users\HIRO> 5 -gt 3True PS C:\Users\HIRO> 3 -gt 5 False |
sample4PS C:\Users\HIRO> 3 -ge 2True PS C:\Users\HIRO> 3 -ge 3 True PS C:\Users\HIRO> 3 -ge 4 False |
sample5PS C:\Users\HIRO> 3 -lt 4True PS C:\Users\HIRO> 4 -lt 3 False |
sample6PS C:\Users\HIRO> 2 -le 3True PS C:\Users\HIRO> 3 -le 3 True PS C:\Users\HIRO> 4 -le 3 False |
sample7PS C:\Users\HIRO> "HIRO's,NET" -like "HIRO*"True PS C:\Users\HIRO> "HIRO's,NET" -like "hi*" True PS C:\Users\HIRO> "HIRO's,NET" -clike "hi*" False |
sample8PS C:\Users\HIRO> "HIRO's.NET" -match "[a-z]IRO's.NET"True |
sample9PS C:\Users\HIRO> "HIRO's.NET" -notmatch "[a-z]IRO's.NET"False |
sample1PS C:\Users\HIRO> foreach ( $cnt in 1..5 )>> { >> Write-Host $cnt >> } >> 1 2 3 4 5 |
演算子 | 大文字/小文字 |
---|---|
-replace | 区別しない |
-ireplace | 区別しない |
-creplace | 区別する |
sample1PS C:\Users\HIRO> "HIRO" -replace "I","E"HERO |
sample2PS C:\Users\HIRO> "HIRO" -creplace "i","E"HIRO PS C:\Users\HIRO> "HIRO" -creplace "I","E" HERO |
演算子 | 説明 |
---|---|
-band | ビット AND |
-bor | ビット OR |
sample1PS C:\Users\HIRO> 10 -band 128 |
sample2PS C:\Users\HIRO> 10 -bor 1213 |
演算子 | 説明 |
---|---|
-is | 指定された型である |
-isnot | 指定された型ではない |
sample1PS C:\Users\HIRO> 3 -is [int]True PS C:\Users\HIRO> 3 -is [string] False |
sample2PS C:\Users\HIRO> 3 -isnot [int]False PS C:\Users\HIRO> 3 -isnot [string] True |
演算子 | 説明 |
---|---|
-contains | コレクションに指定した値が含まれている(大文字/小文字を区別しない) |
-notcontains | コレクションに指定した値が含まれていない(大文字/小文字を区別しない) |
sample1PS C:\Users\HIRO> 1,2,3,4,5 -contains 3True PS C:\Users\HIRO> 1,2,3,4,5 -contains 7 False PS C:\Users\HIRO> "HIRO","BANANA","GRAPES" -contains "BANANA" True PS C:\Users\HIRO> "HIRO","BANANA","GRAPES" -contains "APPLE" False |
sample2PS C:\Users\HIRO> 1,2,3,4,5 -notcontains 3False PS C:\Users\HIRO> 1,2,3,4,5 -notcontains 7 True PS C:\Users\HIRO> "HIRO","BANANA","GRAPES" -notcontains "BANANA" False PS C:\Users\HIRO> "HIRO","BANANA","GRAPES" -notcontains "APPLE" True |
演算子 | 説明 |
---|---|
++ | インクリメント |
--/td> | デクリメント |
+ | 正の数を表す |
- | 負の数を表す |
sample1PS C:\Users\HIRO> $a = 1PS C:\Users\HIRO> $a++ PS C:\Users\HIRO> $a 2 |
sample2PS C:\Users\HIRO> $a = 1PS C:\Users\HIRO> $a-- PS C:\Users\HIRO> $a 0 |
sample3PS C:\Users\HIRO> $a =1PS C:\Users\HIRO> +$a 1 |
sample4PS C:\Users\HIRO> $a = 1PS C:\Users\HIRO> -$a -1 |
sample1PS C:\Users\HIRO> if ($a -eq 3) {>> Write-Host '$aは3です' >> } >> $aは3です |
sample2PS C:\Users\HIRO> if ($a -eq 3) {>> >> Write-Host '$aは3です' >> >> } else { >> Write-Host '$aは3ではありません' >> } >> $aは3ではありません |
sample3PS C:\Users\HIRO> if ($a -eq 3) {>> Write-Host '$aは3です' >> } elseif ($a -lt 0) { >> Write-Host '$aは負です' >> } else { >> Write-Host '$aは3以外の正の数です' >> } >> $aは負です |
sample1PS C:\Users\HIRO> $a = 3PS C:\Users\HIRO> switch ($a) { >> 1 { Write-Host "$a は 1です" } >> 2 { Write-Host "$a は 2です" } >> 3 { Write-Host "$a は 3です" } >> 4 { Write-Host "$a は 4です" } >> 5 { Write-Host "$a は 5です" } >> } >> 3 は 3です |
sample2PS C:\Users\HIRO> $a = -3PS C:\Users\HIRO> switch ($a) { >> 1 { Write-Host "$a は 1です" } >> 2 { Write-Host "$a は 2です" } >> 3 { Write-Host "$a は 3です" } >> default { Write-Host "該当する値がありません" } >> } >> 該当する値がありません |
sample3PS C:\Users\HIRO> $a = -3PS C:\Users\HIRO> switch ($a) { >> -1{ Write-Host "$a は -1です"; break } >> -2{ Write-Host "$a は -2です"; break } >> -3{ Write-Host "$a は -3です"; break } >> default{ Write-Host "該当する値はありませんでした"; break } >> } >> -3 は -3です |
sample4PS C:\Users\HIRO> $a = "HIRO"PS C:\Users\HIRO> switch -casesensitive ($a) { >> "hiro" { Write-Host "hiro に一致しました" } >> "HIRO" { Write-Host "HIRO に一致しました" } >> default{ Write-Host "一致しませんでした" } >> } >> HIRO に一致しました |
sample5PS C:\Users\HIRO> $a = "HIRO"PS C:\Users\HIRO> switch -wildcard ($a) { >> "HI*O" { Write-Host "HI*Oに一致しました" } >> default { Write-Host "一致しませんでした"} >> } >> HI*Oに一致しました |
sample6PS C:\Users\HIRO> $a = "HIRO"PS C:\Users\HIRO> switch -regex ($a) { >> "^H.*" { Write-Host "先頭がHです" } >> default { Write-Host "HIROではありません" } >> } >> 先頭がHです |
sample1PS C:\Users\HIRO> $iCnt = 0PS C:\Users\HIRO> while ($iCnt -lt 5) >> { >> $iCnt++ >> Write-Host $iCnt >> } >> 1 2 3 4 5 |
sample2PS C:\Users\HIRO> $iCnt = 0PS C:\Users\HIRO> while ($iCnt -lt 5) >> { >> $iCnt++ >> if ( $iCnt -gt 3 ) { break } >> else { Write-Host $iCnt} >> } >> 1 2 3 |
sample1PS C:\Users\HIRO> for ( $i = 0; $i -lt 5; $i++ )>> { >> Write-Host $i >> } >> 0 1 2 3 4 |
sample1PS C:\Users\HIRO> $weekday = "Mon","Tue","Wed","Thu","Fri"PS C:\Users\HIRO> foreach ($w in $weekday) >> { >> Write-Host $w >> } >> Mon Tue Wed Thu Fri |
sample2PS C:\Users\HIRO> foreach ( $s in Get-Service )>> { >> if ($s.Status -eq "running") >> { >> Write-Host $s.ServiceName >> } >> } >> |
sample3PS C:\Users\HIRO> Get-Service | foreach {>> if ( $_.Status -eq "running") >> { >> Write-Host $_.ServiceName >> } >> } >> |
sample1$a = 0Do { Write-Host $a $a += 1 } while ( $a -lt 5 ) |
sample2PS C:\Work> ./DoWhile.ps10 1 2 3 4 |
sample3$a = 0Do { Write-Host $a $a += 1 } Until ( $a -eq 5 ) |
sample4PS C:\Work2> ./DoUntil.ps10 1 2 3 4 |
sample1function Hello {Write-Output "Hello boys and girls!!" } Hello |
sample2PS C:\Users\HIRO> Set-Location C:\Work ----(1)PS C:\Work> PS C:\Work> ./Hello.ps1 ----(2) Hello boys and girls!! ----(3) |
sample1function GetIncludingTax ($price) {return $price * 1.05 } GetIncludingTax 100 |
sample2PS C:\Users\HIRO> Set-Location C:\Work ----(1)PS C:\Work> PS C:\Work> ./IncludingTax.ps1 ----(2) 105 ----(3) |
sample3function GetIncludingTax {param($price) return $price * 1.05 } GetIncludingTax 100 |
sample1function GetIncludingTax ($price=100) {return $price * 1.05 } GetIncludingTax GetIncludingTax 200 |
sample2PS C:\Users\HIRO> Set-Location C:\Work ----(1)PS C:\Work> PS C:\Work> ./IncludingTax2.ps1 ----(2) 105 ----(3) 210 ----(4) |
sample1function BMI($weight, $height) {return $weight / [math]::pow($height,2) } |
sample2BMI -weight 63 -height 1.63 |
sample3BMI -height 1.63 -weight 63 |
sample1function func {return $args[0] * $args[1] } func 3 2 |
sample2PS C:\Work> ./func.ps16 |
sample1PS C:\Work> function test1 ($x)>> { >> $x = 3 >> } >> PS C:\Work2> $x = 1 ---(1) PS C:\Work2> test1 $x ---(2) PS C:\Work2> $x ---(3) 1 |
sample2PS C:\Work> function test2 ([ref]$x)>> { >> $x.value = 3 >> } >> PS C:\Work2> $x = 1 ---(1) PS C:\Work2> test2 ([ref]$x) ---(2) PS C:\Work2> $x ---(3) 3 |
sample1PS C:\Work> function PrintString {>> foreach ( $a in $input ) >> { >> Write-Host $a >> } >> } >> PS C:\Work2> "Apple", "Orange", "Banana" | PrintString Apple Orange Banana |
sample2function func1{ begin { Write-Host "--Begin--"} process { $input } end { Write-Host "--End--" } } "Apple", "Orange", "Banana" | func1 |
sample3PS C:\Work2> ./test.ps1--Begin-- Apple Orange Banana --End-- |
sample1PS C:\Work2> Get-ChildItem | where { $_.Extension -like "*.txt"}ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work2 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/04 23:14 20 a.txt |
sample2filter TextFile{ if ( $_.Extension -like "*.txt" ) { return $_ } } |
sample3PS C:\Work2> . .\test.ps1PS C:\Work2> Get-ChildItem | TextFile ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work2 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/04 23:14 20 a.txt |
sample1PS C:\Users\HIRO> $a = "test"PS C:\Users\HIRO> Write-Host "$a" test |
sample2PS C:\Users\HIRO> $a = "test"PS C:\Users\HIRO> Write-Host '$a' $a |
sample3PS C:\Users\HIRO> $a = "test"PS C:\Users\HIRO> Write-Host "`$a" $a |
sample4PS C:\Users\HIRO> Write-Host 'Hello "HIRO"'Hello "HIRO" |
sample5PS C:\Work> "HIRO`'s.NET"HIRO's.NET PS C:\Work> "`"HIRO`'s.NET`" is cool." "HIRO's.NET" is cool. |
`' | 単一引用符 |
`" | 二重引用符 |
`0 | Null |
`a | 警告 |
`b | バックスペース |
`f | 用紙送り |
`n | 新しい行 |
`r | キャリッジリターン |
`t | 水平タブ |
`v | 垂直タブ |
sample1PS C:\Work> $a = @">> HIRO`'s.NET のURLは以下のとおりです。 >> http://hiro.wankuma.com/ >> "@ >> PS C:\Work> $a HIRO's.NET のURLは以下のとおりです。 http://hiro.wankuma.com/ |
sample2PS C:\Work2> $a="HIRO`'s.NET のURLは以下のとおりです。`r`n http://hiro.wankuma.com/"PS C:\Work2> $a HIRO's.NET のURLは以下のとおりです。 http://hiro.wankuma.com/ |
sample1PS C:\Work2> $a = "Power", "Shell"PS C:\Work2> $b = [string]::Join("-", $a) PS C:\Work2> $b Power-Shell |
sample2PS C:\Work> $a = "Power" + "Shell"PS C:\Work> $a PowerShell |
sample3PS C:\Work> $a = "HIRO-"PS C:\Work> $a += "NET" PS C:\Work> $a HIRO-NET |
sample4PS C:\Work> $a = "Hiro"PS C:\Work> $a *= 3 PS C:\Work> $a HiroHiroHiro |
sample1PS C:\Work> $a = "Sun.,Mon.,Tue.,Wed.,Thu.,Fri.,Sat."PS C:\Work> $a.split(",") Sun. Mon. Tue. Wed. Thu. Fri. Sat. |
sample1PS C:\Work> $a = [byte][char]"a"PS C:\Work> $a 97 |
sample2PS C:\Work> $a = "a"PS C:\Work> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True String System.Object |
sample3PS C:\Work> $a = [char]"a"PS C:\Work> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Char System.ValueType |
sample4PS C:\Work> $a = [byte][char]"a"PS C:\Work> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Byte System.ValueType |
sample1PS C:\Work> $a = [char]97PS C:\Work> $a a |
sample1PS C:\Work> $a = "abcdefg"PS C:\Work> $a.Length 7 PS C:\Work> "abcdefg".Length 7 |
sample1PS C:\Work> [System.Text.Encoding]::GetEncoding("Shift_Jis").GetByteCount("あいうえお")10 |
sample1PS C:\Work> "abc".ToUpper()ABC |
sample2PS C:\Work> "ABC".ToLower()abc |
sample1PS C:\Work> [reflection.assembly]::LoadWithPartialName("Microsoft.VisualBasic")GAC Version Location --- ------- -------- True v2.0.50727 C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualBasic\8.0.0.0__... |
sample2PS C:\Work> $vbHiragana = [Microsoft.VisualBasic.VbStrConv]::HiraganaPS C:\Work> $vbKatakana = [Microsoft.VisualBasic.VbStrConv]::Katakana |
sample3PS C:\Work> [Microsoft.VisualBasic.Strings]::StrConv("あいうえお", $vbKatakana)アイウエオ |
sample4PS C:\Work> [Microsoft.VisualBasic.Strings]::StrConv("アイウエオ", $vbHiragana)あいうえお |
sample1PS C:\Users\HIRO> $a = "abcdef"PS C:\Users\HIRO> $a.IndexOf("c") 2 |
sample2PS C:\Users\HIRO> $a = "abcdef"PS C:\Users\HIRO> $a.IndexOf("c") 2 |
sample3PS C:\Users\HIRO> $a = "abcdef"PS C:\Users\HIRO> $a.IndexOf("C") -1 |
sample1PS C:\Users\HIRO> $a = "abcdefabcdef"PS C:\Users\HIRO> $a.LastIndexOf("d") 9 |
sample2PS C:\Users\HIRO> "abcdefabcdef".LastIndexOf("d")9 |
sample3PS C:\Users\HIROKI> $a = "abcdefabcdef"PS C:\Users\HIROKI> $a.LastIndexOf("D") -1 |
sample1PS C:\Users\HIRO> $a = "abcdef"PS C:\Users\HIRO> $a.IndexOf("cd") 2 |
sample2PS C:\Users\HIRO> $a = "abcdefg"PS C:\Users\HIRO> $a.Contains("cd") True |
[int] | 32 ビット整数 |
[double] | 倍精度浮動小数点数 |
[single] | 単精度浮動小数点数 |
sample1PS C:\Users\HIRO> $a = "3.14"PS C:\Users\HIRO> $a = [int]$a PS C:\Users\HIRO> $a.GetType() IsPublic IsSerial Name BaseType -------- -------- ---- -------- True True Int32 System.ValueType |
sample1PS C:\Users\HIRO> [int]::Parse("123,456",[System.Globalization.NumberStyles]::AllowThousands)123456 |
sample1PS C:\Users\HIRO> [int]::TryParse("12345",[ref]$a) ---(1)True ---(2) PS C:\Users\HIRO> $a ---(3) 12345 ---(4) |
sample2PS C:\Users\HIRO> [double]::TryParse("123.456", [ref]$a)True PS C:\Users\HIRO> $a 123.456 |
sample1PS C:\Users\HIROKI> $a = 12PS C:\Users\HIROKI> $a.ToString("X") C PS C:\Users\HIROKI> $a.ToString("X2") 0C PS C:\Users\HIROKI> $a.ToString("X4") 000C PS C:\Users\HIROKI> $a.ToString("x") c PS C:\Users\HIROKI> $a.ToString("x2") 0c |
sample1PS C:\Users\HIRO> [System.Convert]::ToInt32("1F",16)31 PS C:\Users\HIRO> [System.Convert]::ToInt32("0x1F",16) 31 |
sample1PS C:\Users\HIRO> [System.Convert]::ToString(10, 2)1010 PS C:\Users\HIRO> [System.Convert]::ToString(15, 2) 1111 |
sample1PS C:\Users\HIRO> [System.Convert]::ToInt32("1010", 2)10 PS C:\Users\HIRO> [System.Convert]::ToInt32("1111", 2) 15 |
sample1PS C:\Users\HIRO> $a = "ABCDEFG"PS C:\Users\HIRO> $a.Remove(3, 2) ABCFG |
sample1PS C:\Users\HIRO> $a = "ABCDEFGHI"PS C:\Users\HIRO> $a.Replace("DEF", "---") ABC---GHI |
sample1PS C:\Users\HIRO> $a = "ABCGHI"PS C:\Users\HIRO> $a.Insert(3, "DEF") ABCDEFGHI |
sample1PS C:\Users\HIRO> $a = "Hello VB.NET"PS C:\Users\HIRO> $a.StartsWith("Hello") True PS C:\Users\HIRO> $a.StartsWith("HELLO") False |
sample1PS C:\Users\HIRO> $a = "Hello VB.NET"PS C:\Users\HIRO> $a.EndsWith("NET") True PS C:\Users\HIRO> $a.EndsWith("net") False |
sample1PS C:\Users\HIRO> $a = " HIRO "PS C:\Users\HIRO> "-" + $a.Trim() + "-" -HIRO- |
sample2PS C:\Users\HIRO> $a = " 'HIRO' "PS C:\Users\HIRO> "-" + $a.TrimStart() + "-" -'HIRO' - |
sample3PS C:\Users\HIRO> $a = " 'HIRO' "PS C:\Users\HIRO> "-" + $a.TrimEnd() + "-" - 'HIRO'- |
sample1PS C:\Users\HIRO> $a = "ABC" ---(1)PS C:\Users\HIRO> $a.PadLeft(6) ABC PS C:\Users\HIRO> $a = "ABC" ---(2) PS C:\Users\HIRO> $a.PadRight(6) + "-" ABC - |
sample2PS C:\Users\HIRO> $a = "ABC" ---(1)PS C:\Users\HIRO> $a.PadLeft(6,"X") XXXABC PS C:\Users\HIRO> $a = "ABC" ---(2) PS C:\Users\HIRO> $a.PadRight(6,"X") ABCXXX |
sample1PS C:\Work> Get-ChildItemディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/12/11 22:05 FolderA d---- 2007/12/11 22:05 FolderB -a--- 2007/11/17 23:25 37 GetChildItem.ps1 -a--- 2007/11/17 23:58 37 GetRegSoft.ps1 -a--- 2006/11/03 21:13 9211 styles.css -a--- 2007/05/08 23:00 32925 style_screen.css -a--- 2007/11/04 23:15 6257 Table.css -a--- 2007/12/10 23:26 34282 test.csv -a--- 2007/10/31 23:44 1655296 Tips20071031.bak |
sample2PS C:\Work> Get-ChildItem *.cssディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006/11/03 21:13 9211 styles.css -a--- 2007/05/08 23:00 32925 style_screen.css -a--- 2007/11/04 23:15 6257 Table.css |
sample3PS C:\Work> Get-ChildItem . -Include *.css -recurseディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work\FolderA Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/11 22:10 0 style1.css -a--- 2007/12/11 22:10 0 style2.css ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work\FolderB Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/11 22:10 0 style3.css -a--- 2007/12/11 22:10 0 style4.css ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006/11/03 21:13 9211 styles.css -a--- 2007/05/08 23:00 32925 style_screen.css -a--- 2007/11/04 23:15 6257 Table.css |
sample4PS C:\Work> Get-ChildItem -path C:\Work2\*.ps1, C:\Work3\*.ps1ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work2 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/04 16:46 109 BMI.ps1 -a--- 2007/12/04 16:52 78 BMI2.ps1 -a--- 2007/12/06 10:10 66 DoLoop.ps1 -a--- 2007/12/06 9:57 66 DoWhile.ps1 -a--- 2007/12/04 17:14 41 func.ps1 -a--- 2007/12/03 16:23 85 Hello.ps1 -a--- 2007/12/03 17:26 118 IncludingTax.ps1 -a--- 2007/12/04 17:14 41 Triangle.ps1 ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/12 9:57 0 Test.ps1 |
sample1PS C:\Work> Get-ChildItem -exclude *.ps1ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/12/11 22:10 FolderA d---- 2007/12/11 22:11 FolderB -a--- 2006/11/03 21:13 9211 styles.css -a--- 2007/05/08 23:00 32925 style_screen.css -a--- 2007/11/04 23:15 6257 Table.css -a--- 2007/12/10 23:26 34282 test.csv -a--- 2007/10/31 23:44 1655296 Tips20071031.bak |
sample2PS C:\Work> Get-ChildItem -exclude *.ps1, *.cssディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/12/11 22:10 FolderA d---- 2007/12/11 22:11 FolderB -a--- 2007/12/10 23:26 34282 test.csv -a--- 2007/10/31 23:44 1655296 Tips20071031.bak |
sample3PS C:\Work> Get-ChildItem *.* | Select-Object Name, LengthName Length ---- ------ GetChildItem.ps1 37 GetRegSoft.ps1 37 styles.css 9211 style_screen.css 32925 Table.css 6257 test.csv 34282 Tips20071031.bak 1655296 |
sample4PS C:\Work> $a = Get-ChildItem *.cssPS C:\Work> $a ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2006/11/03 21:13 9211 styles.css -a--- 2007/05/08 23:00 32925 style_screen.css -a--- 2007/11/04 23:15 6257 Table.css PS C:\Work> $a.Length 3 |
sample1PS C:\Work> "abc" > sample1.txt |
sample2PS C:\Work> $a = @">> HIRO`'s.NET のURLは以下のとおりです。 >> http://hiro.wankuma.com/ >> "@ > HIRO_URL.txt >> |
sample1PS C:\Work> "abc" | Out-File Test.txt |
sample2PS C:\Work> "あいうえお" | Out-File sample.txt -encoding UTF8 |
sample3PS C:\Work> "あいうえお" | Out-File sample.txt -encoding UTF8 (1)PS C:\Work> Get-Content sample.txt (2) あいうえお PS C:\Work> "かきくけこ" | Out-File sample.txt -encoding UTF8 -append (3) PS C:\Work> Get-Content sample.txt (4) あいうえお かきくけこ |
sample1PS C:\Work> "ABCDEF" | Out-File sample.txt -NoClobberOut-File : ファイル C:\Work\sample.txt は既に存在しますが、NoClobber が指定されました。 発生場所 行:1 文字:20 + "ABCDEF" | Out-File <<<< sample.txt -NoClobber |
sample2PS C:\Work> Get-Process | Out-File Process.txt -width 30 (1)PS C:\Work> Get-Content Process.txt (2) 警告: 4 個の列が表示に収まらないため、削除されました。 Handles NPM(K) PM(K) WS(K) ------- ------ ----- ----- 104 5 1316 640 66 3 1472 488 76 3 2084 604 256 38 5724 968 317 7 4436 320 192 5 4160 476 117 5 3248 3232 265 11 13588 15864 791 7 8836 10628 215 13 2812 3920 |
sample1PS C:\Work> Copy-Item C:\Work\A.txt C:\Work2\A.txt |
sample2PS C:\Work> Copy-Item C:\Work\A.txt C:\Work2\B.txt |
sample3PS C:\Work> Copy-Item C:\Work\A.txt C:\Work2\A.txt -Confirm確認 この操作を実行しますか? 対象 "項目: C:\Work\A.txt コピー先: C:\Work2\A.txt" に対して操作 "ファイルのコピー" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): N |
sample4PS C:\Work> Copy-Item C:\Work\*.txt C:\Work2 |
sample1PS C:\Work> Move-Item C:\Work\*.txt C:\Work2 |
sample2PS C:\Work> Move-Item C:\Work\A.txt C:\Work2\A.txt |
sample3PS C:\Work> Move-Item C:\Work\A.txt C:\Work2\A.txt -force |
sample4PS C:\Work> Move-Item C:\Work\A.txt C:\Work2\A.txt -confirm確認 この操作を実行しますか? 対象 "項目: C:\Work\A.txt 移動先: C:\Work2\A.txt" に対して操作 "ファイルの移動" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): |
sample1PS C:\Work> Remove-Item C:\Work\A.txt |
sample2PS C:\Work> Remove-Item *.txt |
sample3PS C:\Work3> Remove-Item *.txt -Confirm確認 この操作を実行しますか? 対象 "C:\Work3\Process.txt" に対して操作 "ファイルの削除" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): Y |
sample4PS C:\Work3> Get-ChildItem ---(1)ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/13 15:46 14 file01.txt -a--- 2007/12/13 15:46 14 file02.txt -a--- 2007/12/13 15:46 14 file03.txt -a--- 2007/12/13 15:46 14 folder01.txt -a--- 2007/12/13 15:46 14 folder02.txt -a--- 2007/12/13 15:46 14 folder03.txt PS C:\Work3> Remove-Item *.txt -exclude folder*.txt ---(2) PS C:\Work3> Get-ChildItem ---(3) ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work3 Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/13 15:46 14 folder01.txt -a--- 2007/12/13 15:46 14 folder02.txt -a--- 2007/12/13 15:46 14 folder03.txt |
sample5PS C:\Work> Remove-Item Test.txt ---(1)Remove-Item : 項目 C:\Work\Test.txt を削除できません: 操作を実行するために十分なアクセス許可がありません。 発生場所 行:1 文字:12 + Remove-Item <<<< Test.txt PS C:\Work3> Remove-Item Test.txt -force ---(2) |
sample1PS C:\Work> Test-Path C:\Work\Test.txtTrue |
sample1PS C:\Work> Get-ItemProperty Test.txtディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2007/12/13 15:46 14 Test.txt |
sample2PS C:\Work> $(Get-ItemProperty Test.txt).CreationTime2007年8月28日 14:56:10 |
sample3PS C:\Work> $(Get-ItemProperty Test.txt).LastWriteTime2007年12月13日 15:46:50 |
sample1PS C:\Work> Set-ItemProperty Test.txt -name LastWriteTime -value $(Get-Date) |
sample2PS C:\Work> Set-ItemProperty Test.txt -name CreationTime -value $(Get-Date) |
d | ディレクトリ |
a | アーカイブ |
r | 読み取り専用 |
h | 隠しファイル |
s | システムファイル |
sample1PS C:\Work> Get-ChildItemディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/11/09 11:02 ACS001 d---- 2007/08/28 14:53 ACS002 -a--- 2007/06/22 14:28 720788 BioClient.zip -a--- 2007/09/10 10:00 302 compile.sql -a--- 2007/08/02 15:40 436 result.xml |
sample2PS C:\Work> $fileattr = New-Object System.IO.FileAttributes ---(1)PS C:\Work> $fileattr = [System.IO.File]::GetAttributes("C:\Work\Test.txt") ---(2) PS C:\Work> $fileattr ---(3) Archive ---(4) |
sample3function global:Get-FileAttributes(){ Param([String]$filepath) $fileattr = New-Object System.IO.FileAttributes $fileattr = [System.IO.File]::GetAttributes($filepath) Write-Host $fileattr } |
sample4PS C:\Work> Get-FileAttributes C:\Work\Test2.txtReadOnly, Hidden, Archive |
アーカイブ | Archive |
読み取り専用 | Readonly |
隠しファイル | Hidden |
システムファイル | System |
sample1PS C:\Users\HIRO> Set-ItemProperty -path "C:\Work\Test.txt" -name Attributes -value "Hidden" |
sample2PS C:\Work> Set-ItemProperty -path "C:\Work\Test.txt" -name Attributes -value "Readonly,Hidden"PS C:\Work> Get-ItemProperty -path "C:\Work\Test.txt" ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- --rh- 2007/12/17 16:20 14 Test.txt |
sample1PS C:\Work> $(Get-ChildItem "HIRO1.mdf").Length2293760 |
KB | キロバイト |
MB | メガバイト |
GB | ギガバイト |
sample2PS C:\Work> 1KB ---(1)1024 PS C:\Work> 2KB ---(2) 2048 PS C:\Work> 1MB ---(3) 1048576 PS C:\Work> 1GB ---(4) 1073741824 |
sample3PS C:\Work> $(Get-ChildItem "HIRO1.mdf").Length / 1MB2.1875 |
sample1PS C:\Work> $(Get-ChildItem "HIRO1.mdf").get_Extension().mdf |
sample1PS C:\Work> $(Get-ChildItem "HIRO1.mdf").FullNameC:\Work\HIRO1.mdf |
sample1PS C:\Work> $(Get-ChildItem "HIRO1.mdf").DirectoryNameC:\Work |
sample1PS C:\Work> $(Get-ChildItem "C:\Work\HIRO1.mdf").NameHIRO1.mdf |
sample1PS C:\Work> [System.IO.Path]::ChangeExtension("sample1.txt",".log")sample1.log |
sample2PS C:\Work> $oldfile = "sample1.txt" ---(1)PS C:\Work> $newfile = [System.IO.Path]::ChangeExtension($oldfile, ".log") ---(2) PS C:\Work> Rename-Item $oldfile $newfile ---(3) |
sample.txtABCDE-FGHIJ-KLMNO |
List1PS C:\Work> $(Get-Content "C:\Work\sample.txt") -replace "FGHIJ","XXXXX" > sample_new.txt |
List2PS C:\Work> $(Get-Content "C:\Work\sample.txt") -replace "FGHIJ","XXXXX" > "C:\Work\sample.txt"Get-Content : 別のプロセスで使用されているため、プロセスはファイル 'C:\Work\sample.txt' にアクセスできません。 発生場所 行:1 文字:15 + $(Get-Content <<<< "C:\Work\sample.txt") -replace "FGHIJ","XXXXX" > "C:\Work\sample.txt" |
sample_new.txtABCDE-XXXXX-KLMNO |
List3PS C:\Work> $file_contents = $(Get-Content "C:\Work\sample.txt") -replace "FGHIJ","XXXXX"PS C:\Work> $file_contents > "C:\Work\sample.txt" |
Replace-Content.ps1#===============================================================================# Replace-Content: ファイル内の指定文字列を置換する # Param: # $filepath : ファイルパス # $rep1 : 置換対象文字列 # $rep2 : 置換後の文字列 # # 使用例 # #sample.txtのファイル内の"AAA"という文字列を"BBB"に置換する # Get-Content "C:\Work\sample.txt" "AAA" "BBB" # # copyright HIRO's.NET(http://hiro.wankuma.com/) #=============================================================================== function global:Replace-Content { Param([string]$filepath, [string]$rep1, [string]$rep2) if ( $(test-path $filepath) -ne $True ) { Write-Error "存在しないパスです" return } $file_contents = $(Get-Content $filepath) -replace $rep1, $rep2 $file_contents > $filepath } |
List4PS C:\Work> Replace-Content "C:\Work\sample.txt" "AAA" "BBB" |
List1PS C:\Work> Rename-Item Test.txt -newName Test01.txt |
List1PS C:\Work> Get-Content Test.txt |
List2PS C:\Work> Get-Content Test.txt -totalCount 10 |
List1PS C:\Work> "I love PowerShell." > Test.txt |
List2PS C:\Work> Add-Content Test.txt $(Get-Date) |
Test.txtI love PowerShell.2008/01/09 15:13:43 |
List3Add-Content *.txt $(Get-Date).ToString() |
List4PS C:\Work4> Add-Content *.txt $(Get-Date).ToString() -exclude Test03.txt |
List1PS C:\Work> Select-String -path *.txt -pattern "the"Test02.txt:5:the Test04.txt:1:the |
List1PS C:\Work> Select-String -path *.txt -pattern "the"Test02.txt:5:the Test04.txt:1:the |
List1PS C:\Work> $(Get-Content Test01.txt | Measure-Object).Count2 |
Get-LineCoun.ps1#===============================================================================# Get-LineCount: 指定したファイルの行数を取得する # Param: # $filepath : 行数カウントを行うファイルのパス # # 使用例 # Get-LineCount Test.txt # # ヘルプを見る場合は # Get-LineCount /? # # copyright HIRO's.NET(http://hiro.wankuma.com/) #=============================================================================== function global:Get-LineCount { Param ([string]$filepath) #ヘルプの参照か? if ( $filepath -eq "/?" ) { $helpmsg = @" 書式`r`n Get-LineCount ファイル名 `r`n 使用例`r`n #Test.txtの行数を取得 Get-LineCount `"Test.txt`" #ヘルプを参照する Get-LineCount /? "@ Write-Host $helpmsg return } $MeasureObject = Get-Content $filepath | Measure-Object return $MeasureObject.count } |
List1PS C:> New-Item -path C:\ -name Work -type directoryディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2008/01/22 15:38 Work |
List2PS C:> New-Item -path C:\ -name $(Get-Date).ToString("yyyyMMdd") -type directoryディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2008/01/22 15:47 20080122 |
List1PS C:> Move-Item -path C:\Work -Destination C:\Work2 |
List1PS C:\Work> Remove-Item -path C:\Work5 -recurse -force |
List2PS C:\Work> Remove-Item -path C:\Work5 -recurse -force -confirm確認 この操作を実行しますか? 対象 "C:\Work5" に対して操作 "ディレクトリの削除" を実行しています。 [Y] はい(Y) [A] すべて続行(A) [N] いいえ(N) [L] すべて無視(L) [S] 中断(S) [?] ヘルプ (既定値は "Y"): |
List1PS C:\Work> Copy-Item C:\Work -destination C:\Work2 -recurse |
List1PS C:\Work3> Test-Path C:\WorkTrue |
List1PS C:\Users\HIRO> (Get-Itemproperty C:\Work).CreationTime2007年6月4日 23:28:11 |
List2PS C:\Users\HIRO> (Get-Itemproperty C:\Work).set_CreationTime($(Get-Date)) |
List3PS C:\Users\HIRO> $dt = Get-Date "2008/02/01 10:00:00" |
List4PS C:\Users\HIRO> (Get-Itemproperty C:\Work).set_CreationTime($dt) |
List1PS C:\Users\HIRO> (Get-ItemProperty C:\Work).LastWriteTime2008年1月30日 23:10:47 |
List2PS C:\Users\HIRO> (Get-Itemproperty C:\Work).set_LastWriteTime($(Get-Date)) |
List3PS C:\Users\HIRO> $dt = Get-Date "2008/02/01 10:00:00" |
List4PS C:\Users\HIRO> (Get-Itemproperty C:\Work).set_LastWriteTime($dt) |
List1PS C:\Users\HIRO> (Get-ItemProperty C:\Work).LastAccessTime2008年1月30日 23:10:47 |
List2PS C:\Users\HIRO> (Get-Itemproperty C:\Work).set_LastAccessTime($(Get-Date)) |
List3PS C:\Users\HIRO> $dt = Get-Date "2008/02/01 10:00:00" |
List4PS C:\Users\HIRO> (Get-Itemproperty C:\Work).set_LastAccessTime($dt) |
List1PS C:\Work3> (Get-Location).Drive.RootC:\ |
List2PS C:\Work> [reflection.assembly]::LoadWithPartialName("System.IO") |
List3PS C:\Work> [System.IO.Directory]::GetDirectoryRoot("C:\Work")C:\ PS C:\Work> [System.IO.Directory]::GetDirectoryRoot("F:\Work") F:\ |
List2PS C:\Work> [reflection.assembly]::LoadWithPartialName("System.IO") |
List2PS C:\Work> [System.IO.Directory]::GetDirectories("C:\Work")C:\Work\256835_PSTemplates C:\Work\ACS001 C:\Work\ACS002 C:\Work\ACS003 C:\Work\ACS004 C:\Work\ACS005 |
List1PS C:\Work> Get-ChildItem -path C:\Work | where { $_.mode -match "d" }ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2007/12/25 10:59 256835_PSTemplates d---- 2007/11/09 11:02 ACS001 d---- 2007/08/28 14:53 ACS002 d---- 2007/08/28 14:53 ACS003 d---- 2007/08/28 14:53 ACS004 d---- 2007/08/28 14:53 ACS005 d---- 2007/08/28 14:54 Backup |
List1PS C:\Work> Get-PSDriveName Provider Root ---- -------- ---- A FileSystem A:\ Alias Alias C FileSystem C:\ cert Certificate \ D FileSystem D:\ E FileSystem E:\ Env Environment F FileSystem F:\ Function Function G FileSystem G:\ HKCU Registry HKEY_CURRENT_USER HKLM Registry HKEY_LOCAL_MACHINE S FileSystem S:\ T FileSystem T:\ U FileSystem U:\ V FileSystem V:\ Variable Variable W FileSystem W:\ X FileSystem X:\ Y FileSystem Y:\ Z FileSystem Z:\ |
List2PS C:\Work> Get-PSDrive | Where { $_.Provider -match "FileSystem"}Name Provider Root ---- -------- ---- A FileSystem A:\ C FileSystem C:\ D FileSystem D:\ E FileSystem E:\ F FileSystem F:\ G FileSystem G:\ S FileSystem S:\ T FileSystem T:\ U FileSystem U:\ V FileSystem V:\ W FileSystem W:\ X FileSystem X:\ Y FileSystem Y:\ Z FileSystem Z:\ |
List1PS C:\Work> [reflection.assembly]::LoadWithPartialName("System.Environment") |
メンバ名 | 説明 |
---|---|
ApplicationData | 現在のローミング ユーザーのアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。
ローミング ユーザーは、ネットワーク上の複数のコンピュータで作業します。ローミング ユーザーのプロファイルはネットワーク上のサーバーで保持され、ユーザーがログオンするとシステムに読み込まれます。 |
CommonApplicationData | すべてのユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。 |
CommonProgramFiles | アプリケーション間で共有されるコンポーネント用のディレクトリ。 |
Cookies | インターネット cookies の共通リポジトリとして機能するディレクトリ。 |
Desktop | 物理的なファイル システム上の場所ではない論理的なデスクトップ。 |
DesktopDirectory | デスクトップ上のファイル オブジェクトを物理的に格納するために使用されるディレクトリ。
仮想フォルダであるデスクトップ フォルダ自体とこのディレクトリ フォルダを混同しないようにしてください。 |
Favorites | ユーザーのお気に入り項目の共通リポジトリとして機能するディレクトリ。 |
History | インターネットの履歴項目の共通リポジトリとして機能するディレクトリ。 |
InternetCache | 一時インターネット ファイルの共通リポジトリとして機能するディレクトリ。 |
LocalApplicationData | 現在の非ローミング ユーザーが使用するアプリケーション固有のデータの共通リポジトリとして機能するディレクトリ。 |
MyComputer | マイ コンピュータ フォルダ。
メモ マイ コンピュータ フォルダに対するパスが定義されていないので、MyComputer定数は、常に空の文字列 ("") を生成します。 |
MyDocuments | マイ ドキュメント フォルダ。 ; |
MyMusic | マイ ミュージック フォルダ。 |
MyPictures | マイ ピクチャ フォルダ。 |
Personal | ドキュメントの共通リポジトリとして機能するディレクトリ。 |
ProgramFiles | プログラム ファイル ディレクトリ。 |
Programs | ユーザーのプログラム グループを格納するディレクトリ。 |
Recent | ユーザーが最近使用したドキュメントを格納するディレクトリ。 |
SendTo | [送る] メニュー項目を格納するディレクトリ。 |
StartMenu | [スタート] メニュー項目を格納するディレクトリ。 |
Startup | ユーザーの [スタート アップ] プログラム グループに対応するディレクトリ。
ユーザーが Windows NT 以降のバージョンの Windows にログオンするか、それを起動するか、または Windows 98 を起動すると、これらのプログラムが起動されます。 |
System | System ディレクトリ。 |
Templates | ドキュメント テンプレートの共通リポジトリとして機能するディレクトリ。 |
List2C:\Work> [System.Environment]::getFolderPath([System.Environment+SpecialFolder]::MyDocuments)C:\Documents and Settings\HIRO\My Documents |
List1PS C:\Work> Join-Path C:\Work BackupC:\Work\Backup |
List2PS C:\Work> Join-Path C:\Work\ \BackupC:\Work\Backup |
List3PS C:\Work> $a = Join-Path C:\Work (Get-Date).ToString("yyyyMMdd")PS C:\Work> New-Item -path $a -type directory ディレクトリ: Microsoft.PowerShell.Core\FileSystem::C:\Work Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2008/02/15 14:06 20080215 |
Lsit1PS C:\Work> Split-Path "C:\Work" -QualifierC: |
List1PS C:\Work> Split-Path "C:\Test\Logs\Pass1.log" -ParentC:\Test\Logs |
List1PS C:\Work> Split-Path "C:\Test\Logs\Pass1.log" -leafPass1.log |
List2PS C:\Work> Split-Path "C:\Test\Logs" -leafLogs |
List1PS C:\Work> split-path ".\My Pictures\*.jpg" -IsAbsoluteFalse |
List2PS C:\Work> split-path "C:\Users\Hiro\My Pictures\*.jpg" -IsAbsoluteTrue |
List1PS C:\Work> Test-Path "C:\Work"True PS C:\Work> Test-Path "C:\WorkWork" False |
List1PS C:\Work> Test-Path "C:\Work" -IsValidTrue PS C:\Work> Test-Path "C:\Work\\Directory" False |
List1PS C:\Work> [xml]$doc = Get-Content "C:\Work\Test.xml" |
List2PS C:\Work> [xml]$doc = Get-Content "C:\Work\Test.xml" -encoding UTF8 |
List1PS C:\Work> $strXml = @">> <?xml version='1.0' ?> >> <personal_data> >> <zip_code>012-3456</zip_code> >> <address>1-1, Tokyo, Japan</address> >> <name>HIRO</name> >> </personal_data> >> "@ >> |
List2PS C:\Work> $xmlDoc = [xml]$strXml |
List3PS C:\Work> $xmlDoc.Save("C:\Work\Test.xml") |
Test.xml<?xml version='1.0'?><personal_data> <zip_code>012-3456</zip_code> <address>1-1, Tokyo, Japan</address> <name>HIRO</name> </personal_data> |
List1PS C:\Work> $SaveFile = "C:\Work\UTF8.xml"PS C:\Work> [System.Text.Encoding]::UTF8 |
List2PS C:\Work> $Encoding = [System.Text.Encoding]::GetEncoding("Shift_Jis") |
List3PS C:\Work> $strXml = @">> <?xml version='1.0' ?> >> <personal_data> >> <zip_code>012-3456</zip_code> >> <address>1-1, Tokyo, Japan</address> >> <name>HIRO</name> >> </personal_data> >> "@ >> |
List4PS C:\Work> $xmlDoc = [xml]$strXml |
List5PS C:Work> $xmlWriter = New-Object System.Xml.XmlTextWriter($SaveFile, $Encoding) |
List6PS C:\Work> $XmlDoc.Save($xmlWriter)PS C:\Work> $xmlWriter.Close() |
List1PS > $filename = $(Get-Date).ToString("yyyyMMdd_hhmmss") + ".txt" |
Get-DateFilename.ps1#===============================================================================# Get-DateFilename: 現在日時でファイル名を作成した文字列を返す # Param: # $extension : ファイル名につける拡張子(ドットは付けても付けなくても良い) # # 使用例 # #現在日時でテキストファイル名を作成する # Get-DateFileName ".txt" # # ヘルプを見る場合は # Get-DateFileName /? # # copyright HIRO's.NET(http://blog.hiros-dot.net/) #=============================================================================== function global:Get-DateFileName { Param ([string]$extension) #ヘルプの参照か? if ( $extension -eq "-?" ) { $helpmsg = @" 書式`r`n Get-DateFileName`" 付加する拡張子`"`r`n `r`n 使用例`r`n #現在日時でテキストファイル名を作成する Get-DateFileName `".txt`" #ヘルプを参照する Get-DateFileName /? "@ Write-Host $helpmsg return } #パラメータが指定されていて且つ先頭にドットがない場合 if ( ($extension.length -gt 0) -and (-not $extension.StartsWith(".")) ) { #ドット + 拡張子 $extension = "." + $extension } return $($(Get-Date).ToString("yyyyMMdd_hhmmss") + $extension) } |
List2PS > Get-DateFileName ".txt" |
List3PS > Get-DateFileName -? |
Change-Extension.ps1#===============================================================================# Change-Extension: ファイルの拡張子を変更する # Param: # $path : 拡張子を変更するファイル # $newExtension: 変更後の拡張子 # $echo : "on"を指定すると変更履歴を表示。規定値は"off" # # 使用例 # #sample1.txt の拡張子を.bakに変更する # Change-Extension "sample1.txt" "bak" # # #sample1.txt と sample2.txt の拡張子を.bakに変更する # Change-Extension "sample1.txt","sample2.txt" "bak" # # ヘルプを見る場合は # Change-Extension -? # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Change-Extension { Param ([String[]]$path, [String]$newExtension, [String]$echo="off") #ヘルプの参照か? if ( $path -eq "-?" -or $newExtension -eq "-?" -or $echo -eq "-?" ) { $helpmsg = @" 書式`r`n Change-Extension [`$path], [`$newExtension], [`$echo ]`r`n パラメータ`r`n `$path 拡張子を変更する項目のパスを指定します。`r`n `$newExtension 変更後の拡張子を指定します`r`n `$echo 変更履歴を表示する場合は`"on`"を指定します。規定値は`"off`"です。`r`n `r`n 使用例`r`n #sample1.txt の拡張子を.bakに変更する Change-Extensio `"sample1.txt`" `"bak`" #sample1.txt と sample2.txt の拡張子を.bakに変更する Change-Extensio `"sample1.txt`",`"sample2.txt`" `"bak`" #変更履歴を表示する Change-Extension "sample1.txt" "bak" "on" #ヘルプを参照する Get-DateFileName /? "@ Write-Host $helpmsg return } foreach ( $file in $path ) { #拡張子返還後のファイル名を取得 $newfile = [System.IO.Path]::ChangeExtension($file, $newExtension) #ファイル名を変更する if ( Test-Path $file ) { Rename-Item $file $newfile # $echo が "on"なら変換結果を表示 if ( $echo -eq "on" ) { Write-Host ($file + " --> " + $newfile) } } elseif ( $echo -eq "on" ) { Write-Host ($file + " は存在しませんでした") } } } |
List1PS > Change-Extension "sample1.txt" "bak" |
List2PS > Change-Extension "sample1.txt","sample2.txt" "bak" |
List3PS > Change-Extension -? |
List1PS > $webClient = new-object System.Net.WebClientPS > $webClient.DownloadFile("http://hirosdot.net/index.html", "C:\Work\index.html") |
Download-File.ps1#===============================================================================# Download-File: HTTPダウンロードする # Param: # $url : ダウンロードするファイルURL # $SaveDir : 保存先ディレクトリ(省略した場合はカレントディレクトリ) # $filename : 保存ファイル名(省略した場合はダウンロードしたファイル名となる) # # ヘルプを見る場合は # Download-File /? # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Download-File { Param ([string]$url, [string]$SaveDir, [string]$filename) #ヘルプの参照か? if ( $url -eq "-?" ) { $helpmsg = @" 書式`r`n Download-File [`$url] [[`$SaveDir]] [[`$filebame]]`r`n パラメータ`r`n `$url ダウンロードするファイルURL`r`n `$SaveDir ダウンロードしたファイルを保存するディレクトリ 省略した場合はカレントディレクトリに保存します`r`n `$filename 保存ファイル名 省略した場合はダウンロードしたフィル名となります`r`n `r`n 使用例`r`n # http://hiros-dot.net/index.html をダウンロードする # この場合はカレントディレクトリに index.html というファイル名で保存される Download-File "http://hiros-dot.net/index.html" #指定したディレクトリに保存する Download-File "http://hiros-dot.net/index.html" "C:\Work" #指定したディレクトリに名前を付けて保存する #この場合は C:\Work に sample1.html という名前で保存する Download-File "http://hiros-dot.net/index.html" "C:\Work" "sample1.html" #ヘルプを参照する Get-DateFileName /? "@ Write-Host $helpmsg return } $webClient = new-object System.Net.WebClient #保存先が指定されていない場合 if ( $SaveDir.Length -eq 0 ) { #カレントディレクトリを保存先にする $SaveDir = $(get-location).Path } #保存ファイル名が指定されていない場合 if ( $filename.Length -eq 0 ) { #指定されたURLからファイル名を取得 $uri = new-object Uri($url) $filename = $uri.Segments[$uri.Segments.Length-1] } if ( $filename -eq "/" ) { Write-Host "ダウンロードできません。`r`nURLはファイル名を含めて指定してください!!" -foregroundcolor red return } #保存先パス文字列の作成 $filePath = [System.IO.Path]::Combine($SaveDir, $filename) #ダウンロードする $webClient.DownloadFile($url,$filePath) } |
List2Download-File "http://hiros-dot.net/index.html" |
List3PS > Download-File "http://hiros-dot.net/index.html" "c:\Work" |
List4PS > Download-File "http://hiros-dot.net/index.html" "C:\Work" "sample1.html" |
List5PS > Download-File -? |
Get-LineCount#===============================================================================# Get-LineCount: 指定したファイルの行数を取得する # Param: # $filepath : 行数カウントを行うファイルのパス # # 使用例 # Get-LineCount Test.txt # # ヘルプを見る場合は # Get-LineCount /? # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Get-LineCount { Param ([string]$filepath) #ヘルプの参照か? if ( $filepath -eq "/?" ) { $helpmsg = @" 書式`r`n Get-LineCount ファイル名 `r`n 使用例`r`n #Test.txtの行数を取得 Get-LineCount `"Test.txt`" #ヘルプを参照する Get-LineCount /? "@ Write-Host $helpmsg return } $MeasureObject = Get-Content $filepath | Measure-Object return $MeasureObject.count } |
List1PS C:\Users\HIRO> Get-LineCount "Test.txt"12 |
List2PS > Get-LineCount -? |
Export-OracleDataXml.ps1#===============================================================================# Export-OracleDataXml: データを取得してXMLファイルへ保存する(Oracle) # # 使用例 # PS > Export-OracleDataXml # PS > DataSource: データソース名 # PS > User ID: ユーザーID # PS > Password: パスワード # PS > Query String: クエリ文字列 # PS > Save Path: 保存先を指定 # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Export-OracleDataXml { #===== 必要情報をユーザーから取得する ===== $DataSource = Read-Host "Data Source" $UserID = Read-Host "User ID" $Password = Read-Host "Password" -assecurestring $QueryString = Read-Host "Query String" $SavePath = Read-Host "Save Path" #保存先パスに"\"が含まれていない場合(つまりファイル名のみが指定されていた場合)は #絶対パスにする(ファイル名のみが指定された場合、カレントディレクトリに保存するため) if ( $SavePath.IndexOf("\") -eq -1 ) { $SavePath = $(Join-Path $(Get-Location).Path $SavePath) } #===== newpopsさんのblog参照 http://d.hatena.ne.jp/newpops/20050923/p1 ===== #SecureStringからパスワード文字列を取得する $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) $pass = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr) #===== Oracleからのデータ取得とファイルへの保存 ===== [reflection.assembly]::LoadWithPartialName("System.Data.OracleClient") $ConnectionString = "Data Source=" + $DataSource + ";User ID=" + $UserID + ";Password=" + $Pass + ";Integrated Security=no;" $OraConn = New-Object System.Data.OracleClient.OracleConnection($ConnectionString) $dtSet = New-Object System.Data.DataSet $OraDa = New-Object System.Data.OracleClient.OracleDataAdapter($QueryString, $OraConn) $OraDa.Fill($dtSet) $dtSet.WriteXml($SavePath) } |
List1PS C:\Work> Export-OracleDataXml |
List2Data Source: YourServerUser ID: scott Password: ***** Query String: select * from emp SavePath: C:\Work\emp.xml |
Convert-ToStringBSTR.ps1#===============================================================================# Convert-ToStringBSTR: SecurityString文字列を解読した値を返す # # 使用例 # PS > Convert-ToStringBSTR $SecurityString # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Convert-ToStringBSTR { Param([System.Security.SecureString]$SecureString) $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($SecureString) $pass = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr) return $pass } |
List1PS > $pass = Read-Host "パスワードを入力" -AsSecureStringパスワードを入力: **** |
List2PS > Convert-ToStringBSTR $passhiro |
Export-OracleDataXml2.ps1#===============================================================================# Export-OracleDataXml2: データを取得してXMLファイルへ保存する(Oracle) # # 使用例 # PS > Export-OracleDataXml # PS > DataSource: データソース名 # PS > User ID: ユーザーID # PS > Password: パスワード # PS > Query String: クエリ文字列 # # copyright HIRO's.NET(http://hiros-dot.net.com/) #=============================================================================== function global:Export-OracleDataXml2 { #===== 必要情報をユーザーから取得する ===== $DataSource = Read-Host "Data Source" $UserID = Read-Host "User ID" $Password = Read-Host "Password" -assecurestring $QueryString = Read-Host "Query String" #===== newpopsさんのblog参照 http://d.hatena.ne.jp/newpops/20050923/p1 ===== #SecureStringからパスワード文字列を取得する $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) $pass = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr) #===== Oracleからのデータ取得 ===== [reflection.assembly]::LoadWithPartialName("System.Data.OracleClient") $ConnectionString = "Data Source=" + $DataSource + ";User ID=" + $UserID + ";Password=" + $Pass + ";Integrated Security=no;" $OraConn = New-Object System.Data.OracleClient.OracleConnection($ConnectionString) $dtSet = New-Object System.Data.DataSet $OraDa = New-Object System.Data.OracleClient.OracleDataAdapter($QueryString, $OraConn) $OraDa.Fill($dtSet) #===== Formの作成 ===== [reflection.assembly]::LoadWithPartialName("System.Windows.Forms") $form = New-Object System.Windows.Forms.Form $form.Text = $DataSource + "@" + $UserID $form.Width = 500 $form.Height = 400 #===== DataGridViewの作成 ===== $dgvOracle = New-Object System.Windows.Forms.DataGridView $dgvOracle.Dock = [System.Windows.Forms.DockStyle]::Fill $dgvOracle.DataSource = $dtSet.Tables[0] $form.Controls.Add($dgvOracle) #===== Panelの作成 ===== $panel1 = New-Object System.Windows.Forms.Panel $form.Controls.Add($panel1) $panel1.Dock = [System.Windows.Forms.DockStyle]::Bottom $panel1.Height = 30 #===== [XMLへ保存]ボタンの作成 ===== $btnExport = New-Object System.Windows.Forms.Button $btnExport.Location = New-Object System.Drawing.Point(324, 4) $btnExport.Text = "XMLへ保存" $btnExport.anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Right $btnExport.Add_Click( { #===== ファイル保存ダイアログを作成 ===== $dlgSave = New-Object System.Windows.Forms.SaveFileDialog $dlgSave.DefaultExt = "XML" $dlgSave.Filter = "XMLファイル(*.xml)|*.xml" if ( $dlgSave.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK ) { #===== データを保存する ===== $dtSet.WriteXml($dlgSave.Filename) } }) $panel1.Controls.Add($btnExport) #===== [閉じる]ボタンの作成 ===== $btnClose = New-Object System.Windows.Forms.Button $btnClose.Location = New-Object System.Drawing.Point(405, 4) $btnClose.Text = "閉じる" $btnClose.anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Right $btnClose.Add_Click({$form.Close()}) $panel1.Controls.AddRange($btnClose) #===== Formを表示 ===== $form.ShowDialog() } |
List1$form = New-Object System.Windows.Forms.Form |
List2#コントロールの作成$control = New-Object System.Windows.Forms.コントロール #コントロールの配置 $form.ControlAdd($control) #パネルへの配置 $panel1.Controls.Add($btnExport) |
List3$button.Add_Click({ここに処理したいスクリプトを記述}) |
View-Xml.ps1#===============================================================================# View-Xml: XMLファイルを読み込んで表示する(簡易XMLViewer) # # 使用例 # PS > View-Xml XMLファイルパス # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:View-Xml { Param($XmlFile) #パスが指定されているか? if ( $XmlFile.Length -eq $null ) { Write-Host "XMLファイルを指定してください" return } #存在するパスか? if ( -not $(Test-Path $XmlFile) ) { Write-Host $XmlFile + "は存在しません" return } #データセットを作成し、XMLファイルを読み込む $dtSet = New-Object System.Data.DataSet $dtSet.ReadXml($XmlFile) #===== Formの作成 ===== [reflection.assembly]::LoadWithPartialName("System.Windows.Forms") $form = New-Object System.Windows.Forms.Form $form.Text = $XmlFile $form.Width = 500 $form.Height = 400 #===== DataGridViewの作成 ===== $dgvXML = New-Object System.Windows.Forms.DataGridView $dgvXML.Dock = [System.Windows.Forms.DockStyle]::Fill $dgvXML.DataSource = $dtSet.Tables[0] $form.Controls.Add($dgvXML) #===== Panelの作成 ===== $panel1 = New-Object System.Windows.Forms.Panel $form.Controls.Add($panel1) $panel1.Dock = [System.Windows.Forms.DockStyle]::Bottom $panel1.Height = 30 #===== [閉じる]ボタンの作成 ===== $btnClose = New-Object System.Windows.Forms.Button $btnClose.Location = New-Object System.Drawing.Point(405, 4) $btnClose.Text = "閉じる" $btnClose.anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Right $btnClose.Add_Click({$form.Close()}) $panel1.Controls.AddRange($btnClose) #===== Formを表示 ===== $form.ShowDialog() } |
使用例PS> View-Xml "XMLファイルのパス" |
Resize-Image.ps1[void][reflection.assembly]::LoadWithPartialName("System.Drawing")[void][reflection.assembly]::LoadWithPartialName("System.Drawing.Imaging") #=============================================================================== # Resize-Image: 画像ファイルをリサイズする(jpegのみ) # # パラメータ # -srcFile : リサイズ元画像ファイルパス # -dstFile : リサイズ後画像ファイルパス # -width : リサイズ後の幅 # -height : リサイズ後の高さ # -quality : 品質 # Default 既定の補間モード # Low 低品質補間 # High 高品質補間 # NearestNeighbor 最近傍補間 # Bilinear 双一次補間 # Bicubic 双三次補間 # HighQualityBilinear 高品質双一次補間 # HighQualityBicubic 高品質双三次補間 # 使用例 # PS > Resize-Image "C:\Work\AAA.jpg" "C:\Work\BBB.jpg" 600 480 "HighQualityBicubic" # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Resize-Image { Param([string]$srcFile, [string]$dstFile, [int]$width=0, [int]$height=0, [string]$quality="Default") #元画像ファイルの存在確認 if ( (Test-Path $srcFile) -eq $False ) { Write-Host "リサイズ元画像が存在しません。パスを確認してください!!" return } #元画像の読み込み $srcImg = New-Object System.Drawing.Bitmap($srcFile) $newWidth = 0 $newHeight = 0 #受け取った引数から、新しいサイズを決定する if ( $width -gt 0 -and $height -eq 0 ) { $newWidth = $width $newHeight = $srcImg.Height / ($srcImg.Width / $newWidth) } elseif ( $height -gt 0 -and $width -eq 0 ) { $newHeight = $height $newWidth = $srcImg.Width / ($srcImg.Height / $newHeight) } elseif ( $width -gt 0 -and $height -gt 0 ) { $newWidth = $width $newHeight = $height } else { Write-Host "画像サイズを指定してください" return } $dstImg = New-Object System.Drawing.Bitmap($srcImg, $newWidth, $newHeight) $g = [System.Drawing.Graphics]::FromImage($dstImg) #画像品質の設定 switch ($quality) { "Default" #既定の補間モード {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::Default} "Low" #低品質補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::Low} "High" #高品質補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::High} "NearestNeighbor" #最近傍補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::NearestNeighbor} "Bilinear" #双一次補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::Bilinear} "Bicubic" #双三次補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::Bicubic} "HighQualityBilinear" #高品質双一次補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBilinear} "HighQualityBicubic" #高品質双三次補間 {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic} default {$g.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::Default} } #リサイズ画像を作成し保存する $g.DrawImage($srcImg, 0, 0, $newWidth, $newHeight) $dstImg.Save($dstFile, [System.Drawing.Imaging.ImageFormat]::Jpeg) #オブジェクトの破棄 $srcImg.Dispose() $dstImg.Dispose() } |
使用方法PS > Resize-Image "リサイズ元画像ファイルのパス" "リサイズ後の画像保存先パス" 幅 高さ 品質 |
Typing.ps1#===============================================================================# Typing: CNNの記事(RSS)を利用してタイピング練習する # # パラメータ # なし # 使用例 # PS > Typing # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Typing { #=============================================== # 初期化処理 #=============================================== #背景色を保存 $bgclr = $host.UI.RawUI.BackgroundColor #前景色を保存 $fgclr = $host.UI.RawUI.ForegroundColor #問題の色を定義 $questioncolor = [System.ConsoleColor]::Red $rss_list = @( @("Top Stories","http://rss.cnn.com/rss/cnn_topstories.rss"), @("World", "http://rss.cnn.com/rss/edition_world.rss"), @("Africa","http://rss.cnn.com/rss/edition_africa.rss"), @("Americas","http://rss.cnn.com/rss/edition_americas.rss"), @("Asia","http://rss.cnn.com/rss/edition_asia.rss"), @("Europe","http://rss.cnn.com/rss/edition_europe.rss"), @("Middle East","http://rss.cnn.com/rss/edition_meast.rss"), @("U.S.","http://rss.cnn.com/rss/edition_us.rss"), @("World Business","http://rss.cnn.com/rss/edition_business.rss"), @("Technology","http://rss.cnn.com/rss/edition_technology.rss"), @("Science & Space","http://rss.cnn.com/rss/edition_space.rss"), @("Entertainment","http://rss.cnn.com/rss/edition_entertainment.rss"), @("World Sport","http://rss.cnn.com/rss/edition_sport.rss"), @("Football","http://rss.cnn.com/rss/edition_football.rss"), @("Travel","http://rss.cnn.com/rss/edition_travel.rss"), @("Video","http://rss.cnn.com/rss/cnn_freevideo.rss"), @("Most Recent","http://rss.cnn.com/rss/cnn_latest.rss"), @("Art of Life Blog","http://rss.cnn.com/rss/edition_artoflife.rss"), @("Business Traveller Blog","http://rss.cnn.com/rss/edition_richardquest.rss"), @("In the Field Blog","http://rss.cnn.com/rss/edition_inthefield.rss"), @("World's Untold Stories Blog","http://rss.cnn.com/rss/edition_untoldstories.rss"), @("The Screening Room Blog","http://rss.cnn.com/rss/edition_screeningroom.rss"), @("Marketplace Middle East Blog","http://rss.cnn.com/rss/edition_mme.rss"), @("Inside the Middle East Blog","http://rss.cnn.com/rss/edition_ime.rss") ) Write-Host "タイピング練習の問題カテゴリーを選択してください" for ( $icnt = 0; $icnt -lt $rss_list.Length; $icnt++) { Write-Host $($($icnt + 1).ToString("0#") + ": " + $rss_list[$icnt][0]) } #ユーザーが選択したカテゴリ番号を保存 $no = Read-Host if ( $([int]$no) -le 0 -and $([int]$no) -gt $rss_list.Length ) { Write-Host "Noを正しく入力してね" return } Write-Host "データダウンロード中..." $feed = [xml](new-object system.net.webclient).downloadstring($rss_list[$no - 1][1]) $contents =$($feed.rss.channel.item | Select-Object -property DESCRIPTION) Write-Host "データダウンロード完了" foreach ( $content in $contents ) { $a += $content.Description.split(" ") } Write-Host "[Enter]キーを押すと始まります" Read-Host $start = Get-Date $i = 0 $score = 0 $miss = 0 #背景色を黒にする $host.UI.RawUI.BackgroundColor = [System.ConsoleColor]::Black cls while ( $(Get-Date).subtract($start).TotalSeconds -lt 60) { #問題を出す if ( $a[$i] -ne " ") { Write-Host $a[$i] -foregroundcolor $questioncolor #ユーザーからの回答入力を取得する $Host.UI.RawUI.ForegroundColor = $fgclr $input = Read-Host cls #正解したらスコアをカウントアップ if ( $input -ceq $a[$i] ) { $score += 10 } else { $miss++; Write-Host "`a" cls } } $i++ #問題がなくなったら終了 if ($a.Length -eq $i ) { break; } } Write-Host $("start: " + $start) Write-Host $("end: " + $(Get-Date)) Write-Host $("Score: " + $Score) Write-Host $("Miss:" + $miss) } |
Get-HostByName.ps1#===============================================================================# Get-HostByName: IPアドレスからホスト名を取得する # # 使用例 # PS > Get-HostByName 10.84.5.10 # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== [void][reflection.assembly]::LoadWithPartialName("System.Net") function global:Get-HostByName { Param ([string]$IPAddress) $hostEntry = New-Object System.Net.IPHostEntry $hostEntry = [System.Net.Dns]::GetHostEntry($IPAddress) return $hostEntry.HostName } |
使用例PS > Get-HostByName 203.216.227.176f1.top.vip.tnz.yahoo.co.jp |
Get-HostByAddress.ps1#===============================================================================# Get-HostByAddress: ホスト名からIPアドレスを取得する # # 使用例 # PS > Get-HostByAddress "www.yahoo.co.jp" # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== [void][reflection.assembly]::LoadWithPartialName("System.Net") function global:Get-HostByAddress { Param ([string]$HostName) $hostEntry = New-Object System.Net.IPHostEntry $hostEntry = [System.Net.Dns]::GetHostEntry($HostName) return $hostEntry.AddressList[0].IPAddressToString } |
使用例PS > Get-HostByAddress www.yahoo.co.jp203.216.227.176 |
Get-FirstSunday.ps1#===============================================================================# Get-FirstSunday: 指定した年月の第1日曜日を取得する # # パラメータ: # $Year: 年(省略した場合は現在の年) # $Month: 月(省略した場合は現在の月) # # 使用例1(年月指定) # PS > Get-FirstSunday 2008 2 # # 使用例2(年月省略) # PS > Get-FirstSunday # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Get-FirstSunday { Param ([int]$Year = $(Get-Date).Year, [int]$Month = $(Get-Date).Month) for ( $i = 0; $i -lt 7; $i++ ) { $checkDay = New-Object DateTime($Year, $Month, [int]($i + 1)) if ( $checkDay.DayOfWeek -eq 0 ) { break } } return $i + 1 } |
List1PS > Get-FirstSunday4 |
List2PS > Get-FirstSunday 2008 61 |
Get-LastDay.ps1#===============================================================================# Get-LastDay: 指定した年月の最終日を取得する # # パラメータ: # $Year: 年(省略した場合は現在の年) # $Month: 月(省略した場合は現在の月) # # 使用例1(年月指定) # PS > Get-LastDay 2008 2 # # 使用例2(年月省略) # PS > Get-LastDay # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Get-LastDay { Param ([int]$Year = $(Get-Date).Year, [int]$Month = $(Get-Date).Month) return [System.DateTime]::DaysInMonth($Year, $Month) } |
List1PS > Get-LastDay31 |
List2PS > Get-LastDay 2008 630 |
Get-Calendar.ps1#===============================================================================# Get-Calendar: 指定した年月のカレンダーを表示する # # パラメータ: # $Year: 年(省略した場合は現在の年) # $Month: 月(省略した場合は現在の月) # # 使用例1(年月指定) # PS > Get-Calendar 2008 2 # # 使用例2(年月省略) # PS > Get-Calendar # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Get-Calendar { Param ([int]$Year = $(Get-Date).Year, [int]$Month = $(Get-Date).Month) #表示用年月作成 $DispMonth = New-Object DateTime($Year, $Month, 1) $strDispMonth = ($DispMonth.ToString("MMMM",[System.Globalization.CultureInfo]'en-US') + " " + $Year) #横幅35文字の中間に表示されるようにする Write-Host "" Write-Host $strDispMonth.PadLeft([int](35 - (35 - $strDispMonth.Length) / 2)) $firstSunday = Get-FirstSunday $Year $Month $lastDay = Get-LastDay $Year $Month Write-Host "Sun. Mon. Tue. Wed. Thu. Fri. Sat." # 第1日曜日が"1日"以外の第1週を表示 if ( $firstSunday -ne 1 ) { for ( $i = 1; $i -lt $firstSunday; $i++ ) { $week += $i.ToString(" # "); } $spc = " " $spc *= [int](7 - ( $firstSunday - 1 )) Write-Host ($spc + $week) } #中間週を表示 $loopWeek = [Math]::floor(($LastDay - $firstSunday) / 7) $Day = $firstSunday for ( $weekCnt = 0; $weekCnt -lt $loopWeek; $weekCnt++ ) { $week = ""; for ( $iDay = 0; $iDay -lt 7; $iDay++ ) { if ( $Day -lt 10 ) { $week += $Day.ToString(" # "); } else { $week += $Day.ToString(" ## "); } $Day += 1 } Write-Host ($week) } #最終週を表示 if ( $Day -le $LastDay ) { $week = "" for ( $iDay = $Day; $iDay -le $LastDay; $iDay++ ) { $week += $Day.ToString(" ## "); $Day += 1 } Write-Host ($week) } } |
List1PS > Get-CalendarMay 2008 Sun. Mon. Tue. Wed. Thu. Fri. Sat. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
List2PS > Get-Calendar 2008 6June 2008 Sun. Mon. Tue. Wed. Thu. Fri. Sat. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Get-Calendar2.ps1#===============================================================================# Get-Calendar2: 指定した年月のカレンダーを表示する(色つき版) # # パラメータ: # $Year: 年(省略した場合は現在の年) # $Month: 月(省略した場合は現在の月) # # 使用例1(年月指定) # PS > Get-Calendar2 2008 2 # # 使用例2(年月省略) # PS > Get-Calendar # # copyright HIRO's.NET(http://hiros-dot.net//) #=============================================================================== function global:Get-Calendar2 { Param ([int]$Year = $(Get-Date).Year, [int]$Month = $(Get-Date).Month) #表示用年月作成 $DispMonth = New-Object DateTime($Year, $Month, 1) $strDispMonth = ($DispMonth.ToString("MMMM",[System.Globalization.CultureInfo]'en-US') + " " + $Year) #横幅35文字の中間に表示されるようにする Write-Host "" Write-Host $strDispMonth.PadLeft([int](35 - (35 - $strDispMonth.Length) / 2)) $firstSunday = Get-FirstSunday $Year $Month $lastDay = Get-LastDay $Year $Month Write-Host "Sun." -foregroundcolor Red -noNewline Write-Host " Mon. Tue. Wed. Thu. Fri. " -noNewline Write-Host "Sat." -foregroundcolor Cyan # 第1日曜日が"1日"以外の第1週を表示 if ( $firstSunday -ne 1 ) { for ( $i = 1; $i -lt $firstSunday - 1; $i++ ) { $week += $i.ToString(" # ") } $spc = " " $spc *= [int](7 - ( $firstSunday - 1 )) Write-Host ($spc + $week) -noNewline #土曜日をCyanにする Write-Host ($firstSunday - 1).ToString(" # ") -foregroundcolor Cyan } #中間週を表示 $loopWeek = [Math]::floor(($LastDay - $firstSunday) / 7) $Day = $firstSunday for ( $weekCnt = 0; $weekCnt -lt $loopWeek; $weekCnt++ ) { for ( $iDay = 0; $iDay -lt 7; $iDay++ ) { if ( $Day -lt 10 ) { $strDay = $Day.ToString(" # ") } else { $strDay = $Day.ToString(" ## ") } #日曜日はRed, 土曜日はCyanにする if ($iDay -eq 0 ) { Write-Host $strDay -foregroundcolor Red -noNewline } elseif ($iDay -eq 6 ) { Write-Host $strDay -foregroundcolor Cyan} else { Write-Host $strDay -noNewline } $Day += 1 } #Write-Host ($week) } #最終週を表示 if ( $Day -le $LastDay ) { $week = "" $LastSunday = $Day $Day += 1 for ( $iDay = $Day; $iDay -le $LastDay - 1; $iDay++ ) { $week += $Day.ToString(" ## ") $Day += 1 } #最終週の日曜日の色をRedにする Write-Host $LastSunday.ToString(" ## ") -foregroundcolor Red -noNewline Write-Host $week -noNewline #最終日が土曜日の場合は色をCyanにする if ($LastDay - $LastSunday -eq 6) { Write-Host $LastDay.ToString(" ## ") -foregroundcolor Cyan } else { Write-Host $LastDay.ToString(" ## ") } } } |
View-Calendar.ps1[void][reflection.assembly]::LoadWithPartialName("System.Windows.Forms")#=============================================================================== # View-Calendar: 指定した年月のカレンダーを表示する(GUI版) # # パラメータ: # $Year: 年(省略した場合は現在の年) # $Month: 月(省略した場合は現在の月) # # 使用例1(年月指定) # PS > View-Calendar 2008 2 # # 使用例2(年月省略) # PS > View-Calendar # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:View-Calendar { Param ([int]$Year = $(Get-Date).Year, [int]$Month = $(Get-Date).Month) #===== Formの作成 ===== $form = New-Object System.Windows.Forms.Form $form.Text = "Calendar" $form.Width = 147 $form.Height = 210 $form.FormBorderStyle = [Windows.Forms.FormBorderStyle]::FixedToolWindow #===== MonthCalendarの作成 ===== $cal = New-Object System.Windows.Forms.MonthCalendar $cal.Dock = [System.Windows.Forms.DockStyle]::Fill $cal.SelectionStart = New-Object DateTime($Year, $Month, 1) $cal.SelectionEnd = New-Object DateTime($Year, $Month, 1) $form.Controls.Add($cal) #===== Panelの作成 ===== $panel1 = New-Object System.Windows.Forms.Panel $form.Controls.Add($panel1) $panel1.Dock = [System.Windows.Forms.DockStyle]::Bottom $panel1.Height = 30 #===== [閉じる]ボタンの作成 ===== $btnClose = New-Object System.Windows.Forms.Button $btnClose.Location = New-Object System.Drawing.Point(61, 4) $btnClose.Text = "閉じる" $btnClose.anchor = [System.Windows.Forms.AnchorStyles]::Top -bor [System.Windows.Forms.AnchorStyles]::Right $btnClose.Add_Click({$form.Close()}) $panel1.Controls.Add($btnClose) [void]$form.ShowDialog() } |
List1PS > View-CalendarPS > View-Calendar 2008 6 |
List2$btnClose.Add_Click({$form.Close()}) |
List3$btnClose.Add_Click({$form.DialogResult = "OK"; $form.Close()}) |
List4if ( $form.ShowDialog() -eq "OK" ){ retrurn $cal.SelectionStart.ToString() } |
Color-SrvStatus.ps1#===============================================================================# Color-SrvStatus: サービスのステータス別に色を付ける # # 使用例 # PS > Color-SrvStatus # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Color-SrvStatus { #サービスを取得 $srv = get-service #カウンタの初期化 $iCnt = 0 for ( $iCnt = 0; $iCnt -lt $srv.length; $iCnt++ ) { #各サービスのステータスを判断して色を付ける if ($srv[$iCnt].status -eq "running") {write-host $srv[$iCnt].Name -foregroundcolor "cyan"} elseif ($srv[$iCnt].status -eq "stopped") {write-host $srv[$iCnt].Name -foregroundcolor "red"} else {write-host $srv[$iCnt].Name} $iCnt++ } } |
List1PS > Color-SrvStatus |
Read-MultiLine.ps1#=========================================================================================# Read-MultiLine: コマンドラインから複数行の入力を受け取る # # UPDATE 2008/04/24 Ver.1.0.0 # 2008/05/01 Ver.1.0.1 終了判定文字に1文字以上の文字列を指定できるよう修正 # # copyright HIRO's.NET(http://hiros-dot.net/) #========================================================================================= function global:Read-MultiLine ( [string]$prompt, [string]$endChar = ";" ){ if ($args[0] -eq "-?" ) { Write-Host @" 名前: Read-MultiLine 概要: コマンドラインから複数行文字列を取得します。 構文: Read-MultiLine [-prompt] [-endChar] 使用方法: -------------------------- 例 1 -------------------------- `$a = Read-MultiLine この例はコマンドラインから複数行を取得し行終端が";"の場合に読み取りを中止し結果を返します。 入力の終了を判定する文字は";"が規定値です。 -------------------------- 例 2 -------------------------- `$a = Read-MultiLine -prompt "文字列を入力してください" この例はプロンプトに"文字列を入力してください"と表示した後に入力を受け付けます。 -------------------------- 例 3 -------------------------- `$a = Read-MultiLine -endChar "#" この例は入力の終了を判定する文字を"#"とします。 ユーザー入力の行終端が"#"である場合に、入力を中断し結果を返します -------------------------- 例 4 -------------------------- `$a = Read-MultiLine -endChar "EOF" この例は入力の終了を判定する文字を"EOF"とします。 ユーザー入力の行終端が"EOF"である場合に、入力を中断し結果を返します "@ -foregroundcolor Cyan return } if ( $prompt.Length -gt 0 ){ Write-Host ($prompt + ":") } while(1) { $ip += Read-Host if ($ip.SubString($ip.Length - $endChar.Length) -eq $endChar){ break; } else{$ip += "`n"} } #Write-Host $ip return $ip.Substring(0, $ip.Length - $endChar.Length) } |
List1PS > $inp = Read-MultiLineABC DEF GHI; |
List2PS > $inp = Read-MultiLine "入力してください"入力してください: This is Read-MultiLine Command; |
List3PS > $inp = Read-MultiLine -endChar "#"ABC DEF GHI# |
Write-Log.ps1#===============================================================================# Write-Log: ログを作成する # # 使用例1: # PS > Write-Log "ログを残します" # 使用例2: # PS > Write-Log "ログを残します", "C:\Work\Error.log" # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== function global:Write-Log { Param ( [String]$msg, [String]$LogFile="C:\Work\History.log" ) $write_msg = ((Get-Date).ToString() + "`t" + $msg) Add-Content -Path $LogFile -Value $write_msg } |
List1PS > Write-Log "ログメッセージ" "C:\Log.txt" |
C:\Log.txt2008/05/05 19:19:32 ログメッセージ |
PSOracle.ps1#===============================================================================# Get-OracleConnectionString: PowerShellで独自のOracle関連スクリプトを使用可能にする # # copyright HIRO's.NET(http://hiros-dot.net/) #=============================================================================== #Assemblyのロード [void][reflection.assembly]::LoadWithPartialName("System.Data.OracleClient") function Global:PSOracle { if ($args[0] -eq "-?") { Write-Host @" 名前: PSOracle 概要: PowerShellで独自のOracle関連スクリプトを使用可能にします 構文: PSOracle 使用方法: PS > PSOracle ユーザー名を入力してください: USERNAME パスワードを入力してください: PASSWORD 接続先を入力してください: OracleServer "@ -foregroundcolor Cyan return } #Oracle専用スクリプトファイルを格納しているディレクトリの設定 $OracleScriptPath = $([Environment]::GetFolderPath(`"MyDocuments`"))\WindowsPowerShell\Oracle" #存在するパス? if ( Test-Path $OracleScriptPath ) { #呼び出し演算子(&)を使用して関数を登録 Get-ChildItem $OracleScriptPath -Include "*.ps1" -Recurse -Force | % { &($_.Fullname); } } else { #実行可能なスクリプトがない場合は処理終了 return } #ユーザーから接続先情報を取得する $UserID = Read-Host "ユーザー名を入力してください" $Password = Read-Host "パスワードを入力してください" -assecurestring $DataSource = Read-Host "接続先を入力してください" #変数の作成 Set-Variable -Scope "Global" -Name "OracleDataSource" -value $DataSource Set-Variable -Scope "Global" -Name "OracleUserID" -Value $UserID; Set-Variable -Scope "Global" -Name "OraclePassword" -Value $Password; Set-Variable -Scope "Global" -Name "OracleConnInfo" -Value "$UserID@$DataSource"; $strSQL = "SELECT PRODUCT || 'Release ' || VERSION FROM product_component_version Where UPPER(PRODUCT) LIKE 'ORACLE%'" $ConnectionString = (Get-OracleConnectionString $UserID $Password $DataSource) $OraConn = New-Object System.Data.OracleClient.OracleConnection($ConnectionString) $dtSet = New-Object System.Data.DataSet $OraDa = New-Object System.Data.OracleClient.OracleDataAdapter($strSQL, $OraConn) [void]$OraDa.Fill($dtSet) if ( $dtSet.Tables.Count -gt 0 ) { Write-Host ("`n" + $dtSet.Tables[0].Rows[0][0].ToString() + " - Production`n") } trap [System.Data.OracleClient.OracleException] { Write-Error ("接続に失敗しました。") break; } trap { Write-Error ($Error[0].Exception); break; } } |
List1PS > PSOracle |
List2ユーザー名を入力してください: scottパスワードを入力してください: ***** 接続先を入力してください: server01 Oracle 8i Release 8.1.7.1.1 -Production |
List3PS > PSOracle -? |
Get-OracleConnectionStirng.ps1#================================================================================================# Get-OracleConnectionString: Oracle用接続文字列を作成する # # UPDATE: 2008-04-25 Ver.1.0.0 # # copyright HIRO's.NET(http://hiros-dot.net/) #================================================================================================ function global:Get-OracleConnectionString([string]$UserID, [object]$Password, [string]$DataSource) { if ($args[0] -eq "-?") { Write-Host @" 名前: Get-OracleConnectionString 概要: Oracle用接続文字列を作成します 構文: Get-OracleConnectionString [-UserID] [-Password] [-DataSource] 使用方法: `$ConnString = (Get-OracleConnectString "User" "Password" "ServerName") "@ -foregroundcolor Cyan return } #パスワードがSecureString型の場合はString型にする if ( $Password -is [System.Security.SecureString] ) { $ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Password) $pass = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ptr); } else { $pass = $Password } #接続文字列を作成して返す return "Data Source=$DataSource;User ID=$UserID;Password=$pass;Integrated Security=no;" } |
List1PS > Get-OracleConnectionString scott tiger OraSvr10gData Source=OraSvr10g;User ID=scott;Password=tiger;Integrated Security=no; |
Execute-QueryString.ps1#=========================================================================================# Execute-QueryString: QueryStringを実行し結果をデータセットで返す # # UPDATE: 2008-04-27 Ver.1.0.0 # # copyright HIRO's.NET(http://hiros-dot.net/) #========================================================================================= function global:Execute-QueryString { Param ( [string]$QueryString ) #接続文字列の作成 $ConnectionString = (Get-OracleConnectionString $OracleUserID $OraclePassword $OracleDataSource) #OracleConnectionの作成 $OraConn = New-Object System.Data.OracleClient.OracleConnection($ConnectionString) #データセットの作成 $dtSet = New-Object System.Data.DataSet #QueryStringを実行しデータを取得 $OraDa = New-Object System.Data.OracleClient.OracleDataAdapter($QueryString, $OraConn) [void]$OraDa.Fill($dtSet) return $dtSet } |
desc.ps1#================================================================================================# desc: Oracleのdescコマンド # # UPDATE: 2008-04-28 Ver.1.0.0 # # copyright HIRO's.NET(http://hiros-dot.net/) #================================================================================================ function global:desc ([string]$TABLE_NAME) { $TBL = $TABLE_NAME.ToUpper() #descコマンドを実現させるためのSQL文作成 $QueryString = "SELECT " $QueryString += "COLUMN_ID," $QueryString += "COLUMN_NAME," $QueryString += "DECODE(NULLABLE,'N','NOT NULL') NULLABLE," $QueryString += "DATA_TYPE || '(' || " $QueryString += "DECODE(DATA_PRECISION, NULL, TO_CHAR(DATA_LENGTH)," $QueryString += "DECODE(DATA_SCALE,0," $QueryString += "TO_CHAR(DATA_PRECISION)," $QueryString += "TO_CHAR(DATA_PRECISION) || ',' || TO_CHAR(DATA_SCALE))) || ')' DATATYPE " $QueryString += "FROM " $QueryString += "ALL_TAB_COLUMNS WHERE TABLE_NAME = '$TBL' ORDER BY COLUMN_ID" #DataSetに取得する $dtSet = (Execute-QueryString $QueryString) if ( $dtSet.Tables.Count -gt 0 ) { #format-tableコマンドレットでデータを表示 $dtSet.Tables[0].Rows | format-table } } |
List1PS > desc empCOLUMN_ID COLUMN_NAME NULLABLE DATATYPE --------- ----------- -------- -------- 1 EMPNO NOT NULL NUMBER(4) 2 ENAME VARCHAR2(10) 3 JOB VARCHAR2(9) 4 MGR NUMBER(4) 5 HIREDATE DATE(7) 6 SAL NUMBER(7,2) 7 COMM NUMBER(7,2) 8 DEPTNO NUMBER(2) |
List2PS > desc emp | more |
List3PS > desc emp > C:\Work\emp.txt |
Execute-Query.ps1#=========================================================================================# Execute-Query: QueryStringを実行する # # UPDATE 2008/04/28 Ver.1.0.0 # # copyright HIRO's.NET(http://hiros-dot.net/) #========================================================================================= function global:Execute-Query { #複数行のQueryStringを受け取る $strSQL = Read-MultiLine #QueryStringを実行する $dtSet = Execute-QueryString $strSQL if ( $dtSet.Tables.Count -gt 0 ) { #format-tableコマンドレットでデータを表示 $dtSet.Tables[0].Rows | format-table } } #エイリアス設定 Set-Alias -name EQS -value Execute-Query -scope "Global" |
List1PS > eqsselect * from emp ; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ----- --- --- -------- --- ---- ------ 7369 SMITH CLERK 7902 1980/12/17 ... 800 20 7499 ALLEN SALESMAN 7698 1981/02/20 ... 1600 300 30 7521 WARD SALESMAN 7698 1981/02/22 ... 1250 500 30 7566 JONES MANAGER 7839 1981/04/02 ... 2975 20 7654 MARTIN SALESMAN 7698 1981/09/28 ... 1250 1400 30 7698 BLAKE MANAGER 7839 1981/05/01 ... 2850 30 7782 CLARK MANAGER 7839 1981/06/09 ... 2450 10 7788 SCOTT ANALYST 7566 1987/04/19 ... 3000 20 7839 KING PRESIDENT 1981/11/17 ... 5000 10 7844 TURNER SALESMAN 7698 1981/09/08 ... 1500 0 30 7876 ADAMS CLERK 7788 1987/05/23 ... 1100 20 7900 JAMES CLERK 7698 1981/12/03 ... 950 30 7902 FORD ANALYST 7566 1981/12/03 ... 3000 20 |
List2PS > eqsselect * from emp where JOB='CLERK'; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ----- --- --- -------- --- ---- ------ 7369 SMITH CLERK 7902 1980/12/17 ... 800 20 7876 ADAMS CLERK 7788 1987/05/23 ... 1100 20 7900 JAMES CLERK 7698 1981/12/03 ... 950 30 |