| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

「Powershell」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の14版が非表示)
1行目: 1行目:
 
==[[Powershell]]==
 
==[[Powershell]]==
 +
===引数===
 +
*https://microsoftou.com/ps-arguments/
 +
*$Args[]に格納
 +
*Param($hoge1,$hoge2) とすることで、指定した変数に設定可
 +
 +
===ファイル作成===
 +
New-Item c:\temp\myfile.txt -type file
 +
 +
===echo===
 +
*Write-Outputのエイリアス
 +
 +
===ファイル書き出し===
 +
*https://bayashita.com/p/entry/show/90
 +
<pre>
 +
# バッククオテーションでエスケープ
 +
$str = "`"abc`""
 +
 +
Write-Host $str
 +
 +
# ヒアドキュメントの場合はエスケープ不要
 +
$str = @"
 +
ヒアドキュメントの場合は " はそのまま
 +
記述できます。
 +
"@
 +
</pre>
 +
 
==コマンドレット==
 
==コマンドレット==
 
*http://technet.microsoft.com/ja-jp/library/dn169200.aspx
 
*http://technet.microsoft.com/ja-jp/library/dn169200.aspx
295行目: 321行目:
 
!Linuxコマンド!!Powershellコマンド
 
!Linuxコマンド!!Powershellコマンド
 
|-
 
|-
|rm -rf||Remove-Item -Path {path} -Recurse -Force
+
|env||Get-ChildItem Env:
 
|-
 
|-
|
+
|grep||Select-String
 +
|-
 +
|ls||Get-ChildItem
 +
|-
 +
|man||Get-Help
 +
|-
 +
|rm -rf||Remove-Item -Path -Recurse -Force
 
|}
 
|}
  
367行目: 399行目:
 
  -----------    ----                                              -------    ------
 
  -----------    ----                                              -------    ------
 
  Application    git.exe                                            2.12.2.2  C:\Program Files\[[Git]]\cmd\git.exe
 
  Application    git.exe                                            2.12.2.2  C:\Program Files\[[Git]]\cmd\git.exe
 +
 +
===フォルダのサイズを調べる===
 +
----
 +
<pre>
 +
$fso = new-object -com Scripting.FileSystemObject
 +
gci "c:\windows\" -Directory `
 +
  | select @{l='Size'; e={$fso.GetFolder($_.FullName).Size}},FullName `
 +
  | sort Size -Descending `
 +
  | ft @{l='Size [MB]'; e={'{0:N2}    ' -f ($_.Size / 1MB)}},FullName
 +
</pre>

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

Powershell

引数

ファイル作成

New-Item c:\temp\myfile.txt -type file

echo

  • Write-Outputのエイリアス

ファイル書き出し

# バッククオテーションでエスケープ
$str = "`"abc`""
 
Write-Host $str
 
# ヒアドキュメントの場合はエスケープ不要
$str = @"
ヒアドキュメントの場合は " はそのまま
記述できます。
"@

コマンドレット

  1. get-command
  2. get-help get-command
  3. get-command | select-string "select"
コマンドレット 内容
Add-History
Clear-Content
Compare-Object
Convert-Path
ConvertTo-Html
Copy-Item
Export-Alias
Export-Clixml
Export-Csv
Foreach-Object
Format-List
Format-Wide
Get-Acl
Get-Alias
Get-AuthenticodeSignature
Get-ChildItem
Get-Command
Get-Content
Get-Culture
Get-Date
Get-Eventlog
Get-ExecutionPolicy
Get-Help
Get-History
Get-Host
Get-Item
Get-ItemProperty
Get-Location
Get-Member
Get-Process
Get-PSDrive
Get-PSProvider
Get-Service
Get-Unique
Get-WMiObject
Group-Object
Import-Alias
Import-Clixml
Import-Csv
Invoke-Expression
Invoke-History
Invoke-Item
Measure-Command
Measure-Object
Move-Item
New-Alias
New-Item
New-PSDrive
New-Timespan
Out-File
Out-Host
Output-Printer
Read-Host
Remove-Item
Remove-PSDrive
Rename-Item
Restart-Service
Resume-Service
Select-Object
Select-String
Set-Alias
Set-Content
Set-Date
Set-ExecutionPolicy
Set-Location
Set-Service
Sort-Object
Start-Service
Start-Sleep
Stop-Process
Stop-Service
Suspend-Service
Tee-Object
Test-Path
Where-Object 返されるデータのフィルタ処理
Write-Host
Write-Warning

Get-Command

  • すべての Windows PowerShell コマンドレットの一覧を返す

Get-Help

  • PowerShell には、コマンド ヘルプと概念に関するヘルプの 2 種類のヘルプがある

使用できるすべてのヘルプ トピック一覧を取得

Get-Help *

トピック名を Get-Help に渡すことで特定のトピックに関するヘルプを取得できる

Get-Help Get-Member | more

Select-String

  • 文字列値の存在確認
  • エイリアス sls

<blockquote>grepの代替として</blockquote>

  • grep で使えるようにしておく
Set-Alias grep Select-String

Get-Alias

  • Windows PowerShell エイリアスのリストを返す
  • エイリアス gal

書式

  • 特定のオブジェクトについて、表示するプロパティを制御するための一連のコマンドレットが用意されています
  • これらすべてのコマンドレットの名前は、Format という動詞で始まります
  • Format 系のコマンドレットには、Format-Wide、Format-List、Format-Table、および Format-Custom があります

Format-Wide

  • オブジェクトの既定のプロパティだけが表示されます
PS> Get-Process -Name powershell | Format-Wide

Format-List

  • リスト形式で表示されます。各プロパティがその名前と共に別々の行に表示されます
PS> Get-Process -Name powershell | Format-List

Format-Table

PS> Get-Process -Name powershell | Format-Table -Property Path,Name,Id,Company

コマンドサンプル

フォルダ配下のファイル名の検索

> get-childitem | where-object {$_.name -like "Python*"}

Powershell ISE

Windows8

0971 powershell ise.jpg

Linuxコマンド

Linuxコマンド Powershellコマンド
env Get-ChildItem Env:
grep Select-String
ls Get-ChildItem
man Get-Help
rm -rf Remove-Item -Path -Recurse -Force

Tips

スクリプトファイルを実行する

PS > ./hoge.ps1

スクリプト実行ポリシーを設定

  • 以下のエラーが発生する

<blockquote>このシステムではスクリプトの実行が無効になっているため...</blockquote>

PS > Set-ExecutionPolicy RemoteSigned
ポリシー 内容
Restricted すべてのスクリプトを実行不可
AllSigned すべてのスクリプトに証明書を要求
RemoteSigned インターネット経由でダウンロードしたスクリプトのみ証明書を要求
Unrestricted すべてのスクリプト実行を許可(ただしインターネット経由でダウンロードしたコードは実行確認のみあり)


環境変数

一覧表示

PS> get-childitem env:

指定表示

$Env:環境変数名
PS> $env:path

設定

PS> set-item env:HOGE hoge

文字列分割

  • 環境変数を ";"で分割
PS>  $Env:path -split ";"

バックグラウンドジョブの実行と確認

  • Start-Job、Get-Job
Start-Job -ScriptBlock{ 実行するコマンド }
PS C:\Programs\wildfly-8.0.0.Final\bin> start-job -ScriptBlock {.\standalone.bat}

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
2      Job2            BackgroundJob   Running       True            localhost            .\standalone.bat


PS C:\Programs\wildfly-8.0.0.Final\bin> get-job

Id     Name            PSJobTypeName   State         HasMoreData     Location             Command
--     ----            -------------   -----         -----------     --------             -------
2      Job2            BackgroundJob   Failed        False           localhost            .\standalone.bat

カレントディレクトリをエクスプローラーで開く

> explorer (get-location).path

コマンド情報の確認(whereis)

PS C:\workspaces\vscode\reactlesson> get-command git

CommandType     Name                                               Version    Source
-----------     ----                                               -------    ------
Application     git.exe                                            2.12.2.2   C:\Program Files\Git\cmd\git.exe

フォルダのサイズを調べる


$fso = new-object -com Scripting.FileSystemObject
gci "c:\windows\" -Directory `
  | select @{l='Size'; e={$fso.GetFolder($_.FullName).Size}},FullName `
  | sort Size -Descending `
  | ft @{l='Size [MB]'; e={'{0:N2}    ' -f ($_.Size / 1MB)}},FullName