Windows PowerShell 2.0 Part2

このエントリーをはてなブックマークに追加
936名無し~3.EXE:2012/09/08(土) 02:14:40.86 ID:klpBtIG1
>>935
ありがとうございます
get-help get-contentしたら配列表記でてるのを見落としてました
結局マッチを楽にするのにまず正規表現で不要な記号とか削ってから[Regex]::Matchesで解決できました
937名無し~3.EXE:2012/09/10(月) 15:45:56.21 ID:Ef6We+9F
PS3の連載記事はよ
938名無し~3.EXE:2012/09/11(火) 21:43:09.43 ID:cfe8XvZ+
A.ps1

$Test = Get-ChildItem
powershell -Command .\B.ps1 "Test" $Test

B.ps1

param($value, $Test)
Write-Host $Test

とするとBの$Testには配列で格納されません。
配列を他のファイルに渡すにはどうすればいいですか?
939名無し~3.EXE:2012/09/11(火) 22:12:45.65 ID:I73M2qay
試してないけど ' か {} で全体囲めばいいんじゃね
powershell -Command '.\B.ps1 "Test" $Test'

そもそもPowerShell上でスクリプト呼ぶなら、わざわざもう一度PowerShell呼び出さなくてもいいと思うけど
940名無し~3.EXE:2012/09/11(火) 22:36:59.97 ID:I73M2qay
って、すまん別プロセス立ち上げてるんだから変数のまま渡せるわけないな
やるなら単純に .\B.ps1 "Test" $Test か、
どうしても別プロセスでやるならClixmlに変換してから渡すくらいかね
941名無し~3.EXE:2012/09/12(水) 18:55:53.34 ID:6Sf7c0ds
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かやっぱ
943名無し~3.EXE:2012/09/27(木) 21:54:51.20 ID:xNo+RTVz
VBSみたいに難読化? ご冗談でしょ

944942:2012/09/27(木) 23:33:51.81 ID:joGXkFTw
>>943
いたって本気ですが。
945名無し~3.EXE:2012/09/28(金) 02:19:41.47 ID:Zxt+/MnS
VBSの難読化ってどうやるんだろ?

まあ、おれがプログラム組むといつも難読だけど。
946名無し~3.EXE:2012/09/28(金) 03:23:29.31 ID:STLb2Q0g
VBSに埋め込めばできるでしょう。。。
947名無し~3.EXE:2012/09/28(金) 17:27:28.99 ID:E7xF4Dhp
難読したもの貼ってみろよ1行で解読できるから
948名無し~3.EXE:2012/09/28(金) 20:53:49.44 ID:0g1mZmwe
949名無し~3.EXE:2012/09/28(金) 23:14:41.78 ID:E7xF4Dhp
encodeだろdecode1行
950名無し~3.EXE:2012/09/29(土) 00:48:50.27 ID:eeyla3XL
>ただし、コード内に2bytesが含まれている場合には、その部分だけはエンコードされないので、注意すること
ダメじゃねーか1!!
951名無し~3.EXE:2012/09/29(土) 18:22:06.25 ID:9gsFE+ls
>>950
コードに2バイト入れるなよ・・・
VBAか
952名無し~3.EXE:2012/09/29(土) 21:35:24.90 ID:DIYzY5/K
何どす化?
953名無し~3.EXE:2012/09/30(日) 08:32:20.77 ID:cT3sa/R8
Out-File -Encoding UTF8 だと BOM 付きの UTF-8 になっちゃうけど
BOM なしにするにはどうすればいい
954名無し~3.EXE:2012/09/30(日) 17:51:06.37 ID:Y5RgReM3
[Text.Encoding]::GetBytes() 使うか、どっかから nkf コマンド拾ってくるか、Connect で要望出して採用されるの待つか、その辺で。
955名無し~3.EXE:2012/09/30(日) 20:10:17.89 ID:qf11wgWO
>>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に接続してレコードを読み込んだり書き込んだりしたいんだけど、
上手くいきません。
参考ソースか解り易いサイトありませんか?

958957: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分を実行しましたが問題なくデータは入りました。
プログラム自体の問題と思いますがご教授願えませんでしょうか?
959名無し~3.EXE:2012/10/16(火) 00:30:02.71 ID:i8flTIpJ
実行中のアプリケーションが、自分を起動したのがPowerShellなのかcmd.exe
なのか判定する方法ってあるの?
960名無し~3.EXE:2012/10/16(火) 00:38:19.90 ID:hDEuttua
親プロセスを見れば?
961名無し~3.EXE:2012/10/16(火) 00:54:26.08 ID:i8flTIpJ
%ComSpec% みたいに手軽なのがいいのだが、無理か
962デフォルトの名無しさん:2012/10/17(水) 01:04:14.59 ID:4+L0ArA2
調べたけど無理っぽいね。残念。
963名無し~3.EXE:2012/10/17(水) 17:51:25.50 ID:JkKM6sbY
あほっぽいね。あほか。残念。
964名無し~3.EXE:2012/10/21(日) 07:38:00.20 ID:uHhBhSdy
-Confirm:$falseに対応していないコマンドレットで
確認メッセージを表示させないようにしたいのですが、
方法はないでしょうか
965名無し~3.EXE:2012/10/21(日) 15:29:43.25 ID:Z+oBmG/n
>>964
-Forceで確認でなくなるコマンドレットありますよ
966名無し~3.EXE:2012/10/25(木) 11:52:59.86 ID:+IAHW8We
PSオブジェクトのプロパティについて教えてください

・psbase  ←元となったオブジェクト?
・psobject.ImmediateBaseObject ←アダプタしたオブジェクト?
・psobject.BaseObject ←アダプタしたオブジェクト? ImmediateBaseObjectと何が違うの?
967名無し~3.EXE:2012/11/01(木) 18:08:50.30 ID:uCXjYmpY
968名無し~3.EXE:2012/11/01(木) 18:11:05.48 ID:9C1dzG6y
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
974名無し~3.EXE:2012/12/11(火) 23:07:04.56 ID:yJcgaIML
ただ単に
ls
とやるとLengthとうファイルサイズを表す列が表示されますが、
ls | Export-Csv a.csv
とやると出力されたa.csvにはLengthという列がありません。
Lengthも出力したい場合はどうすればよいのでしょうか?
975名無し~3.EXE:2012/12/11(火) 23:46:49.57 ID:8B2XcPsK
ls | select-object Name,Length | export-csv a.csv
976名無し~3.EXE:2012/12/12(水) 21:18:55.57 ID:qMSdpiGF
>>975
ありがとうございます。ファイルサイズを出力させることが出来ました。

それにしても↓のようにしてもなぜLengthが出ないんだろう?謎だ…
ls | select-object * | export-csv a.csv
977名無し~3.EXE:2012/12/12(水) 23:43:11.09 ID:KnVwFSTl
>>976
ls の出力にディレクトリがなければ Length が出力されたよ
978:2012/12/23(日) 22:42:27.64 ID:rlbzwsZi
推薦expert
979名無し~3.EXE:2013/01/24(木) 00:33:27.56 ID:gx4GBbSt
PowerShellを使ってGUIツールの自動化テストを行いたいのですが、
参考になるページなどあったら教えてください。
980名無し~3.EXE:2013/01/27(日) 19:29:36.57 ID:jUP9hk9G
diffコマンドを、

diff $(gc "c:\aaa.txt") $(gc "c:\bbb.txt") -inc

のように使っているのですが、行番号が出ないので非常に不便です。
何か書き方が悪いのでしょうか?それとも元々出ない?
行番号を出す方法はあるのでしょうか?
981名無し~3.EXE:2013/01/28(月) 01:31:55.80 ID:llkBPOL7
>>980
やるとすればSelect-Stringで全行ヒットするようなパターンを与えて行番号出すくらいかねぇ
compare (grep ^ a.txt) (grep ^ b.txt)
あと一行コマンドの場合括弧の前の$はいらんよ


この板自動で落ちるのって980からだっけ
982名無し~3.EXE:2013/01/28(月) 20:31:24.91 ID:BAHcnE+Z
>>980
ごめんSelect-Stringの出力にパス情報が入ってるの忘れてた
$a = grep ^ .\a.log | % { $_.Path = ""; $_ }
$b = grep ^ .\b.log | % { $_.Path = ""; $_ }
compare $a $b

みたいな感じでならうまくいくよ
983980:2013/01/29(火) 01:32:57.70 ID:yPH+ac3a
>>982
ありがとう!明日試してみますね。
984980:2013/01/29(火) 23:36:12.56 ID:yPH+ac3a
>>982
今日使ってみましたが、バッチリうまく行きました!
どうもありがとうございます。

ところでこれは文字コードがUNICODEのファイルでやると問題なかったんですが、
SJISのファイルでやると日本語が文字化けしてしまいました。
これはPowerShellの仕様なのでしょうか???
985名無し~3.EXE
-Encoding オプション付けとけ