facebook twitter hatena line email

「Windows/powershell/基本」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「 ==変数== $path = "hoge.txt"; ==変数で定義したpathを使用== $path = "hoge.txt"; $data = Get-Content $path ==テキスト文置換== aaaをcccへ置換 $d...」)
 
(dirpathの親を取得)
 
(同じ利用者による、間の47版が非表示)
行1: 行1:
  
 
==変数==
 
==変数==
  $path = "hoge.txt";
+
  $hoge = "hogehoge"
  
==変数で定義したpathを使用==
+
==判定==
$path = "hoge.txt";
+
<pre>
$data = Get-Content $path
+
$condition = true
 +
if ($condition)
 +
{
 +
Write-Host "OK"
 +
}
 +
</pre>
 +
==比較==
 +
<pre>
 +
$num = 10
 +
if ($num -eq 10) {
 +
  Write-Host 'OK'
 +
} else {
 +
  Write-Host 'NG'
 +
}
 +
</pre>
  
==テキスト文置換==
+
その他比較
aaaをcccへ置換
+
<pre>
$data = Get-Content hoge.txt | % { $_ -replace "aaa", "ccc" }
+
if ($num -ne 10) # 等しくない
$data | Out-File hoge.txt
+
if ( $value -gt 5 ) # <
 +
if ( $value -lt 5 ) # >
 +
if ( ($age -gt 13) -and ($age -lt 55) ) # and条件
 +
if ( $age -le 13 -or $age -ge 55 )# and条件
 +
</pre>
  
参考:https://teratail.com/questions/290149
+
参考:https://docs.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-if?view=powershell-7.1
 +
 
 +
==dir存在判定==
 +
<pre>
 +
if (Test-Path .git)
 +
{
 +
Write-Host "exists"
 +
}
 +
</pre>
 +
.gitのdirがある
 +
 
 +
↓存在しないときの判定
 +
if (!(Test-Path .git))
 +
 
 +
==変数で定義したpathを使用==
 +
$path = "hoge.txt"
 +
$data = Get-Content $path
  
===エスケープ文字対応===
 
[]などは、\でエスケープする
 
$data = Get-Content hoge.txt | % { $_ -replace "aaa\[hoge\]", "ccc[piyo]" }
 
  
 
==実行ファイルのdirpath==
 
==実行ファイルのdirpath==
行22: 行53:
 
  $ScriptDir = $MyInvocation.MyCommand.Path
 
  $ScriptDir = $MyInvocation.MyCommand.Path
 
  echo $ScriptDir
 
  echo $ScriptDir
 +
(windowsの場合) C:\Users\hoge1\Desktop\hoge.ps1
 +
(macの場合) /System/Volumes/Data/www/PowerShells/hoge.ps1
 +
 +
version3以上の場合
 +
$ScriptDir = $PSScriptRoot
 +
echo $ScriptDir
 +
(windowsの場合) C:\Users\hoge1\Desktop
 +
(macの場合) /System/Volumes/Data/www/PowerShells
 +
 +
macで使おうとしたが、初回は使えなかった。数日置いて確認した所使えたので、再起動などが、要因かもしれない。
 +
 +
参考:https://www.vwnet.jp/Windows/PowerShell/pwd.htm
 +
 +
==dirpathの親を取得==
 +
Write-Host (get-item $ScriptDir).parent.FullName
 +
 +
==ログ==
 +
<pre>
 +
function Log($msg) {
 +
  echo ($(Get-Date -Format "yyyy-MM-dd HH:mm:ss") + " " + $msg)
 +
}
 +
Log "hogehogeを処理中です"
 +
</pre>
 +
 +
> 2021-03-20 22:27:18 hogehogeを処理中です
 +
 +
==コマンドの戻り値を取得==
 +
変数にそのまま入れれば良い。
 +
 +
 +
$proc = az storage blob sync
 +
 +
==dir作成==
 +
New-Item /tmp/hogehoge -ItemType Directory
 +
 +
==dirがなければdir作成==
 +
<pre>
 +
if (!(Test-Path /tmp/hogehoge))
 +
{
 +
    New-Item /tmp/hogehoge -ItemType Directory
 +
}
 +
</pre>

2021年9月2日 (木) 19:35時点における最新版

変数

$hoge = "hogehoge"

判定

$condition = true
if ($condition)
{
 Write-Host "OK"
}

比較

$num = 10
if ($num -eq 10) {
  Write-Host 'OK'
} else {
  Write-Host 'NG'
}

その他比較

if ($num -ne 10) # 等しくない
if ( $value -gt 5 ) # <
if ( $value -lt 5 ) # >
if ( ($age -gt 13) -and ($age -lt 55) ) # and条件
if ( $age -le 13 -or $age -ge 55 )# and条件

参考:https://docs.microsoft.com/ja-jp/powershell/scripting/learn/deep-dives/everything-about-if?view=powershell-7.1

dir存在判定

if (Test-Path .git)
{
 Write-Host "exists"
}

.gitのdirがある

↓存在しないときの判定

if (!(Test-Path .git))

変数で定義したpathを使用

$path = "hoge.txt"
$data = Get-Content $path


実行ファイルのdirpath

version3未満の場合

$ScriptDir = $MyInvocation.MyCommand.Path
echo $ScriptDir
(windowsの場合) C:\Users\hoge1\Desktop\hoge.ps1
(macの場合) /System/Volumes/Data/www/PowerShells/hoge.ps1

version3以上の場合

$ScriptDir = $PSScriptRoot
echo $ScriptDir
(windowsの場合) C:\Users\hoge1\Desktop
(macの場合) /System/Volumes/Data/www/PowerShells

macで使おうとしたが、初回は使えなかった。数日置いて確認した所使えたので、再起動などが、要因かもしれない。

参考:https://www.vwnet.jp/Windows/PowerShell/pwd.htm

dirpathの親を取得

Write-Host (get-item $ScriptDir).parent.FullName

ログ

function Log($msg) {
  echo ($(Get-Date -Format "yyyy-MM-dd HH:mm:ss") + " " + $msg)
}
Log "hogehogeを処理中です"
> 2021-03-20 22:27:18 hogehogeを処理中です

コマンドの戻り値を取得

変数にそのまま入れれば良い。

$proc = az storage blob sync

dir作成

New-Item /tmp/hogehoge -ItemType Directory

dirがなければdir作成

if (!(Test-Path /tmp/hogehoge))
{
     New-Item /tmp/hogehoge -ItemType Directory
}