Windows PowerShell 2.0 Part2
>>935 ありがとうございます
get-help get-contentしたら配列表記でてるのを見落としてました
結局マッチを楽にするのにまず正規表現で不要な記号とか削ってから[Regex]::Matchesで解決できました
PS3の連載記事はよ
A.ps1
$Test = Get-ChildItem
powershell -Command .\B.ps1 "Test" $Test
B.ps1
param($value, $Test)
Write-Host $Test
とするとBの$Testには配列で格納されません。
配列を他のファイルに渡すにはどうすればいいですか?
試してないけど ' か {} で全体囲めばいいんじゃね
powershell -Command '.\B.ps1 "Test" $Test'
そもそもPowerShell上でスクリプト呼ぶなら、わざわざもう一度PowerShell呼び出さなくてもいいと思うけど
って、すまん別プロセス立ち上げてるんだから変数のまま渡せるわけないな
やるなら単純に .\B.ps1 "Test" $Test か、
どうしても別プロセスでやるならClixmlに変換してから渡すくらいかね
test.ps1
-----
while ($true) {
start-sleep -milliseconds 100
write-host "."
$array = [management.automation.host.choicedescription[]](
(new-object management.automation.host.choicedescription "&Yes","Yes"),
(new-object management.automation.host.choicedescription "&No","No")
)
if ($host.ui.promptforchoice("", "続行しますか?", $array, $array.count - 1) -ne 0) {
break
}
}
----
Powershell3にてこのスクリプトを実行した際、コンソールウィンドウ右上の×をクリックして終了させると
ウィンドウが閉じるまでやたら時間がかかるんだけど原因分かりますか?
powershell.exe -version 2 -command ".\test.ps1"
って実行させた際や、Ctrl+Cで終了させる場合はすぐに閉じるんですが・・・
OSはWin7sp1x64です。
942 :
名無し~3.EXE:2012/09/26(水) 23:44:13.61 ID:IqWSIyvi
PowerShellってVBSみたいに難読化できる?
配布すること考えるとVBSかやっぱ
VBSみたいに難読化? ご冗談でしょ
944 :
942:2012/09/27(木) 23:33:51.81 ID:joGXkFTw
VBSの難読化ってどうやるんだろ?
まあ、おれがプログラム組むといつも難読だけど。
VBSに埋め込めばできるでしょう。。。
難読したもの貼ってみろよ1行で解読できるから
encodeだろdecode1行
>ただし、コード内に2bytesが含まれている場合には、その部分だけはエンコードされないので、注意すること
ダメじゃねーか1!!
>>950 コードに2バイト入れるなよ・・・
VBAか
何どす化?
Out-File -Encoding UTF8 だと BOM 付きの UTF-8 になっちゃうけど
BOM なしにするにはどうすればいい
[Text.Encoding]::GetBytes() 使うか、どっかから nkf コマンド拾ってくるか、Connect で要望出して採用されるの待つか、その辺で。
>>953 $utf8=New-Object System.Text.UTF8Encoding $false
$writer=New-Object System.IO.StreamWriter "C:\text.txt",$false,$utf8
$writer.Write("あああ")
$writer.Close()
956 :
名無し~3.EXE:2012/10/05(金) 14:23:31.75 ID:xVBx1poh
957 :
名無し~3.EXE:2012/10/13(土) 21:55:43.01 ID:NoKCNVgA
ACCESSに接続してレコードを読み込んだり書き込んだりしたいんだけど、
上手くいきません。
参考ソースか解り易いサイトありませんか?
958 :
957:2012/10/14(日) 21:14:33.89 ID:lPlYHEKJ
すいません、ACCESSに接続してレコードを読み込むことは出来ました。
しかし、INSERT分を使用してデータの追記が上手くいきません。
---------------------------------------------------------------------------
#接続文字列を準備する
$connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=$dataSource;"
#データソースに接続し開く
$connection = New-Object System.Data.OleDb.OleDbConnection $connectionString
$connection.Open()
$command = New-Object System.Data.OleDb.OleDbCommand $sqlCommand,$connection
$command.ExecuteNonQuery()
$connection.Close()
----------------------------------------------------------------------------
$sqlcommandには実行時に"INSERT INTO テーブル名 (列名1,列名2) VALUES (値1,値2)"
を引数で渡しています。
発生するエラー内容ですが、
"0"個の引数を指定して"ExecuteNonQuery"の呼び出し中に例外エラーが発生しました:
"INSERT INTO ステートメントの構文エラーです。"
と表示されます。
試しにACCESSのクエリから上記のINSERT分を実行しましたが問題なくデータは入りました。
プログラム自体の問題と思いますがご教授願えませんでしょうか?
実行中のアプリケーションが、自分を起動したのがPowerShellなのかcmd.exe
なのか判定する方法ってあるの?
親プロセスを見れば?
%ComSpec% みたいに手軽なのがいいのだが、無理か
調べたけど無理っぽいね。残念。
あほっぽいね。あほか。残念。
-Confirm:$falseに対応していないコマンドレットで
確認メッセージを表示させないようにしたいのですが、
方法はないでしょうか
>>964 -Forceで確認でなくなるコマンドレットありますよ
PSオブジェクトのプロパティについて教えてください
・psbase ←元となったオブジェクト?
・psobject.ImmediateBaseObject ←アダプタしたオブジェクト?
・psobject.BaseObject ←アダプタしたオブジェクト? ImmediateBaseObjectと何が違うの?
969 :
優しい名無しさん:2012/12/10(月) 04:23:25.73 ID:r/g+qGG1
独自の運命を取るがゆえに…
970 :
名無し~3.EXE:2012/12/10(月) 09:37:54.58 ID:sWDv6Ofi
∧∧
( ・ω・)
_| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
<⌒/ヽ-、___
/<_/____/
971 :
名無し~3.EXE:2012/12/10(月) 12:28:48.34 ID:sWDv6Ofi
ラ ジ オ の D J が 考 え た
972 :
名無し~3.EXE:2012/12/10(月) 12:30:46.89 ID:sWDv6Ofi
妹を精神病院に入院させる手続きが抜けてた。すまん
973 :
名無し~3.EXE:2012/12/10(月) 15:39:56.69 ID:sWDv6Ofi
| | |( ゚Д゚) 冫、)∧_∧
| | || | ` / ( ・∀・) / ̄ ̄ ̄  ̄\
| | | ̄ ̄ ̄ /|_∧⊂ ./////ヘ \
| | | / /| ∀`) | ⌒ ̄⌒ ̄ ̄ヘ | / ̄ ̄ ̄ ̄ ̄
| /\ | /|/|/| _-;) | (・) (・) \ | < そこのラジオのDJ逃さないわよ!
| / / |// / /|⊂| | へ 9) / \______
| / / |_|/|/|/|/| ∪ 彡| ___ |ミ
| / / |文|/ // / \ ヘ_/U ./ヘミ
|/ /. _.| ̄|/|/|/ \____/
/|\/ / / |/ / / \
| | ̄| | |ヽ/l ⊂ ( ( つ
| | |/| |__|/ /⌒ _)
| |/| |/ { ノヘ
| | |/ し `J Ξ≡3
ただ単に
ls
とやるとLengthとうファイルサイズを表す列が表示されますが、
ls | Export-Csv a.csv
とやると出力されたa.csvにはLengthという列がありません。
Lengthも出力したい場合はどうすればよいのでしょうか?
ls | select-object Name,Length | export-csv a.csv
>>975 ありがとうございます。ファイルサイズを出力させることが出来ました。
それにしても↓のようにしてもなぜLengthが出ないんだろう?謎だ…
ls | select-object * | export-csv a.csv
>>976 ls の出力にディレクトリがなければ Length が出力されたよ
978 :
啓:2012/12/23(日) 22:42:27.64 ID:rlbzwsZi
推薦expert
PowerShellを使ってGUIツールの自動化テストを行いたいのですが、
参考になるページなどあったら教えてください。
diffコマンドを、
diff $(gc "c:\aaa.txt") $(gc "c:\bbb.txt") -inc
のように使っているのですが、行番号が出ないので非常に不便です。
何か書き方が悪いのでしょうか?それとも元々出ない?
行番号を出す方法はあるのでしょうか?
>>980 やるとすればSelect-Stringで全行ヒットするようなパターンを与えて行番号出すくらいかねぇ
compare (grep ^ a.txt) (grep ^ b.txt)
あと一行コマンドの場合括弧の前の$はいらんよ
この板自動で落ちるのって980からだっけ
>>980 ごめんSelect-Stringの出力にパス情報が入ってるの忘れてた
$a = grep ^ .\a.log | % { $_.Path = ""; $_ }
$b = grep ^ .\b.log | % { $_.Path = ""; $_ }
compare $a $b
みたいな感じでならうまくいくよ
983 :
980:2013/01/29(火) 01:32:57.70 ID:yPH+ac3a
984 :
980:2013/01/29(火) 23:36:12.56 ID:yPH+ac3a
>>982 今日使ってみましたが、バッチリうまく行きました!
どうもありがとうございます。
ところでこれは文字コードがUNICODEのファイルでやると問題なかったんですが、
SJISのファイルでやると日本語が文字化けしてしまいました。
これはPowerShellの仕様なのでしょうか???
-Encoding オプション付けとけ