PowerShell
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>シェル]]
--[[CMD]]
--PowerShell
--[[Windows Terminal]]
--[[Azureのシェル]]
--[[スクリプティング]]
---[[BAT]]
---[[VBScript>VBS]]
---PowerShell
---[[Python>Python on Windows]]
* 目次 [#a80353b5]
#contents
* 概要 [#l26e6c22]
PowerShell のトピックを纏めています。
*特徴 [#r9b4dbd1]
-Windows PowerShell - Wikipedia~
https://ja.wikipedia.org/wiki/Windows_PowerShell
**[[オブジェクトベースのシェル>PowerShell オブジェクトベ...
**[[WSH]]を置き換えている。 [#b5759553]
同系列であるから置き換え。
**[[CMD]]を置き換えるものではない。 [#l34fd736]
別物として使用(併用)する必要がある。
-例えば、
--ipconfig などのコマンドを実行すると、おなじみの出力が表...
--netshなどのコマンドを実行して設定するぐらいはPowerShell...
-ただし、Cmd.exeを置き換えるものではない。
--標準出力をテキストとしてパイプできない。
--[[BAT]]の構文を使用できない。
**いつの間にか、Linuxでも利用可能になってた。 [#t9923890]
.NET Coreもそうですが、いつの間にか、Linuxでも利用可能に...
-参考
--PowerShellをLinuxにインストールして試す - Qiita~
https://qiita.com/suzuki-navi/items/3a3fd6ef736bc2a13036
--Linuxユーザーも「PowerShell」を無視できない理由:~
いまさら聞けないPowerShell入門(後編) - TechTargetジャパ...
https://techtarget.itmedia.co.jp/tt/news/1709/08/news01.h...
--Linux への PowerShell のインストール - PowerShell | Mic...
https://docs.microsoft.com/ja-jp/powershell/scripting/ins...
* 環境構築 [#ibc8b5fb]
PowerShell の各バージョンは、以下のOSに添付されているか、...
-新しいOSほど、新しいPowerShellに対応します。
-また、旧OSでは、新しいPowerShellのサポートがありません。
-PowerShellのバージョンに依存しそうな場合は、対象とするOS...
**インストール [#i32722ea]
-いつの間にか、7.1になってた...。
-潔く、MSIでインストール(Windows)
-参考
--[[Azure PowerShellのインストール>Azure PowerShell#ldae3...
--Windows への PowerShell のインストール - PowerShell | M...
https://docs.microsoft.com/ja-jp/powershell/scripting/ins...
--GitHub - PowerShell/PowerShell: PowerShell for every sy...
https://github.com/PowerShell/PowerShell#get-powershell
**[[プロキシ設定>プロキシの設定方法#vd4565aa]] [#h639929f]
*基本 [#g002dfa5]
** 実行方法 [#v29d2093]
インタラクティブな逐次実行は、
-スタートメニューからPowerShell コマンドプロンプトを開い...
-コマンドプロンプトから PowerShell.exe を実行しても、
どちらの方法でも PowerShell を手で([[シェル]]として)逐...
** 出力フォーマット [#o0a78f66]
Get-XXXXXコマンドの出力配下のようなパイプでフォーマット可...
***Format-Wide [#l5c09806]
Get-XXXXX | Format-Wide
***Format-List [#e8a7436b]
Get-XXXXX | Format-List
***Format-Table [#q16bfec3]
Get-XXXXX | Format-Table
*スクリプティング [#t9f7195f]
** 変数 [#n585d270]
***定義 [#y9071564]
変数は $ で始まる 英数字記号 の名前を使用します。~
後述の様に スコープ($global:, $script:) をつけることも出...
下の様に ${ } で囲むと、名前にスペースを含むこともできま...
PS E:\temp> ${var test 1} = 123
PS E:\temp> $a = ${var test 1} + "123"
PS E:\temp> $a
246
PS E:\temp>
未初期化の初期状態は $null と同じです。~
文脈によっては 0 や "" (空文字列) と解釈されます。
PS E:\temp> $var001
PS E:\temp> $var001 -eq 0
False
PS E:\temp> $var001 -eq $null
True
PS E:\temp> $a1 = $var001 + 2
PS E:\temp> $a1
2
PS E:\temp> $a1 = $var001 + "abc"
PS E:\temp> $a1
abc
PS E:\temp>
上の例では、変数 $var001 は未初期化なので、 $null と同じ...
変数をそのまま出力すると、$null は 何も表示されません。~
また、 -eq 比較演算子を使って、 0 や $null と比較すると、...
~
未初期化変数は、数値を足し算した場合は、0 が、文字列を連...
Set-StrictMode を使用すると、未初期化変数を参照する際にエ...
PS E:\temp> Set-StrictMode -Version 1.0
PS E:\temp> $a1 = $var001 + 2
変数 '$var001' は、設定されていないために取得できません。
発生場所 行:1 文字:14
+ $a1 = $var001 <<<< + 2
+ CategoryInfo : InvalidOperation: (var001...
tion
+ FullyQualifiedErrorId : VariableIsUndefined
PS E:\temp>
***スコープ [#y88b36f0]
PowerShellの変数は、変数を使用する場所がスコープの範囲に...
-functionの中、
-PowerShellモジュールの中、
-[[.ps1スクリプトの中>PowerShellのPS1ファイルの作成と実行...
などがスコープの境界になります。
***参考 [#b14a0b57]
-変数について
--Windows Powershell 変数の機能~
http://lab.technet.microsoft.com/ja-jp/magazine/cc162486
-Set-StrictModeについて、
--「get-help Set-StrictMode」
--または、下のページ~
---Set-StrictMode~
http://technet.microsoft.com/ja-jp/library/dd347614.aspx
-変数のスコープについて、
--「get-help about_Scopes」
--または、下のページ~
---about_Scopes~
http://technet.microsoft.com/ja-jp/library/dd315289.aspx
** if文 [#b3a3550b]
if文は、下の様に -で始まる比較演算子を使います。
$var1 = sub2 $arg1 $arg2
if ( ( $var1 -eq 1 ) -or ( $var1 -gt 10 ) ) {
...
}
条件のANDやORは、 それぞれを ( ... )で囲んで -and や -or ...
論理のANDやORによるビット演算は、 -band や -bor の -b で...
$file = get-item $dirname
if ( $file.Attributes -band [System.IO.FileAttributes]:...
...
}
bit演算結果が0以外の場合は、真 とみなされます。
if文の演算子の詳細は、powershellコマンドプロンプトの中で ...
** 配列 [#gfd0e13d]
配列は、以下の形式で定義できます。
$array1 = @()
$array2 = @(1,2,3)
$array3 = 1,2,3
( ) で囲まなくても、「,」で並べると、配列になります。~
コマンドや関数への引数を「,」で区切った場合も配列になるの...
$ret1 = sub1 2,3,4 # これは @(2,3,4) の配列で引数1つ
$ret2 = sub1 2 3 4 # これは 引数3つ
$ret3 = sub1 2,3 4 # これは @(2,3)の配列1つと 数値4...
また、配列の添え字は、$変数名[添え字] で参照します。~
添え字に 負数 を指定すると、配列の末尾からの添え字を指定...
$var1 = $array2[1] # 上の $array2 から 2 を取り出す
$var2 = $array2[-1] # 上の $array2 から 3 を取り出す
配列について詳しくは、 PowerShellコマンドプロンプトで「ge...
** 拡張 [#b2d2b641]
***[[PSSnapin と Module>PowerShell Module vs Snapin]] [#o...
***[[PowerShellのPS1ファイルの作成と実行]] [#j25cd86b]
***[[PowerShell Cmdletの作り方]] [#ofbc761c]
***[[PowerShell プロバイダとドライブ]] [#yfe81b74]
**情報の探し方 [#g2df6a75]
***Get-Command [#ec95c735]
コマンドを探すには、下の様に、コマンド名の一部を*で省略し...
Get-Command *event
***get-help コマンド名 [#qdaf661d]
-コマンドの説明や引数の構文を確認するには、get-help を使...
get-help get-childitem
-Windows Server 2012 では、 ヘルプの文章が online から取...
--必要に応じて 「get-help コマンド -online」のようにする...
--表示されたURLをブラウザで表示して構文を確認ください。
***Get-Member [#zc03dfb2]
オブジェクトのメンバーやプロパティを確認するには、~
下の様にコマンドの出力を パイプ で Get-Member に渡します。
Get-ChildItem | Get-Member
***Get-WmiObject [#s6ff6a6b]
Get-WmiObject -List
-WMI オブジェクトの取得 (Get-WmiObject) | Microsoft Docs~
https://docs.microsoft.com/ja-jp/powershell/scripting/get...
* 勘所1 [#x44711fb]
** エラー処理 [#bb1a74a1]
.ps1ファイルの中でエラーが発生すると、既定では、~
赤文字でエラー表示されて、そのまま次の行が実行されます。~
エラーを処理するには、下のいずれか必要です。
*** -ErrorAction (省略形は -EA) オプション [#zfec5ccb]
Trap {
エラー処理
}
コマンド .... -ErrorAction "stop"
*** try/catch で囲む [#ya21a9c5]
$ErrorActionPreference = "stop"
try {
コマンド ....
} catch [Exception] {
エラー処理
}
try/catch の例は、上の [[ps_test.ps1>#k5dc1c30]] を参照く...
***その他 [#w6126274]
その他の例、説明は、以下のサイトも参照ください。~
-Windows PowerShell の –ErrorAction (–EA) を使用してエラ...
http://technet.microsoft.com/ja-jp/subscriptions/2009.01....
**デバッグ [#gae834c7]
debugは、 debug用print文、 デバッグ用環境、を使ってデバッ...
***debug用print文 [#l40d8762]
debug用print文は、 スクリプトの中に write-host コマンドを...
write-host を使用すると、 引数に指定した値が PowerShellコ...
(write-output は、 関数の出力になるので、debug用には使わ...
***デバッグ用環境 [#u0722db3]
デバッグ用環境 は、 PowerShell ISE (Integrated Scripting ...
PowerShell ISE を使用すると、ブレークポイントの設定、ステ...
-PowerShell ISE は、下の情報を参照ください。
--Windows PowerShell ISE の概要~
http://technet.microsoft.com/ja-jp/library/dd367962%28v=v...
--Windows PowerShell ISE でスクリプトをデバッグする方法~
http://technet.microsoft.com/ja-jp/library/dd819480.aspx
-PowerShell ISE でのデバッグ操作の画面例は、下を参照くだ...
--Use the Debugger in the Windows PowerShell ISE~
http://blogs.technet.com/b/heyscriptingguy/archive/2011/1...
***debug用のコマンド [#b5352391]
通常の PowerShellコマンドプロンプトのままでも、~
Set-PsBreakpoint 等の debug用のコマンドを使用して、1行ず...
-デバッグ例
PS E:\temp> Set-PsBreakpoint -command .\ps_scope1.ps1
ID Script Line Command Variable ...
-- ------ ---- ------- -------- ...
0 .\ps_scope1.ps1
PS E:\temp> .\ps_scope1.ps1
デバッグ モードを開始します。ヘルプを表示するには、h ま...
を使用してください。
ヒット '.\ps_scope1.ps1' のコマンドのブレークポイント
.\ps_scope1.ps1
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:2 $global:g1 = "0"
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:3 $script:s1 = "0"
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:4 $v1 = "0"
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:6 write-host "before : g1=$global:...
v2=$v2"
[DBG]: PS E:\temp>>> s
before : g1=0 s1=0 v1=0 v2=
ps_scope1.ps1:8 function test1 {
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:17 test1
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:9 write-host "start test1 : g1=$globa...
v1=$v1 v2=$v2"
[DBG]: PS E:\temp>>>
-Set-PsBreakpoint を使ったデバッグ方法~
「about_Debuggers」 および下のページを参照ください。
--ブレークポイントを設定、削除、無効化、有効化、および一...
http://technet.microsoft.com/ja-jp/library/dd819519.aspx~
--about_Debuggers~
http://technet.microsoft.com/ja-jp/library/dd347652.aspx
-変数が変更されたときに停止するようにブレークポイントを設...
手順の例は、下を参照ください。~
--Use the PowerShell Debugger to Troubleshoot Scripts~
http://blogs.technet.com/b/heyscriptingguy/archive/2011/1...
* 勘所2 [#g3eae783]
**Windows Server 2012以降の管理 [#o387c11c]
Windows Server 2012以降は管理コンソールの裏はPowerShellコ...
-現行、管理コンソールはCUI → [[WMI]]で構成されている。
-コマンドレットの裏は.NET、その裏は[[WMI]](Windows Manag...
-MS的には、今後PowerShell押し。
--コマンドレットは<操作>-<ターゲット>の名称ルールに準拠。
--[[WSH>VBS]]([[VBS]]とJS)は凍結される。
--[[BAT]]は今後もエンハンス有り。
--[[PowerShell]]から[[BAT]]や、[[WSH>VBS]]を実行可能。
--また、Get-WmiObjectで[[WMI]]も実行可能。
--難しい事をやるなら、まだ[[WMI]]が必要。
-windows management framework 3.0 RC(Win2008 sp2以降にイ...
標準化:[[PowerShell]] → WS-Management → CIMOM、SMI-S(WS...
--Windows PowerShell 3.0
--WinRM
--[[WMI]](アップデート)
--Windows PowerShell Web Service(WPWS)
--Server Manager CIM Provider
**リモート、非同期ジョブ、ワークフロー [#x461eac9]
***[[リモート>PowerShellをリモートコンピューターで実行]] ...
-invoke-command マシン名やSessionを指定 -scriptblock { ・...
-invoke-command マシン名やSessionを指定 -filepath ファイ...
# Sessionを指定すれば処理中のジョブ等に再接続することも可...
***非同期ジョブ [#j3087585]
-start-job - scriptblock { ・・・コード・・・ }
-start-job - filepath ファイルパス
# 結果はSessionの範囲でしか有効では無い。
***ワークフロー [#w372d1c1]
-ファイルとして登録
-クライアントでもサーバでも実行できる。
-サーバが停止しても処理をレジュームできる。~
非同期ジョブと異なり、結果は永続化されている。
-その他、並列処理等も可能。
*その他 [#tc84bc50]
**バージョン と 動作環境 [#z48bba9f]
-Windows PowerShell System Requirements~
http://technet.microsoft.com/en-us/library/hh847769.aspx
>Updated: June 24, 2013~
Applies To: Windows PowerShell 2.0, Windows PowerShell 3....
**VBScriptから変換 [#l0129022]
VBScript から PowerShell へ変換のパターン
-VBScript から PowerShell へ~
http://technet.microsoft.com/ja-jp/library/ff852826.aspx~
-VBScript のスクリプトを Windows PowerShell のスクリプト...
http://gallery.technet.microsoft.com/scriptcenter/3002aff...
-その他の検索~
site:microsoft.com vbscript powershell 変換
**サンプル [#c0ac8846]
PowerShellの御蔭で、昨今、CUIだけで結構イケる説。
-[[Azureのディスク ストレージ操作>Azureのディスク ストレ...
-[[GitHubからZIPをDLしてBuildする的なスクリプト>https://g...
-[[プロセスの一覧をメールで送信する>https://gist.github.c...
**豆知識 [#w2fc08f7]
-エイリアスを使ってUnix風にできる。
-Windows2012からuiのアンインストール可能で、サーバコア風...
* 参考 [#i16bae1b]
-PowerShell - Wikipedia~
http://ja.wikipedia.org/wiki/Windows_PowerShell~
-PowerShell Documentation | Microsoft Docs~
https://docs.microsoft.com/ja-jp/powershell/index
-Windows PowerShell コマンドレットのタスク別ガイド~
http://technet.microsoft.com/ja-jp/scriptcenter/dd772285....
-PowerShell 使い方メモ - Qiita~
http://qiita.com/opengl-8080/items/bb0f5e4f1c7ce045cc57
-ゼロからはじめるWindows PowerShell | マイナビニュース
--環境構築編~
https://news.mynavi.jp/article/20081112-powershell/
--計算編~
https://news.mynavi.jp/article/20081218-powershell/
--コマンドレット編~
https://news.mynavi.jp/article/20090424-powershell/
--ヘルプ編~
https://news.mynavi.jp/article/20090608-powershell/
--ディレクトリ編~
https://news.mynavi.jp/article/20090923-powershell/
**MSDN magazine [#u859c231]
-Windows PowerShell - PowerShell での Windows サービスの...
https://msdn.microsoft.com/ja-jp/magazine/mt703436.aspx
-Essential .NET - 進化を続ける PowerShell~
https://msdn.microsoft.com/magazine/mt742875
**junichia [#gcdd1643]
-blog~
http://blogs.technet.com/b/junichia/archive/tags/powershe...
-SlideShare~
http://www.slideshare.net/junichia/tag/powershell
-Windows PowerShell 3.0 によるWindows Server 2012 管理の...
http://www.slideshare.net/junichia/windows-powershell-30-...
-MS安納さん の セミナー資料、 Tech Fielders PowerShell 3....
概要から、基本的な使い方、スクリプト例、tipsまで、具体的...
以下のサイトから、セミナーの各回ごとの資料がダウンロード...
http://www.microsoft.com/ja-jp/techfielders/seminar.aspx~
--2012.06.25 [10:00-11:30]~
「開発者のための Windows PowerShell ~ 開発コストを低減す...
--2012.06.19 [10:00-11:30]~
「Windows PowerShell 3.0 による Windows Server 2012 管理...
--2012.06.12 [10:00-11:30]~
「Windows PowerShell 3.0 による Windows Server 2012 管理...
--2012.06.04 [10:00-11:30]~
「Windows PowerShell 3.0 による Windows Server 2012 管理...
>>#この資料では、PowerShell 3.0 の beta/RC 版をベースに...
#ただ、WMIオブジェクトの使い方、リモートや権限などのtips...
**その他 [#f940605e]
***[[PowerShell ISE]] [#j853d058]
***[[Azure PowerShell]] [#ra40adac]
***[[Azure Cloud Shell]] [#beef7fca]
***[[PowerShell Core]] [#keec9ed9]
----
Tags: [[:シェル]], [[:インフラストラクチャ]], [[:Windows]...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-[[戻る>シェル]]
--[[CMD]]
--PowerShell
--[[Windows Terminal]]
--[[Azureのシェル]]
--[[スクリプティング]]
---[[BAT]]
---[[VBScript>VBS]]
---PowerShell
---[[Python>Python on Windows]]
* 目次 [#a80353b5]
#contents
* 概要 [#l26e6c22]
PowerShell のトピックを纏めています。
*特徴 [#r9b4dbd1]
-Windows PowerShell - Wikipedia~
https://ja.wikipedia.org/wiki/Windows_PowerShell
**[[オブジェクトベースのシェル>PowerShell オブジェクトベ...
**[[WSH]]を置き換えている。 [#b5759553]
同系列であるから置き換え。
**[[CMD]]を置き換えるものではない。 [#l34fd736]
別物として使用(併用)する必要がある。
-例えば、
--ipconfig などのコマンドを実行すると、おなじみの出力が表...
--netshなどのコマンドを実行して設定するぐらいはPowerShell...
-ただし、Cmd.exeを置き換えるものではない。
--標準出力をテキストとしてパイプできない。
--[[BAT]]の構文を使用できない。
**いつの間にか、Linuxでも利用可能になってた。 [#t9923890]
.NET Coreもそうですが、いつの間にか、Linuxでも利用可能に...
-参考
--PowerShellをLinuxにインストールして試す - Qiita~
https://qiita.com/suzuki-navi/items/3a3fd6ef736bc2a13036
--Linuxユーザーも「PowerShell」を無視できない理由:~
いまさら聞けないPowerShell入門(後編) - TechTargetジャパ...
https://techtarget.itmedia.co.jp/tt/news/1709/08/news01.h...
--Linux への PowerShell のインストール - PowerShell | Mic...
https://docs.microsoft.com/ja-jp/powershell/scripting/ins...
* 環境構築 [#ibc8b5fb]
PowerShell の各バージョンは、以下のOSに添付されているか、...
-新しいOSほど、新しいPowerShellに対応します。
-また、旧OSでは、新しいPowerShellのサポートがありません。
-PowerShellのバージョンに依存しそうな場合は、対象とするOS...
**インストール [#i32722ea]
-いつの間にか、7.1になってた...。
-潔く、MSIでインストール(Windows)
-参考
--[[Azure PowerShellのインストール>Azure PowerShell#ldae3...
--Windows への PowerShell のインストール - PowerShell | M...
https://docs.microsoft.com/ja-jp/powershell/scripting/ins...
--GitHub - PowerShell/PowerShell: PowerShell for every sy...
https://github.com/PowerShell/PowerShell#get-powershell
**[[プロキシ設定>プロキシの設定方法#vd4565aa]] [#h639929f]
*基本 [#g002dfa5]
** 実行方法 [#v29d2093]
インタラクティブな逐次実行は、
-スタートメニューからPowerShell コマンドプロンプトを開い...
-コマンドプロンプトから PowerShell.exe を実行しても、
どちらの方法でも PowerShell を手で([[シェル]]として)逐...
** 出力フォーマット [#o0a78f66]
Get-XXXXXコマンドの出力配下のようなパイプでフォーマット可...
***Format-Wide [#l5c09806]
Get-XXXXX | Format-Wide
***Format-List [#e8a7436b]
Get-XXXXX | Format-List
***Format-Table [#q16bfec3]
Get-XXXXX | Format-Table
*スクリプティング [#t9f7195f]
** 変数 [#n585d270]
***定義 [#y9071564]
変数は $ で始まる 英数字記号 の名前を使用します。~
後述の様に スコープ($global:, $script:) をつけることも出...
下の様に ${ } で囲むと、名前にスペースを含むこともできま...
PS E:\temp> ${var test 1} = 123
PS E:\temp> $a = ${var test 1} + "123"
PS E:\temp> $a
246
PS E:\temp>
未初期化の初期状態は $null と同じです。~
文脈によっては 0 や "" (空文字列) と解釈されます。
PS E:\temp> $var001
PS E:\temp> $var001 -eq 0
False
PS E:\temp> $var001 -eq $null
True
PS E:\temp> $a1 = $var001 + 2
PS E:\temp> $a1
2
PS E:\temp> $a1 = $var001 + "abc"
PS E:\temp> $a1
abc
PS E:\temp>
上の例では、変数 $var001 は未初期化なので、 $null と同じ...
変数をそのまま出力すると、$null は 何も表示されません。~
また、 -eq 比較演算子を使って、 0 や $null と比較すると、...
~
未初期化変数は、数値を足し算した場合は、0 が、文字列を連...
Set-StrictMode を使用すると、未初期化変数を参照する際にエ...
PS E:\temp> Set-StrictMode -Version 1.0
PS E:\temp> $a1 = $var001 + 2
変数 '$var001' は、設定されていないために取得できません。
発生場所 行:1 文字:14
+ $a1 = $var001 <<<< + 2
+ CategoryInfo : InvalidOperation: (var001...
tion
+ FullyQualifiedErrorId : VariableIsUndefined
PS E:\temp>
***スコープ [#y88b36f0]
PowerShellの変数は、変数を使用する場所がスコープの範囲に...
-functionの中、
-PowerShellモジュールの中、
-[[.ps1スクリプトの中>PowerShellのPS1ファイルの作成と実行...
などがスコープの境界になります。
***参考 [#b14a0b57]
-変数について
--Windows Powershell 変数の機能~
http://lab.technet.microsoft.com/ja-jp/magazine/cc162486
-Set-StrictModeについて、
--「get-help Set-StrictMode」
--または、下のページ~
---Set-StrictMode~
http://technet.microsoft.com/ja-jp/library/dd347614.aspx
-変数のスコープについて、
--「get-help about_Scopes」
--または、下のページ~
---about_Scopes~
http://technet.microsoft.com/ja-jp/library/dd315289.aspx
** if文 [#b3a3550b]
if文は、下の様に -で始まる比較演算子を使います。
$var1 = sub2 $arg1 $arg2
if ( ( $var1 -eq 1 ) -or ( $var1 -gt 10 ) ) {
...
}
条件のANDやORは、 それぞれを ( ... )で囲んで -and や -or ...
論理のANDやORによるビット演算は、 -band や -bor の -b で...
$file = get-item $dirname
if ( $file.Attributes -band [System.IO.FileAttributes]:...
...
}
bit演算結果が0以外の場合は、真 とみなされます。
if文の演算子の詳細は、powershellコマンドプロンプトの中で ...
** 配列 [#gfd0e13d]
配列は、以下の形式で定義できます。
$array1 = @()
$array2 = @(1,2,3)
$array3 = 1,2,3
( ) で囲まなくても、「,」で並べると、配列になります。~
コマンドや関数への引数を「,」で区切った場合も配列になるの...
$ret1 = sub1 2,3,4 # これは @(2,3,4) の配列で引数1つ
$ret2 = sub1 2 3 4 # これは 引数3つ
$ret3 = sub1 2,3 4 # これは @(2,3)の配列1つと 数値4...
また、配列の添え字は、$変数名[添え字] で参照します。~
添え字に 負数 を指定すると、配列の末尾からの添え字を指定...
$var1 = $array2[1] # 上の $array2 から 2 を取り出す
$var2 = $array2[-1] # 上の $array2 から 3 を取り出す
配列について詳しくは、 PowerShellコマンドプロンプトで「ge...
** 拡張 [#b2d2b641]
***[[PSSnapin と Module>PowerShell Module vs Snapin]] [#o...
***[[PowerShellのPS1ファイルの作成と実行]] [#j25cd86b]
***[[PowerShell Cmdletの作り方]] [#ofbc761c]
***[[PowerShell プロバイダとドライブ]] [#yfe81b74]
**情報の探し方 [#g2df6a75]
***Get-Command [#ec95c735]
コマンドを探すには、下の様に、コマンド名の一部を*で省略し...
Get-Command *event
***get-help コマンド名 [#qdaf661d]
-コマンドの説明や引数の構文を確認するには、get-help を使...
get-help get-childitem
-Windows Server 2012 では、 ヘルプの文章が online から取...
--必要に応じて 「get-help コマンド -online」のようにする...
--表示されたURLをブラウザで表示して構文を確認ください。
***Get-Member [#zc03dfb2]
オブジェクトのメンバーやプロパティを確認するには、~
下の様にコマンドの出力を パイプ で Get-Member に渡します。
Get-ChildItem | Get-Member
***Get-WmiObject [#s6ff6a6b]
Get-WmiObject -List
-WMI オブジェクトの取得 (Get-WmiObject) | Microsoft Docs~
https://docs.microsoft.com/ja-jp/powershell/scripting/get...
* 勘所1 [#x44711fb]
** エラー処理 [#bb1a74a1]
.ps1ファイルの中でエラーが発生すると、既定では、~
赤文字でエラー表示されて、そのまま次の行が実行されます。~
エラーを処理するには、下のいずれか必要です。
*** -ErrorAction (省略形は -EA) オプション [#zfec5ccb]
Trap {
エラー処理
}
コマンド .... -ErrorAction "stop"
*** try/catch で囲む [#ya21a9c5]
$ErrorActionPreference = "stop"
try {
コマンド ....
} catch [Exception] {
エラー処理
}
try/catch の例は、上の [[ps_test.ps1>#k5dc1c30]] を参照く...
***その他 [#w6126274]
その他の例、説明は、以下のサイトも参照ください。~
-Windows PowerShell の –ErrorAction (–EA) を使用してエラ...
http://technet.microsoft.com/ja-jp/subscriptions/2009.01....
**デバッグ [#gae834c7]
debugは、 debug用print文、 デバッグ用環境、を使ってデバッ...
***debug用print文 [#l40d8762]
debug用print文は、 スクリプトの中に write-host コマンドを...
write-host を使用すると、 引数に指定した値が PowerShellコ...
(write-output は、 関数の出力になるので、debug用には使わ...
***デバッグ用環境 [#u0722db3]
デバッグ用環境 は、 PowerShell ISE (Integrated Scripting ...
PowerShell ISE を使用すると、ブレークポイントの設定、ステ...
-PowerShell ISE は、下の情報を参照ください。
--Windows PowerShell ISE の概要~
http://technet.microsoft.com/ja-jp/library/dd367962%28v=v...
--Windows PowerShell ISE でスクリプトをデバッグする方法~
http://technet.microsoft.com/ja-jp/library/dd819480.aspx
-PowerShell ISE でのデバッグ操作の画面例は、下を参照くだ...
--Use the Debugger in the Windows PowerShell ISE~
http://blogs.technet.com/b/heyscriptingguy/archive/2011/1...
***debug用のコマンド [#b5352391]
通常の PowerShellコマンドプロンプトのままでも、~
Set-PsBreakpoint 等の debug用のコマンドを使用して、1行ず...
-デバッグ例
PS E:\temp> Set-PsBreakpoint -command .\ps_scope1.ps1
ID Script Line Command Variable ...
-- ------ ---- ------- -------- ...
0 .\ps_scope1.ps1
PS E:\temp> .\ps_scope1.ps1
デバッグ モードを開始します。ヘルプを表示するには、h ま...
を使用してください。
ヒット '.\ps_scope1.ps1' のコマンドのブレークポイント
.\ps_scope1.ps1
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:2 $global:g1 = "0"
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:3 $script:s1 = "0"
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:4 $v1 = "0"
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:6 write-host "before : g1=$global:...
v2=$v2"
[DBG]: PS E:\temp>>> s
before : g1=0 s1=0 v1=0 v2=
ps_scope1.ps1:8 function test1 {
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:17 test1
[DBG]: PS E:\temp>>> s
ps_scope1.ps1:9 write-host "start test1 : g1=$globa...
v1=$v1 v2=$v2"
[DBG]: PS E:\temp>>>
-Set-PsBreakpoint を使ったデバッグ方法~
「about_Debuggers」 および下のページを参照ください。
--ブレークポイントを設定、削除、無効化、有効化、および一...
http://technet.microsoft.com/ja-jp/library/dd819519.aspx~
--about_Debuggers~
http://technet.microsoft.com/ja-jp/library/dd347652.aspx
-変数が変更されたときに停止するようにブレークポイントを設...
手順の例は、下を参照ください。~
--Use the PowerShell Debugger to Troubleshoot Scripts~
http://blogs.technet.com/b/heyscriptingguy/archive/2011/1...
* 勘所2 [#g3eae783]
**Windows Server 2012以降の管理 [#o387c11c]
Windows Server 2012以降は管理コンソールの裏はPowerShellコ...
-現行、管理コンソールはCUI → [[WMI]]で構成されている。
-コマンドレットの裏は.NET、その裏は[[WMI]](Windows Manag...
-MS的には、今後PowerShell押し。
--コマンドレットは<操作>-<ターゲット>の名称ルールに準拠。
--[[WSH>VBS]]([[VBS]]とJS)は凍結される。
--[[BAT]]は今後もエンハンス有り。
--[[PowerShell]]から[[BAT]]や、[[WSH>VBS]]を実行可能。
--また、Get-WmiObjectで[[WMI]]も実行可能。
--難しい事をやるなら、まだ[[WMI]]が必要。
-windows management framework 3.0 RC(Win2008 sp2以降にイ...
標準化:[[PowerShell]] → WS-Management → CIMOM、SMI-S(WS...
--Windows PowerShell 3.0
--WinRM
--[[WMI]](アップデート)
--Windows PowerShell Web Service(WPWS)
--Server Manager CIM Provider
**リモート、非同期ジョブ、ワークフロー [#x461eac9]
***[[リモート>PowerShellをリモートコンピューターで実行]] ...
-invoke-command マシン名やSessionを指定 -scriptblock { ・...
-invoke-command マシン名やSessionを指定 -filepath ファイ...
# Sessionを指定すれば処理中のジョブ等に再接続することも可...
***非同期ジョブ [#j3087585]
-start-job - scriptblock { ・・・コード・・・ }
-start-job - filepath ファイルパス
# 結果はSessionの範囲でしか有効では無い。
***ワークフロー [#w372d1c1]
-ファイルとして登録
-クライアントでもサーバでも実行できる。
-サーバが停止しても処理をレジュームできる。~
非同期ジョブと異なり、結果は永続化されている。
-その他、並列処理等も可能。
*その他 [#tc84bc50]
**バージョン と 動作環境 [#z48bba9f]
-Windows PowerShell System Requirements~
http://technet.microsoft.com/en-us/library/hh847769.aspx
>Updated: June 24, 2013~
Applies To: Windows PowerShell 2.0, Windows PowerShell 3....
**VBScriptから変換 [#l0129022]
VBScript から PowerShell へ変換のパターン
-VBScript から PowerShell へ~
http://technet.microsoft.com/ja-jp/library/ff852826.aspx~
-VBScript のスクリプトを Windows PowerShell のスクリプト...
http://gallery.technet.microsoft.com/scriptcenter/3002aff...
-その他の検索~
site:microsoft.com vbscript powershell 変換
**サンプル [#c0ac8846]
PowerShellの御蔭で、昨今、CUIだけで結構イケる説。
-[[Azureのディスク ストレージ操作>Azureのディスク ストレ...
-[[GitHubからZIPをDLしてBuildする的なスクリプト>https://g...
-[[プロセスの一覧をメールで送信する>https://gist.github.c...
**豆知識 [#w2fc08f7]
-エイリアスを使ってUnix風にできる。
-Windows2012からuiのアンインストール可能で、サーバコア風...
* 参考 [#i16bae1b]
-PowerShell - Wikipedia~
http://ja.wikipedia.org/wiki/Windows_PowerShell~
-PowerShell Documentation | Microsoft Docs~
https://docs.microsoft.com/ja-jp/powershell/index
-Windows PowerShell コマンドレットのタスク別ガイド~
http://technet.microsoft.com/ja-jp/scriptcenter/dd772285....
-PowerShell 使い方メモ - Qiita~
http://qiita.com/opengl-8080/items/bb0f5e4f1c7ce045cc57
-ゼロからはじめるWindows PowerShell | マイナビニュース
--環境構築編~
https://news.mynavi.jp/article/20081112-powershell/
--計算編~
https://news.mynavi.jp/article/20081218-powershell/
--コマンドレット編~
https://news.mynavi.jp/article/20090424-powershell/
--ヘルプ編~
https://news.mynavi.jp/article/20090608-powershell/
--ディレクトリ編~
https://news.mynavi.jp/article/20090923-powershell/
**MSDN magazine [#u859c231]
-Windows PowerShell - PowerShell での Windows サービスの...
https://msdn.microsoft.com/ja-jp/magazine/mt703436.aspx
-Essential .NET - 進化を続ける PowerShell~
https://msdn.microsoft.com/magazine/mt742875
**junichia [#gcdd1643]
-blog~
http://blogs.technet.com/b/junichia/archive/tags/powershe...
-SlideShare~
http://www.slideshare.net/junichia/tag/powershell
-Windows PowerShell 3.0 によるWindows Server 2012 管理の...
http://www.slideshare.net/junichia/windows-powershell-30-...
-MS安納さん の セミナー資料、 Tech Fielders PowerShell 3....
概要から、基本的な使い方、スクリプト例、tipsまで、具体的...
以下のサイトから、セミナーの各回ごとの資料がダウンロード...
http://www.microsoft.com/ja-jp/techfielders/seminar.aspx~
--2012.06.25 [10:00-11:30]~
「開発者のための Windows PowerShell ~ 開発コストを低減す...
--2012.06.19 [10:00-11:30]~
「Windows PowerShell 3.0 による Windows Server 2012 管理...
--2012.06.12 [10:00-11:30]~
「Windows PowerShell 3.0 による Windows Server 2012 管理...
--2012.06.04 [10:00-11:30]~
「Windows PowerShell 3.0 による Windows Server 2012 管理...
>>#この資料では、PowerShell 3.0 の beta/RC 版をベースに...
#ただ、WMIオブジェクトの使い方、リモートや権限などのtips...
**その他 [#f940605e]
***[[PowerShell ISE]] [#j853d058]
***[[Azure PowerShell]] [#ra40adac]
***[[Azure Cloud Shell]] [#beef7fca]
***[[PowerShell Core]] [#keec9ed9]
----
Tags: [[:シェル]], [[:インフラストラクチャ]], [[:Windows]...
ページ名: