バージョンを確認する
> $Host Name : Windows PowerShell ISE Host Version : 5.1.15063.786 InstanceId : a95bbd00-1e56-4bc0-90aa-8e3ba0333e1a UI : System.Management.Automation.Internal.Host.InternalHostUserInterface CurrentCulture : ja-JP CurrentUICulture : ja-JP PrivateData : Microsoft.PowerShell.Host.ISE.ISEOptions DebuggerEnabled : True IsRunspacePushed : False Runspace : System.Management.Automation.Runspaces.LocalRunspace
> $PSVersionTable Name Value ---- ----- PSVersion 5.1.15063.786 PSEdition Desktop PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} BuildVersion 10.0.15063.786 CLRVersion 4.0.30319.42000 WSManStackVersion 3.0 PSRemotingProtocolVersion 2.3 SerializationVersion 1.1.0.1
アセンブリ(DLL)をロードする
> [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") GAC Version Location --- ------- -------- True v4.0.30319 C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b...
> [AppDomain]::CurrentDomain.GetAssemblies() > [AppDomain]::CurrentDomain.GetAssemblies() | %{$_.GetName().Name} > [AppDomain]::CurrentDomain.GetAssemblies() | Format-List
ファイル名を一括変換する
> ls|Sort-Object {$_.Name}|Rename-Item {'aaa'+$_.Name.Substring(0,2)+'.mp4'}
Windowsフォームを作成する
# アセンブリのロード [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") # フォーム $form = New-Object -TypeName System.Windows.Forms.Form # コントロール $wb = New-Object -TypeName System.Windows.Forms.WebBrowser $wb.Dock = [System.Windows.Forms.DockStyle]::Fill $wb.Url = New-Object -TypeName System.Uri("http://www.yahoo.co.jp") $form.Controls.Add($wb) # フォームを表示 $form.ShowDialog()
Process
using namespace System.Diagnostics function MyProcess { Param ( [string]$FilePath, [string]$ArgumentList, [bool]$NoNewWindow = $true ) try { $p = [Process]::new() $p.StartInfo.UseShellExecute = $false $p.StartInfo.RedirectStandardOutput = $true $p.StartInfo.RedirectStandardError = $true $p.StartInfo.CreateNoWindow = $NoNewWindow $p.StartInfo.FileName = $FilePath $p.StartInfo.Arguments = $ArgumentList $p.Start() | Out-Null $stdout = $p.StandardOutput.ReadToEnd() $stderr = $p.StandardError.ReadToEnd() $p.WaitForExit() if ($stdout.Length -gt 0) { Write-Output $stdout } if ($stderr.Length -gt 0) { Write-Error $stderr } exit $p.ExitCode } finally { $p.Dispose() exit 9 } }