View Get-StartupShutdownEventLogs.ps1
#
# よくわかりませんが何かの役に立つことがあるかもしれないらしいですね...
# PowerShell 2.0以降で動作します。
#
Get-WinEvent -LogName System -FilterXPath "*[System[Provider[@Name='Microsoft-Windows-Kernel-General'] and (EventID=12 or EventID=13)]]" | Select-Object TimeCreated, Id, Message | Format-Table -Autosize
View Disable-SMB1.ps1
# ref : https://support.microsoft.com/en-us/help/2696547/how-to-enable-and-disable-smbv1,-smbv2,-and-smbv3-in-windows-vista,-windows-server-2008,-windows-7,-windows-server-2008-r2,-windows-8,-and-windows-server-2012
# 各OSのPowerShellから実行してね
#----------------------------------------------------------------------------------
# Client OS
#----------------------------------------------------------------------------------
# Windows 7
# disable SMB1 protorol(server)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force
# disable clinet
View Invoke-RubyOnPowerShellConsole.ps1
# これは文字列のエスケープで死ぬ
C:\Ruby23-x64\bin\ruby.exe -e 'puts "Hello World!"'
# 解析停止記号を使う - これなら死なない
C:\Ruby23-x64\bin\ruby.exe --% -e 'puts "Hello World!"'
# "をエスケープする - これなら死なない
C:\Ruby23-x64\bin\ruby.exe -e 'puts \"Hello World!\"'
# 気合で関数を作る - これも死なない
View Get-LoadAverageFromBoW1.ps1
# Windows 10 Creators Update以降でやってね
'cat /proc/loadavg|awk ''{print "@{Load1="$1";Load5="$2";Load15="$3";}"}'';exit;' | bash | iex
View call_powershell_from_bow.sh
#
# 良い例が思いつかなかったのでとりあえずgrepしてみる
#
# -Commandパラメータはスクリプトブロックとしては認識されず、文字列として指定する必要があるっぽい。
#
/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -Command '&{ Get-NetFirewallRule }' | grep Name
View PowerShellMemoOnWin10-1703.md

バージョン情報

PS C:\> $PSVersionTable | sort Name

Name                           Value
----                           -----
PSVersion                      5.1.15063.0
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
View Slice-ArraySample.ps1
# 配列をn個ずつに分割
$Array = 1..100
$n = 13
# 単純にスライスする
for ($i = 0; $i -lt $Array.Length; $i+=$n) {
Write-Host $Array[$i..($i+($n-1))]
}
# ForEach-Objectで頑張る
View Disable-VBoxServiceTimeSync.ps1
# ゲスト側で実行してVirtualBox Guest Additions Serviceの設定を変える。
sc.exe config VBoxService binPath= "C:\Windows\System32\VBoxService.exe --disable-timesync"
Restart-Service -Name VBoxService
View Invoke-Test.ps1
Write-Host "Hello $env:COMPUTERNAME" -ForegroundColor Green
View Get-WindowsFeatureFromTemplate.ps1
$TemplatePath = ".\展開の構成テンプレート.xml"
(Import-Clixml -LiteralPath $TemplatePath).GetEnumerator() | % { $_.CimClass.CimClassQualifiers["DisplayName"].Value } | Get-WindowsFeature