2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

PowerShell -Part 4

1 :デフォルトの名無しさん:2020/01/01(水) 16:08:31.66 ID:4oQ1Kxot.net
前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/

次スレは>>980が立ててね!!

955 :デフォルトの名無しさん:2021/02/12(金) 13:58:44.73 ID:aXMNNeBu.net
すばらしい

956 :デフォルトの名無しさん:2021/02/13(土) 18:04:24.59 ID:elIMNXvv.net
音楽プレーヤーで MP3 ファイルをシャッフル再生させたいので、
dir /n /-b /s *.mp3 > playlist.txt
の結果をランダムに入れ替えるにはどうすればいいでしょうか?

(乱数で再生する行を求めると同じ曲がつづくかもしれないのでシャッフルにしたい。)

957 :デフォルトの名無しさん:2021/02/13(土) 19:45:47.08 ID:PYtZn7CJ.net
>>956
テキトーでいいなら
dir /n /-b /s *.mp3 | sort -prop @{Exp={[Guid]::NewGuid()}} > playlist.txt

958 :デフォルトの名無しさん:2021/02/13(土) 20:59:17.73 ID:9JYy97c0.net
Sort-Object {Get-Random}じゃあかんの?

959 :デフォルトの名無しさん:2021/02/13(土) 21:06:22.08 ID:PYtZn7CJ.net
>>958
それでもいいけど、遅いらしい
https://aquasoftware.net/blog/?p=612

960 :デフォルトの名無しさん:2021/02/13(土) 21:14:23.98 ID:D/l9Txdy.net
自分の音楽コレクションのプレイリスト作る要件なら速度は別にと思わなくもない
5分とか掛かるならちょとやだけど

961 :デフォルトの名無しさん:2021/02/13(土) 21:58:32.75 ID:WEbw7iAW.net
プレイリストのランダム再生機能ぐらい大抵のプレイヤーに付いてるだろうに

962 :デフォルトの名無しさん: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〜で置き換えるというのなら納得がいくんですが、
なぜ、後者のように、書いてもランダムになるのかが納得いきません
変数定義はパイプの前の話で、どうしてそれがパイプ先の、ランダムにする操作で置き換わるのでしょうか。

963 :デフォルトの名無しさん:2021/02/13(土) 22:48:16.31 ID:PYtZn7CJ.net
>>962
やってることは同じで結果が単に$foo[0]に入ってるだけ
$foo[1]~$foo[9] の内容は変わってないはず
ちなみに置き換えてるわけじゃなくて新しい配列を作ってそれを$rとか$foo[0]に入れてる

964 :デフォルトの名無しさん: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のようなとらえ方でいいでしょうか?

965 :デフォルトの名無しさん:2021/02/13(土) 23:33:24.56 ID:PYtZn7CJ.net
>>964
ああ、すまん ( ) は見落としてた
パターン1は単に式を ( ) で包んでるだけだからパターン2と同じと思っていい

966 :954: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()}}

でうまくいきそうです。 ありがとうございました。

967 :デフォルトの名無しさん:2021/02/14(日) 00:07:20.96 ID:rA0IJrKX.net
>>965
ありがとうございますよくわかりました

パイプで処理がわかれると思っておりましたが、
=で右辺と左辺に分ててる感じなんですね

968 :デフォルトの名無しさん:2021/02/14(日) 00:22:33.69 ID:D24G58JB.net
>>966
上手く行って何より

蛇足だけど
> foreach {$_.FullName}
の所は PowerShell 的には
> Select-Object FullName
でもいいかな

969 :デフォルトの名無しさん:2021/02/14(日) 00:28:18.02 ID:D24G58JB.net
>>967
他の言語に似せるためか代入文は最優先で解釈されるようになってるみたい
まあよくわからなかったら多少余分でも ( ) を付けといた方があとから見ても誤解されにくいと思う

970 :デフォルトの名無しさん: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/

971 :デフォルトの名無しさん: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万円へ
http://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/

972 :デフォルトの名無しさん:2021/02/23(火) 08:20:29.72 ID:XBzTqCMZ.net
posh-git と GetChildItemColor
でダイブましになった

他にもおすすめあったらおせーて!

973 :デフォルトの名無しさん:2021/02/23(火) 20:50:03.67 ID:8GGn/OTs.net
GetChildItemColorを入れるとシンボリックリンクのリンク先のパスが表示されなくなるのがクソ

974 :デフォルトの名無しさん: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パラメータの区切りをカンマで無くスペースにする方法があれば教えてください。

ググってみたのですが、ググり方が悪いのか、見つからず苦しんでおります

975 :デフォルトの名無しさん:2021/03/02(火) 00:22:05.89 ID:NQgDi+il.net
>>974
行数制限に引っかかったので分割します。

@は引数〇個、パラメーター名foo、パラメーターfooの数、fooが1個以上(0はだめ)というのをチェックしたいです。

なにとぞよろしくお願いいたします。

976 :デフォルトの名無しさん: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)

977 :デフォルトの名無しさん:2021/03/02(火) 23:49:57.97 ID:NQgDi+il.net
>>976
ありがとうございます。
読み解くのに時間がかかりそうですが、
希望のものが書いてありそうです。

978 :デフォルトの名無しさん: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 に渡される

特にオプションを指定しなければ、複数の引数を設定すれば空白区切りで渡せる

979 :デフォルトの名無しさん:2021/03/12(金) 15:14:39.63 ID:VgGpSMHu.net
PowerShell起動すると毎回更新しろって出るのがウザくて7入れてみたけど起動時の立ち上がりが遅くなって切れそう
しかも結局help云々が毎回出るし
MS頭おかしいんでねーの

980 :デフォルトの名無しさん:2021/03/12(金) 19:40:18.23 ID:gsxqF2ed.net
おバカ自慢要らね

981 :デフォルトの名無しさん: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

982 :デフォルトの名無しさん: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がRunningじゃなかった

他に、もっとPowershellっぽい書き方があったら教えてください

983 :デフォルトの名無しさん:2021/03/13(土) 14:59:52.96 ID:4/YYKqK7.net
>>982
ワンライナーにこだわっているのか?

984 :デフォルトの名無しさん:2021/03/13(土) 15:31:11.30 ID:33EHGK5P.net
Ruby の3項演算子みたいなものは無いの?

真偽値となる条件式 ? 真の時の値 : 偽の時の値

985 :デフォルトの名無しさん:2021/03/13(土) 15:36:01.07 ID:ErfpRTBJ.net
(gsv adobe*).status -contains 'running'

986 :デフォルトの名無しさん: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')})

987 :デフォルトの名無しさん: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

988 :デフォルトの名無しさん:2021/03/14(日) 15:40:02.21 ID:am3+IzSP.net
PowerShellは処理の方法が多くていいな

989 :デフォルトの名無しさん: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' の引数変換を処理できません。引数には参照型を指定する必要があります。
何が悪いん?ググっても見つけられなくてさっきから悩んでる(汗

990 :デフォルトの名無しさん:2021/03/14(日) 21:55:49.94 ID:8nGQn8Lf.net
括弧とカンマいらないのでは

991 :デフォルトの名無しさん:2021/03/14(日) 22:41:43.33 ID:T+RcbFBu.net
f ([ref]$h) $s 

992 :デフォルトの名無しさん:2021/03/14(日) 23:07:21.02 ID:8YYOAayf.net
>>991
出来た!ありがとう
でもなぜその書き方になるのかわからない(汗

993 :デフォルトの名無しさん:2021/03/15(月) 15:30:15.42 ID:2OtrSpOH.net
カッコとカンマで引数渡すのはオブジェクトのメソッドの時だけだね
関数はスペース区切りで渡す

これは文法だから理由はない

994 :デフォルトの名無しさん:2021/03/15(月) 16:45:16.26 ID:bRJV5TtK.net
1, 2 で配列作っちゃうようにしちゃったからねぇ
記法がシェルスクリプトとプログラム言語のあいの子みたいになってるからちょっと直感に反する所がちらほら見え隠れするのはしょうがない

995 :デフォルトの名無しさん:2021/03/16(火) 23:02:58.87 ID:Bd62bkLQ.net
>>988
処理の方法が多いことは、可読性が落ちる原因にもなる。
PythonをもちあげてPerlをくさす時に使われたのと同じ論法だよ。

996 :デフォルトの名無しさん:2021/03/17(水) 08:00:24.75 ID:EzeD0xtp.net
俺がPowerShellを気に入ったのはPerlと同じ匂いを感じたからだ

997 :デフォルトの名無しさん:2021/03/17(水) 08:19:50.03 ID:vnLGIRIV.net
しかしPerlではないのがいいところ

998 :デフォルトの名無しさん: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.

999 :デフォルトの名無しさん:2021/03/17(水) 11:52:58.50 ID:eAjGywmP.net
interactive性は'標準で'エイリアスが定義されてることで十分満足してる

1000 :デフォルトの名無しさん:2021/03/18(木) 00:08:54.40 ID:t06qOp3P.net
PerlとPythonは文字に対するencode, decodeの意味が逆。まめな

1001 :デフォルトの名無しさん:2021/03/18(木) 00:30:47.74 ID:/MpReTiX.net
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/

次スレ。

1002 :デフォルトの名無しさん:2021/03/18(木) 00:39:40.12 ID:3weRgygV.net
>>1001
ナイス滑り込み

1003 :デフォルトの名無しさん:2021/03/18(木) 01:34:48.09 ID:dIgskCmL.net
質問良いですか

1004 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1004
320 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★