1 名前:デフォルトの名無しさん mailto:sage [2020/01/01(水) 16:08:31.66 ID:4oQ1Kxot.net] 前スレ PowerShell -Part 3 https://mevius.5ch.net/test/read.cgi/tech/1539074808/ 次スレは>>980 が立ててね!!
751 名前:726 mailto:sage [2020/11/14(土) 00:23:47.78 ID:8FDial4y.net] あああああ原因分かったあああ! 全角スペースだああ! 駄目なファイルの全角スペースを削除したら読み込めました! しかし修正方法が分からない…。とりあえず>>742 さんの言う通り$m2v = $argsとして、以下ここで貼られていた改善案の結果 "$args"の場合:$m2vの中身→フルパス $args[0]の場合:$m2vの中身→最初の半角スペースまで ""$args"" →スクリプト自体がすぐに終了 `"$args`" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。 "$($args -join ' ')" →ファイル読み込みに失敗 $m2vの中身→フルパス \"$args\" →コマンドレット、関数、スクリプトファイル、または操作可能なプログラムの名前として認識されていません。 "$($args[0])"→ファイル読み込みに失敗、$m2vの中身は最初の半角スペースまで 正直$args[0]を理解できてない気がします。殆ど変わってませんが、とりあえずpastebinに貼っておきます。ttps://pastebin.com/AQZqQ6aX
752 名前:726 mailto:sage [2020/11/14(土) 01:10:54.25 ID:8FDial4y.net] あ、下記忘れましたが"$args"と$args[0]も最初と変わらずファイル読み込みに失敗します。
753 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 01:52:08.34 ID:OfQ57GBv.net] -joinじゃ空白の連続があるとバグることには気付いてたけど、PSが全角空白をホワイトスペースとして扱うのは盲点だったわ こういうところPSは厄介だな…… そのスクリプトは呼び出された時点で既に引数が復元不能になってるので、スクリプトの呼び出し元を変える必要がある powershell C:¥your-script.ps1 "a b c.avi" のように呼び出しているのだとしたら powershell -file C:¥your-script.ps1 "a b c.avi" と書き換えると動く ちなみにスクリプト内でParamを明示的に定義して powershell C:¥your-script.ps1 -oreore_arg0 "a b c.avi" のように呼んでもいいらしい
754 名前:726 mailto:sage [2020/11/14(土) 03:06:15.72 ID:8FDial4y.net] >>749 行けました! ありがとうございます! 後半の意味がちょっと分からないんですが、動画ファイル名を明確にしろということでしょうか?
755 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 04:21:18.02 ID:C2BVBS/P.net] 引数をシングル・ダブルクォーテーションで囲む事で、 1つの引数として解釈される 囲っていないと、複数の引数として解釈されてしまうから こういうのは、Linux では、うるさいぐらいに注意する
756 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 05:26:16.13 ID:/XxpwyFY.net] 最初にPCに自分の名前を流用した名前を付ける時点で 半角英数にする、空白入れないというのを徹底しないと自動化には程遠い
757 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 05:35:00.14 ID:YIajn/qh.net] おめやで(*´▽`*)
758 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 07:04:37.55 ID:4EKVBZXC.net] おめやで?
759 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 10:49:04.93 ID:OfQ57GBv.net] >>750 自分で引数名を定義して渡すやり方 引数ひとつひとつの範囲を明確にできるのでPSにおかしな解釈をされようがなくなる どちらかというと経験者向けの参考として書いたから動いたなら気にしなくていいと思う Powershell Paramで検索したら詳しく出てくる
760 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 11:12:05.60 ID:OfQ57GBv.net] >>751 今回はその常識に反するPS固有の問題だよ powershell C:¥foo.ps1 "a b c" d e f # 全角半角空白混在 のように書くと、経験的な常識では $args[0] = "a b c" $args[1] = "d" $args[2] = "e f" の3つに分解されることを期待するけど、今回は a 〜 f が全部バラされて$argsは6個の配列になるという事象 経験から問題を矮小化しがちになるのは老化による成長鈍化だと思う 自戒を込めて
761 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 11:18:40.57 ID:xztQReuw.net] 省略しないで実際に流したコマンドをそのまま晒したほうがいいような気はする せいぜい数行だろうし
762 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 13:03:46.86 ID:eAmLQM6Q.net] WindowsのD&Dによるバグ仕様を回避するためにはpathに半角spを含めておいた方が良い
763 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 14:43:52.28 ID:vnxWLQnj.net] >>756 > a 〜 f が全部バラされて$argsは6個の配列になる どのバージョンだよ 5.1、7.0、7.1で試したけど $args[0] は "a b c"、$args.Length は 4 になるぞ
764 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:37:31.99 ID:OfQ57GBv.net] >>759 バージョン5.1をcmdから呼び出して確認した 再現しなかったのは-fileを指定したからじゃない?
765 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 15:44:28.74 ID:cwgCwaC3.net] >>759 Windowsのパラメーターの分解は呼ばれ側プロセスで処理すんだけど powershellは起動時のバージョンと実行時のバージョンが違うことがある powershellのバージョン違いを複数入れてる場合が恐らく該当する 引数4になるパターンはpowershellバージョン2で実行されてる powershell -v 2 で起動した場合は引数4 powershell -v 5 は全部バラけて引数6 俺はこういうバグだか仕様だかに付き合うの嫌だから一時ファイルや環境変数とかでやりとりする
766 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:04:59.98 ID:cwgCwaC3.net] [Environment]::CommandLine や [Environment]::GetCommandLineArgs() を使うとpowershellに因らない.NETで処理したパラメーターが得られるからこれが安全かもね
767 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:05:13.61 ID:OfQ57GBv.net] -v 2 で起動したらたしかに引数4になったけど $args[0] は a になったわw -v 2 だと全角スペースが区切りとして解釈されない
768 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 16:21:10.31 ID:OfQ57GBv.net] 原理はこんな感じかな? まずPS外から呼び出したときは引数はいわゆる普通にparseされる powershell C:¥foo.ps1 "a b c" d e f → C:¥foo.ps1、"a b c"、d、e f の4引数 powershell.exeに-fileも-commandも指定されなかったとき、powershellはすべての引数を-commandの対象として扱う powershell.exeは引数をワンライナーのスクリプトとして処理しようとする 複数に分割されて受けたパラメーターをコードで例えると $args -join ' ' のような残念な方法で結合する & "C:¥foo.ps1 a b c d e f" 相当のスクリプトが実行される 全角スペースを区切りと見なすかどうかはPSのバージョン次第
769 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 20:24:33.59 ID:6rE1W4Lt.net] シングルクォーテーションならいけるんじゃなかったっけ
770 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 20:25:14.57 ID:ojc3zNUJ.net] これはひどい PS由来の機能は信用しない方がいいな
771 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 21:14:45.67 ID:BVcYkKlk.net] 全角スペースを許すプログラミング言語まとめ https://pronama.jp/2015/09/06/allows-ideographic-space-programming-languages/
772 名前:デフォルトの名無しさん mailto:sage [2020/11/14(土) 21:25:00.22 ID:OfQ57GBv.net] >>765 シングルで試したらいけたわw シングルならPS外では単なる文字として扱われるからcmdから呼び出したとき C:¥foo.ps1 'a b c' d e f の5引数になって、連結結果は & "C:¥foo.ps1 'a b c' d e f" 相当になるからうまくいく模様
773 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:11:59.00 ID:ssVCI5qt.net] Excelのセル内の文字列全部ではなく、セル内の一部の文字列だけ文字色を変更する事は出きますか?
774 名前:デフォルトの名無しさん mailto:sage [2020/11/16(月) 22:33:49.14 ID:lpvH3HhJ.net] 自決しました。かおもじ
775 名前:デフォルトの名無しさん mailto:sage [2020/11/27(金) 20:48:34.28 ID:0Gsdb/Fk.net] >>756 powershell C:\foo.ps1 "a` b` c" d e` f
776 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 20:01:43.24 ID:ako3hAti.net] .Net Frameworkの質問になるかもしれんが、Powershellから使うのでこちらに 対話型のスクリプト作っててユーザーからファイルやフォルダのパスの入力を求めるのにGUIにしようと思って System.Windows.Forms.FolderBrowserDialogとか FileBrowserDialogとかを使ってやろうとしてますが、 ダイアログ画面が他のウインドウに隠れてユーザーが気づきません。 最前面表示させるにはどうすればよいでしょうか?
777 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 21:23:54.75 ID:ako3hAti.net] 自決しました。 topmostプロパティをtrueに設定したFormオブジェクトを FolderBrowserDialogオブジェクトのShowDialogメソッドの引数に渡すんですね。 こういう方法はマニュアル読んでもまったくわからない。苦手。
778 名前:デフォルトの名無しさん mailto:sage [2020/11/28(土) 22:56:50.75 ID:goyIH8CW.net] >>773 待て早まるな
779 名前:726 mailto:sage [2020/12/03(木) 20:12:26.39 ID:AP2X4U04.net] >>726 です。先日は貴重なアドバイスをどうもありがとうございました。 申し訳無いんですがまた詰まってしまったので助けて下さい。 Trim(2505,6665) ++ Trim(9815,34297)〜 という内容のテキストファイルを整形して 2505 6665 9815 34297 という形にしたいんですが、改行が出来ません。 ttps://orahoview.com/replacetextinfilebypowershell/ ここを参考に $utltrimfile = $(Get-Content (テキストファイルのパス)) -replace ") ++ Trim(" "`n" $utltrimfile = $trimfile -replace "," "`n" $utltrimfile > (テキストファイルのパス) と書いてみたんですが「`nを使用できません」とエラーが出ます。\nでも同様の結果でした。 改行をする方法はありますか?
780 名前:デフォルトの名無しさん mailto:sage [2020/12/03(木) 20:44:02.20 ID:gj1mOZdT.net] >>775 数字以外が出てきたらそこで区切ることで配列にする 配列要素のうち空文字列であるものを除外 配列をまるごとファイルにリダイレクトして改行された出力結果を得る $utltrimfile = $(Get-Content (テキストファイルのパス)) -split '\D' | ?{$_ -ne '' } $utltrimfile > (テキストファイルのパス)
781 名前:726 mailto:sage [2020/12/03(木) 21:29:21.46 ID:AP2X4U04.net] 出来ました! ありがとうございました!
782 名前:デフォルトの名無しさん [2020/12/07(月) 00:00:56.83 ID:8Ddysj0U.net] PowerShellにinterfaceありますか? 空のクラス定義するしかないですか?
783 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 00:09:24.05 ID:rAKRPC/o.net] ■Powershellコマンドを実行する PS C:\Users\hoge> Get-NetIPConfiguration InterfaceAlias : Wi-Fi InterfaceIndex : 10 InterfaceDescription : TP-Link Wireless USB Adapter NetProfile.Name : Buffalo-A-428D (以下略) なんかたくさん出る ■(Powershellコマンド).列の名前 を実行する PS C:\Users\hoge> > (Get-NetIPConfiguration).NetProfile.Name Buffalo-A-428D .列の名前で指定したものしか出ない。 こういう(コマンド).列名っていうので、出力を絞る方法に名前ってありませんか?
784 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 00:52:35.54 ID:fL+10lW/.net] grep
785 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 00:55:50.26 ID://YuCj5S.net] interfaceってたぶんJava的な意味でのやつか
786 名前:デフォルトの名無しさん [2020/12/07(月) 00:57:24.19 ID:8Ddysj0U.net] >>781 そうなのよ
787 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 01:07:36.68 ID:nVLltyNc.net] : だね
788 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:14:39.74 ID:Zb+BuNXc.net] >>779 . はプロパティ逆参照演算子だよ Property dereference operator
789 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 07:24:15.67 ID:Zb+BuNXc.net] . で出力を絞る方法、正確には対象を選ぶ方法は、一般的にはプロパティアクセスが該当するかな
790 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 08:49:51.37 ID:Qq2AGx/W.net] メンバーアクセス演算子 . https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_operators#member-access-operator- オブジェクトのプロパティおよびメソッドにアクセスします。 メンバー名は式にすることができます。 $myProcess.peakWorkingSet (Get-Process PowerShell).kill() 'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
791 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 15:48:31.93 ID:5uzreY+I.net] copy-itemでディレクトリを指定して、内部のファイルがパス260文字以上でエラーを出すとき、そのパスを取得する方法はあります?
792 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 16:04:01.41 ID:8iO4bdx+.net] >>787 Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathEnabled -Value 1
793 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 18:20:51.52 ID:5uzreY+I.net] >>788 ありがとう ただそのやり方はwin10にしか出来ないようで、win8.1ではLongPathEnabledは存在しないようです ググってもLongPathEnabledのwin8.1版は見つからないもので……
794 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 22:33:03.33 ID:wvARFKZP.net] >>789 単に制限回避したいなら \\?\ 使えば良いんじゃないかな https://stackoverflow.com/a/53099257 https://superuser.com/a/760601 そうじゃなくて、260文字以上のパスを探したいなら、そういうツールがいくつかあるよ https://sourceforge.net/projects/tlpd/
795 名前:デフォルトの名無しさん mailto:sage [2020/12/07(月) 23:37:26.80 ID:5uzreY+I.net] >>790 試してみます ありがとなす
796 名前:デフォルトの名無しさん mailto:sage [2020/12/08(火) 15:51:45.96 ID:CDSpQQd3.net] 外部コマンド | PowerShellの関数って風にパイプでつないで処理するとき 出力側が終わるまで一旦全部バッファリングしてから、ようやくPowerShellに処理が移る感じになるんですが 並列で処理するようにするにはどうすればいいでしょうか?
797 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 21:12:35.73 ID:6BQNLUy5.net] #1個めループ for($i=0; $i -le 10; $i++) { $hoge="ikkaime_" Write-Output $hoge$i } #2個めループ for($i=0; $i -le 10; $i++) { $hoge="nikaime_" Write-Output $hoge$i } これを1個のforにまとめる素敵なアイデアございませんでしょうか。 何がしたいかというと、1個めのループ(10回)が終わったら、$hogeをniakieme_にして、 もう10回ループさせて終わるようにしたいです。
798 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 21:25:03.78 ID:3lwwmG32.net] $hoge="ikkaime_" for($i=0; $i -le 20; $i++) { if ($i -eq 10) { $hoge="nikaime_" } Write-Output $hoge$i }
799 名前:デフォルトの名無しさん [2020/12/10(木) 21:59:45.86 ID:/iej8cKu.net] foreach ($hoge in 'ikkaime_', 'nikaime_') { for ($i = 0; $i -lt 10; $i++) { Write-Output $hoge$i } }
800 名前:デフォルトの名無しさん mailto:sage [2020/12/10(木) 23:27:25.70 ID:uqnVDABe.net] $ikkaime = @() $nikaime = @() for($i = 0; $i -le 10; $i++) { $ikkaime += "ikkaime_$i" $nikaime += "nikaime_$i" } Write-Output $ikkaime Write-Output $nikaime
801 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 03:49:50.69 ID:bpjP0VBu.net] "ikkaime_","nikaime_"|%{$hoge=$_;0..9|%{$hoge+$_}}
802 名前:793 mailto:sage [2020/12/11(金) 23:44:28.19 ID:YtFbF7ro.net] ありがとうございました。 書き方がいくつもあるんですね。 非常に脅されたました。 ありがとうございます。 ちなみに、>>795 で処理しました。
803 名前:デフォルトの名無しさん mailto:sage [2020/12/11(金) 23:55:43.98 ID:BGcESmPN.net] インクリメントのループはこう書いたほうがスッキリする foreach ($i in 0..9) {
804 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 00:05:08.43 ID:w0iK+TRN.net] >>797 こういうパイプがネストしてるのに違和感あるんだけど 多少効率悪くてもパイプ1本にできないかな
805 名前:デフォルトの名無しさん [2020/12/13(日) 01:22:24.35 ID:cCJaeZ7C.net] for ($i=1; $i -le 2; $i++){ Switch($i) { 1 {(1..10) | %{"ikkaime_"+$_}} 2 {(1..10) | %{"nikkaime_"+$_}} } }
806 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 07:32:06.23 ID:5EW0FlRD.net] パイプは繋げてナンボ UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大 長いパイプラインが違和感? いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
807 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 08:18:38.20 ID:6TpS+NE1.net] 0..9 | % { "ikkaime_$_"; "nikaime_$_" } | sort
808 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 08:21:28.01 ID:7zDtZqQK.net] function hoge($fuga) { 0..9 | ForEach-Object {Write-Output "$fuga$_"} } hoge 'ikkaime' hoge 'nikaime'
809 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 08:23:17.62 ID:7zDtZqQK.net] >>800 "ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
810 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 10:24:56.32 ID:aJyBOeQT.net] >>802 長いパイプじゃなく、パイプライン処理の名にそぐわない、 行って帰ってくるようなネストされてるのが気持ち悪い
811 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 20:15:51.92 ID:w0iK+TRN.net] >>803 >>805 そうそうこういうのがいいね
812 名前:デフォルトの名無しさん mailto:sage [2020/12/13(日) 22:17:37.96 ID:aJyBOeQT.net] ゴルビーのパイプライン大作戦にだって行って帰ってくるようなパイプは無いだろ
813 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 13:38:52.97 ID:MCQs+fzK.net] 変数を事前に全部固めた書いたほうがわかりやすいと思うのですが、 ループ前に定義した変数の値に、ループ時の変数を入れ込む方法がわかりません $mynameis変数をループ中(コメントの位置)に持ってくると、問題ないんですが、 なんとか#変数ってしてあるところにもってきたいんです 定義したときには空で、あとから追加で変数に値をいれることってできないんでしょうか? ソース #変数 $watashi = "私は" $fname = "佐藤" $mynameis = "$watashi$fname$lname" foreach ($lname in "一郎","二郎","三郎"){ #$mynameis = "$watashi$fname$lname" #名を名乗る Write-Output $mynameis }
814 名前:デフォルトの名無しさん [2020/12/14(月) 14:58:28.73 ID:0uVb17k3.net] $mynameis = { "$watashi$fname$lname" } $watashi = "私は" $fname = "佐藤" foreach ($lname in "一郎","二郎","三郎"){ #名を名乗る Write-Output (mynameis) }
815 名前:デフォルトの名無しさん [2020/12/14(月) 15:01:37.07 ID:0uVb17k3.net] >Write-Output (mynameis) Write-Output (&$mynameis) こうかも、PowerShell難しすぎ
816 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:21:03.56 ID:vj7TAroN.net] foreachはスコープ作らなかったと思うけど 何が問題なの?
817 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:31:50.90 ID:vj7TAroN.net] ごめんようやく理解した 最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな 変数が自動で書き変わるのは正直気持ち悪い
818 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 21:43:34.54 ID:MBsazS7x.net] $watashi = "私は" $fname = "佐藤" $mynameis = "$watashi$fname{0}" foreach ($lname in "一郎","二郎","三郎"){ Write-Output ($mynameis -f $lname) }
819 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 22:30:25.12 ID:LFps+YXF.net] モダンな言語を使って書くレガシープログラミングだね 先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
820 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 22:33:35.98 ID:/tZ0PSGV.net] そこは鈴木にしようぜ
821 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 23:10:29.87 ID:EXeKWskh.net] できないことはないってだけで、やめたほうがいい 他の人がコードを読む時にとても困惑させるし 半年後に自分が読んでも理解に苦しむかもしれない
822 名前:デフォルトの名無しさん mailto:sage [2020/12/14(月) 23:57:40.98 ID:CBAGo1je.net] 意外とPerl的なスパゲッティの罠がある言語なのね
823 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 03:55:48.18 ID:eKJAj5sp.net] >>810 みたいにスクリプトブロックで評価順序制御するのは別におかしくないと思うけど
824 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 07:38:16.79 ID:T2M/UCWI.net] 変数宣言を冒頭に集めるという、昔の言語ではルールだったけどデメリットの方が多いとして廃れた風習 その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな 古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い 記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
825 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 07:38:27.49 ID:T2M/UCWI.net] この話をPowershellの罠とされてしまうのはさすがにかわいそう
826 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:15:17.29 ID:HMGpB1Xp.net] $watashi = "私は" $fname = "佐藤" $lname = "一郎","二郎","三郎" $lname.ForEach{Write-Output "$watashi$fname$_"}
827 名前:デフォルトの名無しさん mailto:sage [2020/12/15(火) 13:34:51.98 ID:/uFuBiiy.net] "私は"と"佐藤"を分ける意味がない 気持ちは分からなくもないけど
828 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 09:44:04.15 ID:VCJoAcsJ.net] 1. webからテキストをDLしてカレントディレクトリに Shift-JIS で保存したい。どう書けばいいですか? https://example.com/test.txt 文字コード:UTF-8 コマンドプロンプトから以下でDL出来るのまでは調べて分かったんだけど文字コードを変えて保存するのが分かりません powershell -Command "Invoke-WebRequest https://example.com/test.txt -OutFile test.txt" コマンドプロンプトにコピペかバッチから使いたいのでワンライナーで出来ると嬉しいです 2. 1に似た処理でweb上のUTF-8のtest.txtをカレントディレクトリのShift-JISのabc.txtに追記したい こちらもコマンドプロンプトから powershell -Command "〜 みたいに出来ればワンライナーで
829 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 13:22:09.75 ID:JHzHImy2.net] >>824 Invoke-WebRequestのOutFileオプションじゃなくて、EncodingオプションのあるOut-Fileコマンドレットの方を使ったら? (cmdじゃなくてpowershellから実行すれば、powershell -Command ""の部分はいらないよ) Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default test.txt 追記するなら、Appendオプション Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default abc.txt -Append
830 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 19:10:36.45 ID:VCJoAcsJ.net] >>825 レスありがとうございます。ですが出来ませんでした Fileは作られるのですが内容が以下のようになります StatusCode : 200 StatusDescription : OK Content : ここに中身が複数行 尻切れ RawContent : HTTP/1.1 200 OK Connection: keep-alive x-robots-tag: noarchive, nofollow, noindex なんか色々 Forms : {} Headers : 諸々 Images : {} InputFields : {} Links : {} ParsedHtml : mshtml.HTMLDocumentClass RawContentLength : 中身、Content +尻切れ部分 で保存するにはどう書けばいいですか? Win10.0.18363.1256 PSVersion 5.1.18362.1171
831 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 20:03:25.26 ID:kYgyiRJ/.net] (Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt
832 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 20:37:34.73 ID:VCJoAcsJ.net] >>827 出来ました!ありがとうございます! なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。 バッチで読み直して再保存すれば行けそうです やりたいことが可能になりました。感謝!
833 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 21:11:10.07 ID:CXRufgbD.net] >末尾に改行コード1つ余分に追加されてしまいます こういうの気持ち悪い! 誰か助けてあげて!
834 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:24:39.55 ID:kYgyiRJ/.net] ググって出てくるやつだとPowershellのVer5以上なら (Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt -NoNewline
835 名前:デフォルトの名無しさん mailto:sage [2020/12/16(水) 23:38:36.87 ID:VCJoAcsJ.net] >>829 ありがとうございます。私もモヤモヤしてたので調べて報告するつもりでした >>830 ありがとうございます -NoNewline で末尾改行追加されませんがLFのままになってしまうようです たぶんLFをCRLFにreplaceしてからOut-File -NoNewline で行けそうかも、というところまで来ていたのですが、、 置換のコマンドレットが分からず苦戦しています
836 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 04:50:30.78 ID:aeRfyZfG.net] >>831 .NETのString.Replace()
837 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 05:23:59.73 ID:P27ySftq.net] powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -join '`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline" powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -replace '`n,`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline" リファレンスとにらめっこし何百回と色々試してこれに行き着いてこれなら行けそうと思ったのですがLFのまま。。 Get-ContentとかSet-Contentとかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです 基礎的な事から覚えないとちょっと自分には無理かもです^^;
838 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 11:05:46.69 ID:IMvwa6Jv.net] >>833 -replace '`n,`r`n' のところは -replace '`n','`r`n' じゃない? https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1#replacement-operator
839 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 11:14:10.52 ID:aoellUFv.net] SurfacePro8の、一応待たれてはいるがあまり期待されてない感は異常
840 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 14:29:13.42 ID:hxo0ZZXM.net] >>833-834 "`n", "`r`n" じゃねーの?
841 名前:デフォルトの名無しさん mailto:sage [2020/12/17(木) 17:50:06.55 ID:P27ySftq.net] >>836 ヒントありがとうございます 最終的に以下で出来ました ren jane2ch.brd jane2ch.brd.bak &© jane2ch.brd.bak jane2ch.brd &&powershell -Command "(Invoke-WebRequest https://example.com/bbsmenu.brd).Content -replace \"`n\",\"`r`n\"|Out-File jane2ch.brd -Encoding default -Append -NoNewline" アドバイス下さった方皆ありがとう
842 名前:デフォルトの名無しさん mailto:sage [2020/12/18(金) 21:36:03.86 ID:NKeMhQjy.net] Invoke-WebRequestはaliasで短くできるよ (Get-Alias -Definition Invoke-WebRequest).Name curl iwr wget Out-Fileはaliasが無い
843 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 16:52:16.58 ID:jgut+Hkv.net] 関数とクラスメソッドでreturnまわりの振舞い全然違うのかよ ほんまクソやな
844 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 17:32:29.13 ID:iwrlPpxO.net] 自分が言語を知らないだけなのに言語を叩くやつは技術力があれだって書込みをLinuxスレで見た 謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
845 名前:デフォルトの名無しさん mailto:sage [2021/01/01(金) 18:39:57.15 ID:K4bi2CUk.net] 詭弁だね
846 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 12:59:00.83 ID:6NGWiCza.net] そんなウンコになるほど振る舞い違ったっけ
847 名前:デフォルトの名無しさん mailto:sage [2021/01/02(土) 14:38:10.21 ID:SsQKjWAu.net] 関数のreturnは単に関数を抜けるだけ 出力はストリームを使う クラスのメソッドはreturn文でのみ値を返す 多くの言語でよくみられるやつ Write-Outputしても無視される
848 名前:デフォルトの名無しさん [2021/01/02(土) 14:45:10.44 ID:o3T1iAcx.net] 変数のスコープも違うよねー function f() { echo $a } $a = "test" f 関数はこれが気持ち悪すぎてメソッドしか使わなくなった
849 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 01:23:46.88 ID:RCSnKIYE.net] >>843 ,844 なるほどありがd
850 名前:デフォルトの名無しさん [2021/01/03(日) 01:30:49.55 ID:BT1KEPia.net] 質問です。 .NETのKeyedCollectionクラスを使用したいのですが、 パイプラインに関するエラーメッセージが出てうまくいきません。 解決方法を教えていただけませんか。 環境はWindowsPowerShell 5.1をVSCode上で実行しています。 ソースコードとエラーメッセージは下記のとおりです。 ◆ソースコード class Record { [string] $Key [double] $Data } class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] { [string] GetKeyForItem([Record] $item) { return $item.Key } } $r = [Record]@{ Key = "pi"; Data = 3.14 } $c = [MyCollection]::new() $c.Add($r) $c["pi"].Data # 3.14と表示されてほしい ◆エラーメッセージ: パイプラインの作成中にエラーが発生しました。 + CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId : RuntimeException 以上、よろしくおねがいします。
851 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 04:03:05.06 ID:leX2V3Ud.net] クラスごとにファイル分けてドットソースで読み込んで
852 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 04:09:59.45 ID:ORVbOLX2.net] >>847 うちでも再現したわ Win10 1909 一応定義をC#で書いたら動いたから載せておく Add-Type @" public class Record { public string Key; public double Data; } public class MyCollection : System.Collections.ObjectModel.KeyedCollection<string, Record> { protected override string GetKeyForItem(Record item) { return item.Key; } } "@ $r = [Record]@{ Key = "pi"; Data = 3.14 } $c = [MyCollection]::new() $c.Add($r) $c["pi"].Data # 3.14と表示されてほしい
853 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 04:29:20.63 ID:ORVbOLX2.net] ごめん >>846 宛ね >>847 まじですか でもPSの運用的にクラス定義で複数ファイルに分けるとかありえないわ コンソールからだと丸ごとコピペじゃなくて定義を1個ずつコピペするとエラーにならないし なんなのかね
854 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 08:40:29.46 ID:MW0NgZmT.net] PowerShellのclassってどの段階で解釈されるんだろう
855 名前:デフォルトの名無しさん mailto:sage [2021/01/03(日) 12:17:05.18 ID:n1qZMfJK.net] 実行文が入っていない 単にコンパイルされる文、型の宣言・定義しか入っていない。 インスタンスを作ったりする、実メモリの割り付けをされる文がない
856 名前:846 [2021/01/03(日) 17:02:17.09 ID:BT1KEPia.net] >>851 クラス定義のps1ファイルの中身はそうすべき、ということでしょうか? >>849 確かにコンソールで全て定義すると動きますね。 クラス周りの動きが難しいです。。。 >>847 ありがとうございます。 下記のように書き直したところうまく動きました。 ◆Record.ps1 class Record { [string] $Key [double] $Data } ◆MyCollection.ps1 . .\Record.ps1 # ←これは無くても動く…?? class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] { [string] GetKeyForItem([Record] $item) { return $item.Key } } ◆Test.ps1 . .\Record.ps1 . .\MyCollection.ps1 $r = [Record]@{ Key = "pi"; Data = 3.14 } $c = [MyCollection]::new() $c.Add($r) $c["pi"].Data # 3.14と表示されてほしい
857 名前:851 mailto:sage [2021/01/03(日) 18:34:59.83 ID:n1qZMfJK.net] ファイルA の中で、ファイルB を読み込むと、 依存ファイルであるファイルBが、先に実行される事が確定するのだろう 一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
858 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 01:13:26.70 ID:MvQgNxU+.net] すいません、Powershellって、変数が空だった場合の デフォルト値を設定する方法ってありますか? bashでいうところの、 ${hoge:-fuga} って方法です。
859 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 02:45:37.83 ID:CsAW39lY.net] ねーよ VBSで言うIsEmpty相当すらない せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
860 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:03:25.19 ID:1A0NtNS9.net] ($nullでなく)空って状態はないと思うから、しいてやるならGet-Variableで変数が存在するか調べるくらいかね
861 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:17:46.65 ID:7KuEq4Kq.net] >>854 PowerShell 7の??演算子はいかがでしょうか
862 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:28:41.55 ID:6ewH2FY0.net] >>854 変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける 空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
863 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 08:34:36.49 ID:6ewH2FY0.net] >>856 変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
864 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 13:21:05.91 ID:ht1NLYQc.net] 7って便利なんだな
865 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:21:38.47 ID:R2rezzh3.net] >>854 >${hoge:-fuga サザエさんかよw
866 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 21:59:07.15 ID:o0FdcV6b.net] えっ?
867 名前:デフォルトの名無しさん mailto:sage [2021/01/07(木) 22:43:44.97 ID:IvTx7xdj.net] foo,barも知らない人でしょ
868 名前:デフォルトの名無しさん [2021/01/07(木) 22:50:20.03 ID:iqGL0Mlk.net] ほげふがの語源ってサザエさんだったの!? マジで!
869 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 00:22:33.24 ID:s1r0Khta.net] 来週もまた観てくださいね $hong -or $fouf
870 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 10:41:54.36 ID:zUQduDYO.net] 逆にメタ変数でhoge、fugaってそこまでマイナーか?
871 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 11:27:10.91 ID:3ONG9Jp/.net] >>866 誰もマイナーとか言ってない
872 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 11:53:36.70 ID:zUQduDYO.net] >>867 そうか、それはすまなかった。 早とちりでございました。 お詫び申し上げます。
873 名前:デフォルトの名無しさん [2021/01/08(金) 12:25:26.48 ID:eXVg8SYp.net] >>868 詫びろとは言ってない >>867 誰かがマイナーと言ったとは言ってない >>865 今週観たとは言ってない >>861 ご指摘にはあたらない
874 名前:デフォルトの名無しさん [2021/01/08(金) 12:25:53.52 ID:eXVg8SYp.net] これ万能論法ですな
875 名前:デフォルトの名無しさん mailto:sage [2021/01/08(金) 12:36:55.29 ID:2lGGPyYq.net] そう思ってるのは言ってる本人だけだろう
876 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:01:42.83 ID:KQEfE/JM.net] ※すべてのネットワークアダプタを無効にして、 Get-NetConnectionProfileは必ずエラーになる状態で実行しています。 $result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null $? False $result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null) $? True この場合、マル括弧がどんな働きをして 結果が変わってしまうのか教えてください。
877 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 01:03:45.10 ID:KQEfE/JM.net] ちなみにこうしても $result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi エラーメッセージ $? False $result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi) エラーメッセージ $? True という状態でした。
878 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 08:27:17.19 ID:kPw1IBO3.net] >>872-873 まあバグ(MS的には仕様とも言う)みたいなもんやね Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True. This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions. https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description なのでPowerShellを7にすれば解決するかと
879 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:13:27.43 ID:iGxXP/Ic.net] 5.1はメンテしないってことか? OSにデフォで入ってるバージョンなんだから直せよ
880 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 09:49:28.96 ID:kPw1IBO3.net] いきなり直したらユーザースクリプトのバグが顕在化したりするだろ どうでもいいようなスクリプトなら7に上げろよ
881 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 10:38:48.10 ID:amtktMoR.net] どうでもいいスクリプトで問題回避できるなら7に上げなくてもいいんじゃね。
882 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:36:00.49 ID:KQEfE/JM.net] >>874 ありがとうございます。 あげるのも怖いので別の方法にします。
883 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 11:45:27.45 ID:vKxQ0OMt.net] >>877 そう言うのは>>875 に言ってやれよ
884 名前:デフォルトの名無しさん mailto:sage [2021/01/09(土) 16:15:40.54 ID:WaDdsN2m.net] >>878 あげる?のではなくて別物なので併用できるけど。 5.1 → powershell.exe 7.x → pwsh.exe
885 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 04:54:33.84 ID:3v4yt86U.net] 以下の表記の意味を教えてください。 void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback) メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。 $batch = New-Object Google.Apis.Requests.BatchRequst($service) $batch.Queue で表示される内容です。
886 名前:デフォルトの名無しさん mailto:sage [2021/01/10(日) 08:11:25.80 ID:a907yL+h.net] クラスのメンバーにクラスがある時は+になるんじゃなかったか System.Environment+SpecialFolder みたいな [TResponse]はジェネリックの型引数 `1は型引数を1つ取るって意味
887 名前:881 mailto:sage [2021/01/10(日) 21:15:33.29 ID:3v4yt86U.net] >>882 ありがとうございます。ジェネリックというのは知らなかったので調べてみます。 あと、その、Queue[TResponse]、というメソッドに型が付いている?のもジェネリック関連でしょうか。
888 名前:デフォルトの名無しさん [2021/01/12(火) 16:53:39.85 ID:0UGYDHaB.net] pythonに飲み込まれるってマジ?
889 名前:デフォルトの名無しさん mailto:sage [2021/01/12(火) 18:35:28.45 ID:U7HouJQi.net] pythonが吐血しちゃいますよ
890 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 11:04:50.14 ID:u12/DUzm.net] >>884 え?Pythonから.NET Framework扱えるようになるの?
891 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:04:34.41 ID:JJnXAm01.net] 知らんけど今はまだ使えないの?
892 名前:デフォルトの名無しさん mailto:sage [2021/01/13(水) 12:35:42.75 ID:u12/DUzm.net] ironpythonなら
893 名前:デフォルトの名無しさん mailto:sage [2021/01/16(土) 08:03:53.11 ID:4aouipyb.net] v7.1.1 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.1
894 名前:デフォルトの名無しさん [2021/01/18(月) 22:22:09.29 ID:6Ncg8pZo.net] 【D:\】の全てのフォルダやファイルに対して、作成日時や最終アクセス日時などを設定したいのですが、 PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" } ではエラーが出ます。 何がいけないのでしょうか?
895 名前:デフォルトの名無しさん mailto:sage [2021/01/18(月) 22:59:36.90 ID:Pb59NPOt.net] 例えば特定の一つのファイルやフォルダなら上手く行くとか パイプを分解してどこでエラーになってるのかを突き止めるとか 丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
896 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 02:44:39.14 ID:m3MeBQ6p.net] 1.D:\が存在していない 2.D:\へのアクセス権がない 3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる どれかな? Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは フォルダへのアクセス時にエクスプローラー開いてると ”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても) 変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
897 名前:デフォルトの名無しさん [2021/01/19(火) 21:02:07.64 ID:qrtgnbPs.net] # set the target folder path $targetFolder = 'I:\'; # get all files including files in sub folders $itemList = Get-ChildItem $targetFolder -Recurse; foreach($item in $itemList){ $item.CreationTime = '2020/12/21 00:00:00' } なスクリプトで実行したらエラーなく出来ました。 お騒がせしてすみませんでした。
898 名前:デフォルトの名無しさん mailto:sage [2021/01/19(火) 23:49:36.84 ID:XQEllFmW.net] >>893 >>890 私の環境で実行したら何のエラーもなく、CreationTimeが2021/01/01 00:00:00 になったの。 逆質問だけど、どんなエラーだったのか教えてください。
899 名前:デフォルトの名無しさん mailto:sage [2021/01/20(水) 10:29:40.54 ID:sOzWFlEJ.net] エクスプローラーとか、バックグラウンドで動いているシステムなどが、 フォルダをロックしていたら、失敗する だから、タイミングによって、成功したり失敗したりする 読み取りロックは、読み取り同士では共有できるけど、 書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
900 名前:デフォルトの名無しさん mailto:sage [2021/01/25(月) 21:14:40.94 ID:PMAucoEc.net] v7.0.4 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.4
901 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 19:49:56.64 ID:BJM8Dy5y.net] テキストファイルに設定できるストリームって何に使うんすか?
902 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 21:16:07.96 ID:lPCF/h8Q.net] テキストストリームの事なのかNTFSの代替データストリームの事なのか どちらなんだ
903 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 22:11:57.22 ID:qq3K45Kg.net] 代替データストリームはテキストに限った話じゃないのでは
904 名前:デフォルトの名無しさん mailto:sage [2021/01/27(水) 22:45:50.85 ID:9akTDBYB.net] テキストに限った話ではないけど、質問者が正確に把握してるともまた限らない
905 名前:デフォルトの名無しさん [2021/01/29(金) 23:59:43.31 ID:t1LR5As2.net] PoweShellのクラスで、C#と同様にインデクサーを定義することはできますか? 例えば、あるクラスのインスタンス$hogeに対して $hoge[$i] という感じで添字でアクセスしたいです。
906 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 14:37:31.38 ID:jsWOzGKR.net] C#の演算子オーバーロードがPSで使えるかと同じ無意味な質問
907 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 16:01:58.79 ID:sgLd3qg+.net] >>902 使えるの?
908 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:07:09.19 ID:Ti7TRi+9.net] >>898 たぶんテキストストリームのことです file:stream1 ↑これ
909 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:24:57.96 ID:x4IKZ5QX.net] そのファイルに付属させたい情報を一緒にいれておくということだろう ソースだったら、開発秘話とか入れとけば?
910 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 17:26:58.51 ID:x4IKZ5QX.net] あと自分の写真とか連絡先とかプロフィールを入れとけばいいかもW
911 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 19:01:56.87 ID:Ti7TRi+9.net] >>905 >>906 ああREADME.md的なものをですか? なるほどそれは便利そう
912 名前:901 [2021/01/31(日) 19:31:38.13 ID:yFPHlREj.net] >>902 PowerShellでも.Netの コレクションクラスを使えますので、 インデクサーを使うこと自体はできますよね? 同様のことをユーザー定義クラスで実現できないかと思ったのですが、 無意味でしょうか…
913 名前:デフォルトの名無しさん mailto:sage [2021/01/31(日) 20:11:33.10 ID:IDCaHEld.net] >>904 それ代替データストリームに見えるけどどの辺がテキストストリームなんだろ しかも、NTFSに依存する機能で.mdの代替とか悪手でしかない
914 名前:デフォルトの名無しさん mailto:sage [2021/02/01(月) 11:36:09.24 ID:XDbQ82ak.net] >>909 結局何に使うのか言ってないじゃん
915 名前:デフォルトの名無しさん [2021/02/04(木) 23:44:34.92 ID:OAJDFKMl5] バカ不平多し★へつらい生きてるからリストラ対象 https://www.youtube.com/watch?v=carOYI-xNoI 勝ちは偶然、負けは必然★負けて消えた人に足りなかったものは? https://www.youtube.com/watch?v=agAQTF1OaBU&t=38s リーダー達の給料が高いのは単純労働者じゃないから https://www.youtube.com/watch?v=8o9il6dVXGk できません、自信がありません、無理です★ボンクラにしたのは誰? https://www.youtube.com/watch?v=54YNXSQsxuM 9割の人は、ただの作業員★自学自習こそ仕事の基本 https://www.youtube.com/watch?v=vIGKDmmBJcs サラリーマン、10年経てばボンクラ説 https://www.youtube.com/watch?v=QdfVJnVuLlY
916 名前:デフォルトの名無しさん [2021/02/05(金) 00:48:27.75 ID:a81hUa+F.net] PowerShellのパイプやリダイレクトは仕様が良くないね。 エンコードせずにバイナリデータのままパイプする従来の方法も選べたほうが良かったね。
917 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 14:45:47.08 ID:PbAzOwWf.net] cmd /c foo `| bar `> baz とでもしておけ
918 名前:デフォルトの名無しさん mailto:sage [2021/02/05(金) 21:20:19.10 ID:FdcfXC45.net] >>912 これじゃあかんの [byte[]]$bin = cat -encoding byte
919 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 08:02:58.77 ID:xZe5l+zL.net] パイプを使いたいんだよ
920 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 09:37:27.62 ID:ya6+Y4aC.net] パイプカットするの?
921 名前:デフォルトの名無しさん mailto:sage [2021/02/06(土) 14:28:17.57 ID:0arkAH5a.net] >>915 encoding byteがどういう型が返るか示しただけでもちろんパイプにも使えるけど
922 名前:デフォルトの名無しさん [2021/02/06(土) 23:58:30.54 ID:5Ze23T9D.net] >>913 `| や`>が解説されているマイクロソフト公式ページはどこになりますか? 検索キーワードが記号ばかりなので探し方が分からず困っております。 >>914 私の環境では、以下のエラーが出て動きませんでした。 Get-Content: Cannot process argument transformation on parameter 'Encoding'. 'byte' is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter 'name')
923 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 01:02:44.55 ID:hwDwbBnD.net] >>918 '|'はパイプ'>'はリダイレクトで調べれば出てくるよ bashの知識が必要になるな
924 名前:デフォルトの名無しさん [2021/02/07(日) 01:34:59.08 ID:IiZq+u+t.net] >>919 具体的なURLはどこになりますか?
925 名前:デフォルトの名無しさん [2021/02/07(日) 01:38:10.26 ID:IiZq+u+t.net] >>919 検索にbashの知識が必要というのは具体的にどういう意味ですか?
926 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 01:46:34.08 ID:IiZq+u+t.net] ひょっとして>>913 と>>919 は別人なのかな。 もし別人なら>>919 への質問はなかったことにしてください。論点がずれてるようだから。
927 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 07:11:26.49 ID:jVPjdJHk.net] @パターン1 $data = @('red','green','blue') if ( $data -ne 'green' ) { 'greenはありません' } greenはありません Aパターン2 $data = @('red','green','blue') if ( $data -ne 'pueple' ) { 'greenはありません' } greenはありません 両方とも同じ結果を返してしまいます。 配列と比較して、無かったらtrue、あったらfalseみたいな書き方ってありませんか? イメージとしては if ( $data.notContains('green')) みたいな書き方です。 用としては、if ( $data.Contains('green'))で足りるのですが、 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。 よろしくお願いいたします。
928 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:44:27.16 ID:jX/y7Db/.net] >>923 > 両方とも同じ結果を返してしまいます。 まず $data = @('red','green','blue') $data -ne 'green' で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う > 気持ちの問題として、無かったらtrue、あったらfalseという書き方をしたいです。 どうしても-eqとか使いたい場合、俺なら($data -eq 'green').Count == 0って書くかな どう見ても$data.Contains('green')の方がわかりやすいと思うけど
929 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:58:10.78 ID:fgGFki9a.net] $data = @('red','green','blue') if (not ($data -eq 'green')) {} if (not ($data.Contains('green'))) {} if (not ($data -contains 'green')) {} if ($data -notcontains 'green') {} if ('green' -notin $data) {} -eq演算子はフィルタとして働くのでここでの用法は微妙 -in系の演算子は配列が大きいとオーバーヘッドが大きいらしい
930 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 09:59:45.82 ID:fgGFki9a.net] 否定をtrueにするってどういうことだろ $colors = @('red','green','blue') $found = $data -contains 'green' if ($found) { } else { } なら自然に読み下せる ここで$notFoundという変数を使われると気になる if (not $found) { # 先に書いておきたい処理 } else { # 長々とした本処理 } としたいという趣旨ならわかる
931 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:03:05.78 ID:fgGFki9a.net] 変数名を変え忘れたので訂正 $found = $colors -contains 'green'
932 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:18:17.21 ID:jVPjdJHk.net] >>924-926 レスありがとうございます。 > 否定をtrueにするってどういうことだろ > どう見ても$data.Contains('green')の方がわかりやすいと思うけど $exec_shinai_jikan=@('01','02','03') $imananji=Get-Date -Format HH if ($exec_shinai_jikan -notcontains $imananji){ "実行するよ" } else { "実行しないよ" } 実際のコード(一部)はこれです。変数名のセンスが独特ですよね・・(By 開発の人、私は開発じゃないです)といわれているので 出すのが恥ずかしかったんです。混乱を生んだようでして申し訳ない。 >で何が戻ってくるか確認すればなぜそう言うふうに動くかわかると思う ・0か0を超える値か ・nullかnullを除く何らかの値か でtrue or falseが決まる感じでしょうか? -notって、-notだけじゃ赤傍線引かれるけどなにがだめなんだと思ったら、-not〜って表現があったんですね。 ありがとうございます。
933 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:22:55.16 ID:5sEA4G4p.net] >>919 bashの知識は不要でしょ DOSですらパイプやリダイレクト存在するんだし
934 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:24:14.00 ID:fgGFki9a.net] なるほどそういう感じか -not演算子のハイフン書き忘れてた ごめんね
935 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 10:26:29.15 ID:fgGFki9a.net] >>924 ($data -eq 'green').Count -eq 0 これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって ぬるぽになるかと思いきや$null.Countの呼び出しは特例的に0を返すんやね またPowershellの妙な癖を覚えてしまった
936 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 11:48:29.36 ID:jX/y7Db/.net] >>931 > これってgreenが含まれない場合は最初の-eq演算による絞り込み結果が$nullになって ならないよ、単に空の配列になるだけ gm -inputobject ($data -eq 'yellow') とかやればわかる
937 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 12:10:49.69 ID:fgGFki9a.net] >>932 ありがとう、勘違いしてた そこは自然な動きなんやね
938 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 13:45:02.08 ID:hwDwbBnD.net] >>920 https://docs.microsoft.com/ja-jp/powershell/ ここでリダイレクトとかパイプとか検索ワードを入れれば解説が出てくるよ
939 名前:デフォルトの名無しさん mailto:sage [2021/02/07(日) 20:57:33.01 ID:rt2m338a.net] >>914 ,918 6.0で仕様変更された https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/breaking-changes-ps6?view=powershell-7.1#unify-cmdlets-with-parameter--encoding-to-be-of-type-systemtextencoding-5080 -Encoding の値 Byteはファイルシステム プロバイダーのコマンドレットから削除されました。 新しいパラメーター -AsByteStream を使用して、入力としてバイト ストリームが必要なこと、あるいは出力がバイト ストリームであることを指定してください。
940 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 10:00:24.88 ID:hefdb5Yb.net] 可変長配列数?的なものの実現方法を教えてください。 CSVを以下の通り加工したいのですが、 1554412,A,B,C,D 2176944,D,C,E,F,G,H,I,J 4887447,F,H,J,A,K こんな感じのカンマ区切りcsvを 1554412,A 1554412,B 1554412,C 1554412,D 以下同じパターン で成形したいのです。 csv区切り文字は必ずカンマで、 フィールド数は行により異なります。 行を読み込んで、配列に入れて〜、配列の最初のフィールドを入れて〜 とぼんやり想像しているのですが、「個数が定まっていない行を、配列に入れる方法」が想像つきません。 可変長配列数?的なものの実現方法を教えてください。
941 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:12:00.38 ID:hRqw8VTE.net] 2つ目のカンマ or 改行まで読んでから要素数2の固定長配列に入れるのはどうですか。 エレガントな方法ではないと思うので、他の方の意見も参考にしてください
942 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 18:19:41.40 ID:hRqw8VTE.net] あ、A, D, FじゃなくてA, B, Cでしたか。 マルチバリューカラムになっているのを正規化したいんですね。 最初の一つ目だけ取るのと勘違いしてました。 1. 一行読んでstring 2. カンマでstring.splitしてstring[] 3. [1]からstring.lengthまでを、[0]とstring.joinして、string[] 4. 全行ループ これでどうですか
943 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:17:13.97 ID:JrOSOdLx.net] PowerShell っぽくならこんな感じかな '1554412,A,B,C,D', '2176944,D,C,E,F,G,H,I,J', '4887447,F,H,J,A,K' | %{ $a, $b = $_ -split ',', 2 $b -split ',' | %{ "$a,$_" } }
944 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 19:51:01.55 ID:hRqw8VTE.net] どうしてこれ動かないの? $fが更新されない スマホでコード書くの疲れたんで、誰か教えて下さい。 https://tio.run/##TY3LCsIwEEX38xVDyEJxLEaiVUHw/cYfkC5EUluoqTRFreK316kguBm4hzn3XtO7yVxkkqQs5cPhEEcCVKejtWrTmCY0pRm0ld/ta00zTnNa0JJWtKYN6F7P19pnsqINf29BjLDprkmcozjM7S3OUnsxNg8Gg72572JrBECYZuZ4irAmHxhb5NU6vkAW1Tijn08CZFihwh1awZ9VfC2myvM4OW9n7DmPmqoefIuelRRio6rgKwtG8IZ3WX4A
945 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:07:38.33 ID:bnTPmcqs.net] >>940 $xs[0]としてごらん 5行目"@ -split "`n"で意図通りになると思う
946 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:45:54.25 ID:JrOSOdLx.net] >>940 "[Environment]::NewLine" ↓ "$([Environment]::NewLine)"
947 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 21:58:58.82 ID:hefdb5Yb.net] >>938 とりあえず用は足せました。が、多分ご紹介の内容と全然違うことをやってると思います。 レスの内容が半分分かりませんでした。 >3. [1]からstring.lengthまでを ここが猛烈にヒントになってこんな感じにしました。 foreach ($l in Get-Content C:\temp\test.txt) { $l=$l.Split(",") 1..(($l.Length) - 1) | % {write-host ($l[0],$l[$_]) } } サンプルのコードをいただけると幸いです。 >>939 これも無事動きました。ありがとうございます。 %ってのを知りませんでした。 Powershell難しすぎです。 勉強してるんですが、正直心折れそうです。 bashはそこそこ使えるので行けるだろと思ってたんですが、ナメてました。 死にそうです。
948 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:00:44.14 ID:hefdb5Yb.net] >>943 自己レスすいません。 これも結局、 write-host ($l[0],$l[$_]) } で間をカンマ区切りにしたかったんですけど、 1時間手を変え品を変えで結局ダメでした。 何が悪いんでしょうか。
949 名前:デフォルトの名無しさん mailto:sage [2021/02/10(水) 22:12:55.91 ID:hefdb5Yb.net] 何度もすいません。 write-hostで標準で区切り文字が半角スペースになってるという事実がやっとわかりました。 {write-host -Separator "," $l[0]$l[$_]} で無事に希望の出力を得ることができました。 ありがとうございました。
950 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 00:08:14.80 ID:lj0aoxL+.net] すっきり書けなくてもどかしい $csv -split "\r\n" | % { $a = $_ -split ','; $a[1..($a.Count - 1)] } | % { $a[0], $_ -join ',' }
951 名前:デフォルトの名無しさん [2021/02/11(木) 02:23:21.20 ID:VegncXCD+] SIer業界がブラックな理由を解説する。エンジニアは自社開発をしているWeb業界がオススメ! https://www.youtube.com/watch?v=iy4nnAI9og4 【業界研究】IT業界でひと括りにするのは危険。SIer、Web制作、 アプリ開発で仕事内容が全く違います。【就活・転職】 https://www.youtube.com/watch?v=_IJQ2iBkf4w エンジニアの仕事が稼げる理由とは?プログラミングスキルと 仕事の需要は比例しないので、実は技術力が低くても稼ぐことができる! https://www.youtube.com/watch?v=82Bs-NH8jAM 通勤時間が長い人ほど無能説。家賃節約とか言っている暇があったら、 会社の近くに引っ越して浮いた時間に副業したほうがお金も貯まるし強くなれる。 https://www.youtube.com/watch?v=mt6K1RJnk6I プログラミングに英語は必要か?に対する明確な答え https://www.youtube.com/watch?v=WWULJbVECKU 私がヤフーを辞めた理由 https://www.youtube.com/watch?v=-G-7Hc3rJw8 ITエンジニアの種類と必要なスキル ?アプリケーションエンジニア編? https://www.youtube.com/watch?v=K9BaS2eBGmw 日本と海外のプログラマーの違いを比較してみた https://www.youtube.com/watch?v=u1OyelvNqM0
952 名前:デフォルトの名無しさん mailto:sage [2021/02/11(木) 19:38:29.26 ID:rrBqcjKj.net] >>940 newlineにクォートつけてたわw >> 940, 941 さんthx 一応quote外した結果。 https://tio.run/##TY3dCoJAEIXv5ykG2YuiUdrY0oKg/396gfAiYk3B1nClsujZbYwuuhk4H/Odc83uOrexTtOqEg@LQxw5ILtdpWSHxjShKc2gI/1eXymacZrTgpa0ojVtQAWBr5TPZEUb/t6CM0LXXtOkwMPc3JI8MxdtinAw2Ov7LjEaIMpyfTzF2BAPTAzyZhNfIMp6mtHPdsgBEdWotId2@GeVX4up9DxO1ttpcy5iVzbDb9GzliJs1RV8RckI3vCuqg8
953 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:16:23.07 ID:q/2+I+Zd.net] $?で直前のコマンドの実行結果を知ることができますが、 直前に実行したコマンドのPIDを知る方法ってありませんか? Start-Process -FilePath c:\bin\command.exe -ArgumentList 1 $cmd1pid=get-chokuzenn-pid $cmd1pid 78968 Start-Process -FilePath c:\bin\command.exe -ArgumentList 2 $cmd1pid=get-chokuzenn-pid $cmd1pid 4292 実際に動かしたいのは、ttpmacro.exe(Teratermのマクロ)です。 Teratemマクロで外部の機器にsshで接続して、ssh接続のログの内容を見て そのプロセスを終了させるか判断したいと思っております 書こうとしているスクリプトを動かす時点で、1個もTeratermが動いていないなら、 Get-Processでなんとかなると思うのですが、上記スクリプトを実行する時点で ほかのTeratermが動いている可能性があり、それを間違って死なすわけにはいかず、 Powershellスクリプト内で、Start-Processなりで動かした、直前のプロセスのIDを知る方法があればと思い相談させていただきます すいません、よろしくお願いいたします。
954 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:17:40.74 ID:q/2+I+Zd.net] test.ps1 Start-Process -FilePath c:\bin\command.exe -ArgumentList 1 $cmd1pid=get-chokuzenn-pid $cmd1pid 78968 Start-Process -FilePath c:\bin\command.exe -ArgumentList 2 $cmd2pid=get-chokuzenn-pid $cmd2pid 4292 すいません、スクリプトの例に誤りがありました 訂正します
955 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 09:57:59.46 ID:JWXF4JEZ.net] v7.0.5 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.5 v7.1.2 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.2
956 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 10:15:49.19 ID:JXvYdGCL.net] 引数に -PassThru を付けて戻り値からidで取れないかな?
957 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 11:17:25.75 ID:jxDcSv/l.net] >>949 プロセスIdなんて取る必要ない(むしろ危険) >>952 が言うように-PassThruオプションつけるとSystem.Diagnostics.Processオブジェクトが返ってくるからKill()メソッド呼ぶだけでいい
958 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:51:19.53 ID:q/2+I+Zd.net] >>952 >>953 $process = Start-Process -PassThru notepad $process.Kill() できました ありがとうございました
959 名前:デフォルトの名無しさん mailto:sage [2021/02/12(金) 13:58:44.73 ID:aXMNNeBu.net] すばらしい
960 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 18:04:24.59 ID:elIMNXvv.net] 音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、 dir /n /-b /s *.mp3 > playlist.txt の結果をランダムに入れ替えるにはどうすればいいでしょうか? (乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)
961 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 19:45:47.08 ID:PYtZn7CJ.net] >>956 テキトーでいいなら dir /n /-b /s *.mp3 | sort -prop @{Exp={[Guid]::NewGuid()}} > playlist.txt
962 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 20:59:17.73 ID:9JYy97c0.net] Sort-Object {Get-Random}じゃあかんの?
963 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:06:22.08 ID:PYtZn7CJ.net] >>958 それでもいいけど、遅いらしい https://aquasoftware.net/blog/?p=612
964 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:14:23.98 ID:D/l9Txdy.net] 自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない 5分とか掛かるならちょとやだけど
965 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 21:58:32.75 ID:WEbw7iAW.net] プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに
966 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:34:07.74 ID:XvWS5Qrl.net] >>959 のリンク先のコードで質問です 勉強のためちょこちょこ編集してみたところ、 「なんでこれで変数の中がランダムにおきかわるの?」と疑問がわきました $r = @(1,2,3,4,5,6,7,8,9,10) $r=($r | sort -Property @{Exp={[Guid]::NewGuid()}}) $r $foo = @(1,2,3,4,5,6,7,8,9,10) $foo[0] = $foo | sort -prop @{Exp={[Guid]::NewGuid()}} $foo[0] 前者のように、$rの中身を $r | sort -Prop〜で置き換えるというのなら納得がいくんですが、 なぜ、後者のように、書いてもランダムになるのかが納得いきません 変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。
967 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:48:16.31 ID:PYtZn7CJ.net] >>962 やってることは同じで結果が単に$foo[0]に入ってるだけ $foo[1]~$foo[9] の内容は変わってないはず ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる
968 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 22:59:06.67 ID:XvWS5Qrl.net] >>963 ありがとうございます 書き方が違うけど処理が同じというとらえ方でいいですか? "パターン1" $foo = @(1,2,3,4,5,6,7,8,9,10) $foo=($foo | sort -prop @{Exp={[Guid]::NewGuid()}}) $foo "パターン2" $foo = @(1,2,3,4,5,6,7,8,9,10) $foo = $foo | sort -prop @{Exp={[Guid]::NewGuid()}} $foo パターン1の書き方違いが、パターン2のようなとらえ方でいいでしょうか?
969 名前:デフォルトの名無しさん mailto:sage [2021/02/13(土) 23:33:24.56 ID:PYtZn7CJ.net] >>964 ああ、すまん ( ) は見落としてた パターン1は単に式を ( ) で包んでるだけだからパターン2と同じと思っていい
970 名前:954 mailto:sage [2021/02/13(土) 23:36:43.19 ID:elIMNXvv.net] Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort {Get-Random} や、 Get-ChildItem -path d:\ -filter *.mp3 -recurse | foreach {$_.FullName} | sort -prop @{Exp={[Guid]::NewGuid()}} でうまくいきそうです。 ありがとうございました。
971 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:07:20.96 ID:rA0IJrKX.net] >>965 ありがとうございますよくわかりました パイプで処理がわかれると思っておりましたが、 =で右辺と左辺に分ててる感じなんですね
972 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:22:33.69 ID:D24G58JB.net] >>966 上手く行って何より 蛇足だけど > foreach {$_.FullName} の所は PowerShell 的には > Select-Object FullName でもいいかな
973 名前:デフォルトの名無しさん mailto:sage [2021/02/14(日) 00:28:18.02 ID:D24G58JB.net] >>967 他の言語に似せるためか代入文は最優先で解釈されるようになってるみたい まあよくわからなかったら多少余分でも ( ) を付けといた方があとから見ても誤解されにくいと思う
974 名前:デフォルトの名無しさん mailto:sage [2021/02/19(金) 08:22:42.85 ID:islL1Ifn.net] Announcing the PowerShell Community Blog https://devblogs.microsoft.com/powershell-community/announcing-the-powershell-community-blog/
975 名前:デフォルトの名無しさん mailto:sage [2021/02/22(月) 04:45:12.99 ID:xcCpjLov9] 高度IT人材、富士通は最大年収3500万円へ https://www.nikkei.com/article/DGXMZO58248520Q0A420C2000000/ 「富士通年収3500万!」日本のIT企業の年収も、高額化してきました https://needs-explorer.co.jp/5801/ AI人材の獲得に超本気 NECが新人事制度を9人に適用、富士通は最大年収3500万円へsierblog.com/archives/1994846.html 【年収3500万円も】富士通、「ジョブ型」人事制度を導入 幹部社員から 高度IT人材 https://coinmap.jp/archives/56639 東芝、幹部候補をスタートアップに出向 21年度から https://www.nikkei.com/article/DGXZQODZ284AV028122020000000 スタートアップで「武者修行」、村田製作所など導入 https://www.nikkei.com/article/DGXMZO6588293005112020LKA000 「スタートアップ点火」中部から世界 名古屋支社シンポ https://www.nikkei.com/article/DGXZQOFD087YN008122020000000 インフルエンサーによる独自製品開発やブランド構築を支援するGenflowは英BGFから11.4億円調達 https://jp.techcrunch.com/2021/01/21/2021-01-20-genflow/ 本業より副業で稼ぐ「パワフル副業者」急増で企業に求められる新しい組織づくり https://dime.jp/genre/1076364/
976 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 08:20:29.72 ID:XBzTqCMZ.net] posh-git と GetChildItemColor でダイブましになった 他にもおすすめあったらおせーて!
977 名前:デフォルトの名無しさん mailto:sage [2021/02/23(火) 20:50:03.67 ID:8GGn/OTs.net] GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ
978 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:20:13.77 ID:NQgDi+il.net] #test.ps1 param([array]$foo) echo ('$ARGS[0]' +':'+ $ARGS[0]) echo ('$foo[0]' +':'+ $foo[0]) echo ('$foo[1]' +':'+ $foo[1]) echo ('$foo[2]' +':'+ $foo[2]) PS> .\test.ps1 aaa -foo bbb,ccc,ddd $ARGS[0]:aaa $foo[0]:bbb $foo[1]:ccc $foo[2]:ddd PS> .\test.ps1 aaa -bar bbb,ccc,ddd $ARGS[0]:-bar $foo[0]:aaa $foo[1]: $foo[2]: PS C:\script> PS> \test.ps1 aaa $ARGS[0]: $foo[0]:aaa $foo[1]: $foo[2]: @引数やパラメータの数、パラメーター名などのエラーをチェックする方法を教えてください。 Aパラメータの区切りをカンマで無くスペースにする方法があれば教えてください。 ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります
979 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 00:22:05.89 ID:NQgDi+il.net] >>974 行数制限に引っかかったので分割します。 @は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。 なにとぞよろしくお願いいたします。
980 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 10:00:39.98 ID:TaWWQOJL.net] >>975 about_Functions_Advanced_Parameters https://docs.microsoft.com/ja-jp/previous-versions/windows/powershell-scripting/hh847743(v=wps.640)
981 名前:デフォルトの名無しさん mailto:sage [2021/03/02(火) 23:49:57.97 ID:NQgDi+il.net] >>976 ありがとうございます。 読み解くのに時間がかかりそうですが、 希望のものが書いてありそうです。
982 名前:デフォルトの名無しさん mailto:sage [2021/03/03(水) 03:07:24.22 ID:hWQCqBl5.net] そもそもPowerShellの関数(コマンドレット)は空白区切りで引数渡すんだけどね >>974 はカンマ区切りで引数を渡してるんじゃなくて、カンマで作った配列を渡してるだけ 自動変数の$args(配列)はjavascriptでいう残余引数みたいな物 PS> .\test.ps1 aaa -foo bbb,ccc,ddd 名前付き引数 $foo に配列 bbb,ccc,ddd が渡され、未定義の aaa が $args に渡されてる PS> .\test.ps1 aaa -bar bbb,ccc,ddd $foo に先頭の引数 aaa が渡され、未定義の -bar と配列 bbb,ccc,ddd が $args に渡される 特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる
983 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 15:14:39.63 ID:VgGpSMHu.net] PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう しかも結局help云々が毎回出るし MS頭おかしいんでねーの
984 名前:デフォルトの名無しさん mailto:sage [2021/03/12(金) 19:40:18.23 ID:gsxqF2ed.net] おバカ自慢要らね
985 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 10:00:11.18 ID:fu8qQk1O.net] v7.0.6 https://github.com/PowerShell/PowerShell/releases/tag/v7.0.6 v7.1.3 https://github.com/PowerShell/PowerShell/releases/tag/v7.1.3
986 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 14:33:26.87 ID:LuYPD+lh.net] | where-objectで、条件に引っかかったら0(True)、引っかからなかったら1(False)を返す方法ってありませんでしょうか。 あるサービスの実行状態を知るために、こういうことをしてるんですが、 (Get-Service | Where-Object -Property Name -Match Adobe | Where-Object -Property Status -Match Running).length 1 ←AdobeがRunnningだった 0 ←AdobeがRunnin
987 名前:gじゃなかった 他に、もっとPowershellっぽい書き方があったら教えてください [] [ここ壊れてます]
988 名前:デフォルトの名無しさん [2021/03/13(土) 14:59:52.96 ID:4/YYKqK7.net] >>982 ワンライナーにこだわっているのか?
989 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 15:31:11.30 ID:33EHGK5P.net] Ruby の3項演算子みたいなものは無いの? 真偽値となる条件式 ? 真の時の値 : 偽の時の値
990 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 15:36:01.07 ID:ErfpRTBJ.net] (gsv adobe*).status -contains 'running'
991 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 15:48:12.79 ID:Qa5+c/Kf.net] >>982 [int][bool](Get-Service | Where-Object {($_.Name -Match 'Adobe') -and ($_.Status -Match 'Running')})
992 名前:デフォルトの名無しさん mailto:sage [2021/03/13(土) 20:59:36.95 ID:3roljCwu.net] >>984 三項演算子 https://docs.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-70#ternary-operator
993 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 15:40:02.21 ID:am3+IzSP.net] PowerShellは処理の方法が多くていいな
994 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 21:46:47.24 ID:8YYOAayf.net] 連想配列の参照渡しで function f([ref]$h) { $h.value } $h = @{ a = 0; b = 1} f([ref]$h) はうまくいくんだけど、引数もう一個増やして function f([ref]$h, $s) { $h.value; $s } $h = @{ a = 0; b = 1} $s = 2 f([ref]$h, $s) にすると、 f : パラメーター 'h' の引数変換を処理できません。引数には参照型を指定する必要があります。 何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗
995 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 21:55:49.94 ID:8nGQn8Lf.net] 括弧とカンマいらないのでは
996 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 22:41:43.33 ID:T+RcbFBu.net] f ([ref]$h) $s
997 名前:デフォルトの名無しさん mailto:sage [2021/03/14(日) 23:07:21.02 ID:8YYOAayf.net] >>991 出来た!ありがとう でもなぜその書き方になるのかわからない(汗
998 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 15:30:15.42 ID:2OtrSpOH.net] カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね 関数はスペース区切りで渡す これは文法だから理由はない
999 名前:デフォルトの名無しさん mailto:sage [2021/03/15(月) 16:45:16.26 ID:bRJV5TtK.net] 1, 2 で配列作っちゃうようにしちゃったからねぇ 記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない
1000 名前:デフォルトの名無しさん [2021/03/16(火) 23:02:58.87 ID:Bd62bkLQ.net] >>988 処理の方法が多いことは、可読性が落ちる原因にもなる。 PythonをもちあげてPerlをくさす時に使われたのと同じ論法だよ。
1001 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 08:00:24.75 ID:EzeD0xtp.net] 俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ
1002 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 08:19:50.03 ID:vnLGIRIV.net] しかしPerlではないのがいいところ
1003 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 08:38:00.89 ID:sqd1XF3h.net] Why did you do that? $VAR/ {} / Weak Intellisense https://docs.microsoft.com/en-us/archive/blogs/monad/why-did-you-do-that-var-weak-intellisense The $ in front of variables comes from our design center of being an interactive command oriented shell. Interactive shells are NOT the same thing as Scripting languages with command interpretors. Interactive shells are case studies in engineering tradeoffs (another way of saying that is that they tend to be a little quirky). There is a tension between the needs of a great interactive experience and a great scripting/programming experience. Time and time again during the course of the project, people would try to make us "choose" between one or the other. We refused. We believe that if you work hard enough at it, you can solve the puzzle and provide a great solution for both. We were absolutely subborn on this point. Time and time again, we were able to succeed with this approach if we travailed long enough.
1004 名前:デフォルトの名無しさん mailto:sage [2021/03/17(水) 11:52:58.50 ID:eAjGywmP.net] interactive性は'標準で'エイリアスが定義されてることで十分満足してる
1005 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:08:54.40 ID:t06qOp3P.net] PerlとPythonは文字に対するencode, decodeの意味が逆。まめな
1006 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:30:47.74 ID:/MpReTiX.net] PowerShell -Part 5 https://mevius.5ch.net/test/read.cgi/tech/1615994992/ 次スレ。
1007 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 00:39:40.12 ID:3weRgygV.net] >>1001 ナイス滑り込み
1008 名前:デフォルトの名無しさん mailto:sage [2021/03/18(木) 01:34:48.09 ID:dIgskCmL.net] 質問良いですか
1009 名前:1001 [Over 1000 Thread.net] このスレッドは1000を超えました。 新しいスレッドを立ててください。 life time: 441日 9時間 26分 17秒
1010 名前:過去ログ ★ [[過去ログ]] ■ このスレッドは過去ログ倉庫に格納されています