と思ったので、調べた結果を覚書。
PS> Write-Host "a" -NoNewline; Write-Host "b" -ForegroundColor Red -NoNewline; Write-Host "c";
abc
あとは"a"、"b"、"c"を適当な変数に変えるとかすれば目的達成ですかね。
なかなか情報が見つかりませんでしたが、とりあえずこんな感じで。
PS> SET NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
PS> sqlplus sys/PASS@SID as sysdba
SQL> SELECT REASON FROM DBA_OUTSTANDING_ALERTS;
|
PS> chcp 65001
PS> SET NLS_LANG=AMERICAN_AMERICA.AL32UTF8
PS> sqlplus sys/PASS@SID as sysdba
SQL> SELECT REASON FROM DBA_OUTSTANDING_ALERTS;
|
PS> SET NLS_LANG=AMERICAN_AMERICA.WE8MSWIN1252
PS> sqlplus sys/PASS@SID as sysdba
SQL> ALTER SESSION SET NLS_LANGUAGE=AMERICAN;
SQL> ALTER SESSION SET NLS_TERRITORY=AMERICA;
SQL> SELECT REASON FROM DBA_OUTSTANDING_ALERTS;
|
| private List<string> executePowerShell() { // PowerShellスクリプト string script = @" # C#からの引数の受け取り $count = 0 foreach($arg in $input) { switch ($count) { 0 { $foo = $arg } 1 { $bar = $arg } } $count++ } # 何らかの処理 # C#に返したい変数 $foo $bar "; List<string> fromPowerShell = new List<string>(); using (var invoker = new RunspaceInvoke()) { // PowerShellの実行、第二引数がPowerShellに渡す引数 var psResult = invoker.Invoke(script, new[] { 0, 1 }) // PowerShellから変数の値を受け取る($foo, $bar) foreach (PSObject result in psResult) { if (result != null) { fromPowerShell.Add(result.ToString()); } } } return fromPowerShell; } |
| PS> net use \\ServerName コマンドは正常に終了しました。 PS> net use \\ServerName /delete \\ServerName が削除されました。 |
| PS> net use \\ServerName | Out-Null PS> net use \\ServerName /delete | Out-Null |
| PS> $array = @() PS> $array += ・・・ PS> if ($array.Length > 0) { PS> ・・・ PS> } |
| PS> $array = @() PS> $array += ・・・ PS> if ($array.Length -gt 0) { PS> ・・・ PS> } |
| PS> $username = "username" PS> $sPassword = ConvertTo-SecureString -String "password" -AsPlainText -Force PS> $credential = New-Object System.Management.Automation.PSCredential($username, $sPassword) PS> $hdd_list = Get-WmiObject -Class win32_logicaldisk -ComputerName "host-name" -Credential $credential PS> $msg = "" PS> foreach($hdd in $hdd_list) { PS> $driveLetter = $hdd.DeviceID -replace(":", "") PS> $freeSpace = [string] ([math]::round($hdd.FreeSpace / ([math]::pow(1024, 3)), 2)) PS> $msg = "Freespace of " + $driveLetter + " drive is " + $freeSpace + "(GB)." PS> } PS> $msg |
| PS> # 共有リソースに接続 PS> net use \\[host-name or ip-address] [password] /user:[user-name] PS> PS> # イベントログを表示 PS> Get-EventLog system -ComputerName [host-name or ip-address] |
| PS> net use \\[host-name or ip-address] [password] /user:[user-name] PS> PS> # ndays はマイナスの値にすること PS> $ndays = -3 PS> $error_count = Get-EventLog system -ComputerName [host-name] | Where-Object { $_.EntryType -eq "Error" -and $_.TimeGenerated -gt (Get-Date).AddDays($ndays) } | Group-Object $_.EntryType |