Takuya71 のぶろぐ

外資系ソフトウェア会社で働いてます、認定スクラムマスター

PowerShell 覚書(仮)

PowerShell について 使いそうなコマンドの 覚書

PowerShell 調べた時の覚書です。

PowerShell の例は 本家マイクロソフトのスクリプトセンター 動画もありわかりやすくサンプルも沢山あります。

カレントディレクトリ配下の txt という拡張子のつくファイルを探す

Get-ChildItem -r | Where-Object{$_.Name -like "*.txt"}

カレントディレクトリ配下で 1MB以上のサイズのファイルを探す

Get-ChildItem -r | Where-Object{$_.Length -ge 1MB}

コンピュータ上にあるローカルドライブをすべて列挙します

Get-WmiObject Win32_LogicalDisk

DeviceID : C:
DriveType : 3
ProviderName :
FreeSpace : 283426201600
Size : 500105760768
VolumeName : PCVOL
DeviceID : D:
DriveType : 5
ProviderName :
FreeSpace :
Size :
VolumeName :
DeviceID : E:
DriveType : 5
ProviderName :
FreeSpace : 0
Size : 350183424
VolumeName : DB

Drive タイプが3のものだけ表示

Get-WmiObject -query "SELECT * FROM Win32_LogicalDisk WHERE DriveType=3"

IP が有効なものを抽出

Get-WmiObject Win32_NetworkAdapterConfiguration | Where {$_.IPEnabled -eq "ture"}

DHCPEnabled : True
IPAddress : {xx.xx.xx.xx, aaaa::aaaa:aaaa:aaaa:aaaa}
DefaultIPGateway : {xx.xx.xx.xx}
DNSDomain : hogehoge.local
ServiceName : e1cexpress
Description : Intel(R) 82579LM Gigabit Network Connection
Index : 7
DHCPEnabled : False
IPAddress : {169.254.100.17, fe80::d1ae:8050:d356:6411}
DefaultIPGateway :
DNSDomain :
ServiceName : VMnetAdapter
Description : VMware Virtual Ethernet Adapter for VMnet1
Index : 28
DHCPEnabled : False
IPAddress : {192.168.221.1, fe80::31f2:f18a:853d:29af}
DefaultIPGateway :
DNSDomain :
ServiceName : VMnetAdapter
Description : VMware Virtual Ethernet Adapter for VMnet8
Index : 29

利用可能なドライブを一覧表示させる

Get-PSDrive

定義済みの環境変数を一覧表示する

Set-Location Env:
PS Env:\> Get-ChildItem
...

定義済みの環境変数を hogehoge.txt にリダイレクト

Get-ChildItem Env: > hogehoge.txt

PowerShellSQLServerに接続

sqlps をファイル名を指定して実行する

invoke-sqlcmd -query "select * from [table_name] where [条件]" 

のようなコマンドが実行できる。

PowerShell network drive 割り当て

$net = new-object -ComObject WScript.Network
$net.MapNetworkDrive("u:", "\\server\share", $false, "domain\user", "password")

切断は

$net.RemoveNetworkDrive("u:")

PowerShell 条件

$myid1 = $(Get-Process | Where-Object{$_.Name -like "notepad*"}).id
$(Get-WmiObject win32_process -filter ProcessID=$myid1).ParentProcessId
4192

Get-WmiObject win32_process | Where-Object{$_.ProcessID -eq 2504}

PowerShell シリアライズ

$(Get-WmiObject win32_process | Where-Object{$_.Name -like "chrome*"}) | Export-Clixml $HOME\testxml.xml

逆は

Import-Clixml $HOME\testxml.xml

Sort

Get-Process |Sort Id

PowerShell ファイルの中身を取得

Get-Content $home\filename.txt