[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/12 00:59 / Filesize : 319 KB / Number-of Response : 1011
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

PowerShell -Part 4



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が立ててね!!

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ではないのがいいところ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<319KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef