前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
次スレは>>980が立ててね!!
探検
PowerShell -Part 4
■ このスレッドは過去ログ倉庫に格納されています
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
605デフォルトの名無しさん
2020/09/28(月) 10:27:40.26ID:6RK1A/yN606デフォルトの名無しさん
2020/09/28(月) 20:33:13.25ID:1OU6a08X 試した
1 〇 (でも張りたいのは相対パスのリンク)
2 ×
3 〇
[Environment]::CurrentDirectory を基準にターゲットのフルパスを求めて
フォルダーだったら SYMLINKD 、それ以外は SYMLINK を作ってるっぽい
# >>603 を書く時 C:\Users\ユーザー では試してなかった……。
カレントディレクトリを移動しても [Environment]::CurrentDirectory は変わらない
となると悪いのは
カレントディレクトリを返さない [Environment]::CurrentDirectory ?
それとも [Environment]::CurrentDirectory を参照する New-Item ?
1 〇 (でも張りたいのは相対パスのリンク)
2 ×
3 〇
[Environment]::CurrentDirectory を基準にターゲットのフルパスを求めて
フォルダーだったら SYMLINKD 、それ以外は SYMLINK を作ってるっぽい
# >>603 を書く時 C:\Users\ユーザー では試してなかった……。
カレントディレクトリを移動しても [Environment]::CurrentDirectory は変わらない
となると悪いのは
カレントディレクトリを返さない [Environment]::CurrentDirectory ?
それとも [Environment]::CurrentDirectory を参照する New-Item ?
607デフォルトの名無しさん
2020/09/29(火) 11:44:19.44ID:xkYzZNyK >>606
ごめん。ソースの履歴を見たら、v7.0.3 のときは、2. の方法は無意味だったみたい。
v7.0.3 の実装は、>>606 さんの想像のとおり。
そもそも、ターゲットの相対パスを解決するときの基準は、カレントのパスではなくて、
シンボリックリンクそのもののパスだよね。
なので、プロセスのカレントディレクトリ([Environment]::CurrentDirectory)の代わりに、
PowerShell のカレントロケーション($PWD)を基準にしたとしても、やっぱりバグる。
New-Item -Type Symbolic -Name Foo\Bar -Target .\Zot みたいなケースとか。
でね。最新のソースには、相対パスのターゲットのための修正が施されているのだけれど、
これが、「.\」か「./」で始まるパスのときは、基準にカレントロケーションを使う、
という中途半端かつ誤ったもので...。
ごめん。ソースの履歴を見たら、v7.0.3 のときは、2. の方法は無意味だったみたい。
v7.0.3 の実装は、>>606 さんの想像のとおり。
そもそも、ターゲットの相対パスを解決するときの基準は、カレントのパスではなくて、
シンボリックリンクそのもののパスだよね。
なので、プロセスのカレントディレクトリ([Environment]::CurrentDirectory)の代わりに、
PowerShell のカレントロケーション($PWD)を基準にしたとしても、やっぱりバグる。
New-Item -Type Symbolic -Name Foo\Bar -Target .\Zot みたいなケースとか。
でね。最新のソースには、相対パスのターゲットのための修正が施されているのだけれど、
これが、「.\」か「./」で始まるパスのときは、基準にカレントロケーションを使う、
という中途半端かつ誤ったもので...。
608デフォルトの名無しさん
2020/09/29(火) 20:49:56.27ID:J7wCjMtV 常に リンクのフルパス → ターゲットのフルパス とたどるだけなのに……w
早く修正されますように
早く修正されますように
609デフォルトの名無しさん
2020/09/30(水) 08:50:32.18ID:6kAerFE6 [Environment]::CurrentDirectoryや[IO.Directory]::GetCurrentDirectory()の罠
他のモジュールも同じ問題を抱えてないか心配になる
他のモジュールも同じ問題を抱えてないか心配になる
610デフォルトの名無しさん
2020/10/01(木) 10:19:36.95ID:tnCBqate New-Itemはハードリンクもバグってる
こっちはWindows以外のOSでも問題になるはず
New-Item -Type Directory -Name linktest
New-Item -Name linktest\target
New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
に対して、こんなメッセージでエラーになってしまう
New-Item: Could not find item linktest\target.
興味深いのは
New-Item -Type HardLink -Name linktest\hardlink -Target target
と間違えてみると
New-Item: Cannot find path 'カレントディレクトリ\target' because it does not exist.
ちゃんと正しいエラーメッセージが返る
不思議だ
こっちはWindows以外のOSでも問題になるはず
New-Item -Type Directory -Name linktest
New-Item -Name linktest\target
New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
に対して、こんなメッセージでエラーになってしまう
New-Item: Could not find item linktest\target.
興味深いのは
New-Item -Type HardLink -Name linktest\hardlink -Target target
と間違えてみると
New-Item: Cannot find path 'カレントディレクトリ\target' because it does not exist.
ちゃんと正しいエラーメッセージが返る
不思議だ
611デフォルトの名無しさん
2020/10/01(木) 21:05:38.94ID:NSqrZd61 >>610
>New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
5.1と7.0.3で試したけどエラーにならなかったぞ
>New-Item -type HardLink -Name linktest\hardlink -Target linktest\target
5.1と7.0.3で試したけどエラーにならなかったぞ
612デフォルトの名無しさん
2020/10/01(木) 21:26:37.01ID:tnCBqate これでどう? (長すぎて切れるかも)
$origCurDir = [System.Environment]::CurrentDirectory
New-Item -ItemType Directory -Path linktest
Push-Location linktest
New-Item -ItemType Directory -Path dir
Push-Location dir # linktest/dir
New-Item -ItemType Directory -Path subdir
Set-Content -Path file -Value "hello"
New-Item -ItemType HardLink -Path hardlink_1 -Value file
New-Item -ItemType SymbolicLink -Path symlink_1 -Value subdir
Pop-Location # linktest
New-Item -ItemType HardLink -Path dir/hardlink_2 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_2 -Value subdir
Push-Location dir # linktest/dir
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path hardlink_3 -Value file
New-Item -ItemType SymbolicLink -Path symlink_3 -Value subdir
Pop-Location # linktest
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path dir/hardlink_4 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_4 -Value subdir
Pop-Location
[System.Environment]::CurrentDirectory = $origCurDir
Get-ChildItem -Path linktest/dir | Sort-Object -Property CreationTime | Format-Table Attributes,LinkType,Target,Length,Name
$origCurDir = [System.Environment]::CurrentDirectory
New-Item -ItemType Directory -Path linktest
Push-Location linktest
New-Item -ItemType Directory -Path dir
Push-Location dir # linktest/dir
New-Item -ItemType Directory -Path subdir
Set-Content -Path file -Value "hello"
New-Item -ItemType HardLink -Path hardlink_1 -Value file
New-Item -ItemType SymbolicLink -Path symlink_1 -Value subdir
Pop-Location # linktest
New-Item -ItemType HardLink -Path dir/hardlink_2 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_2 -Value subdir
Push-Location dir # linktest/dir
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path hardlink_3 -Value file
New-Item -ItemType SymbolicLink -Path symlink_3 -Value subdir
Pop-Location # linktest
[System.Environment]::CurrentDirectory = $PWD
New-Item -ItemType HardLink -Path dir/hardlink_4 -Value dir/file
New-Item -ItemType SymbolicLink -Path dir/symlink_4 -Value subdir
Pop-Location
[System.Environment]::CurrentDirectory = $origCurDir
Get-ChildItem -Path linktest/dir | Sort-Object -Property CreationTime | Format-Table Attributes,LinkType,Target,Length,Name
613デフォルトの名無しさん
2020/10/02(金) 13:25:40.85ID:1QpEVKY8 mklink一行でええじゃん
614デフォルトの名無しさん
2020/10/02(金) 13:57:48.64ID:w3BWfVBY >>613
これを思い出した
********
アメリカのNASAは、宇宙飛行士を最初に宇宙に送り込んだとき、
無重力状態ではボールペンで文字を書くことができないのを発見した。
これではボールペンを持って行っても役に立たない!
NASAの科学者たちはこの問題に立ち向かうべく、10年の歳月と120億ドルの開発費をかけて研究を重ねた。
その結果ついに、無重力でも上下逆にしても水の中でも氷点下でも摂氏300度でも、
どんな状況下でもどんな表面にでも書けるボールペンを開発した!!
一方、ソ連は鉛筆を使った。
これを思い出した
********
アメリカのNASAは、宇宙飛行士を最初に宇宙に送り込んだとき、
無重力状態ではボールペンで文字を書くことができないのを発見した。
これではボールペンを持って行っても役に立たない!
NASAの科学者たちはこの問題に立ち向かうべく、10年の歳月と120億ドルの開発費をかけて研究を重ねた。
その結果ついに、無重力でも上下逆にしても水の中でも氷点下でも摂氏300度でも、
どんな状況下でもどんな表面にでも書けるボールペンを開発した!!
一方、ソ連は鉛筆を使った。
615デフォルトの名無しさん
2020/10/02(金) 14:35:00.30ID:Ck+HovvX リンクを張ることが目的なのではない
PowerShellの不具合を見つけることが目的なのだ
PowerShellの不具合を見つけることが目的なのだ
616デフォルトの名無しさん
2020/10/02(金) 21:34:24.75ID:ljpWPhwK 誰か英語ができる人 >>612 のテストを添えて「New-Itemでのhardlink/symlink作成に
[Environment]::CurrentDirectoryが影響する」ってタイトルでイシューを立てて欲しい
[Environment]::CurrentDirectoryが影響する」ってタイトルでイシューを立てて欲しい
617デフォルトの名無しさん
2020/10/03(土) 01:55:55.82ID:0vVVHGK+ 昔はよくConnectに投稿したりしたんだけどねぇ
618デフォルトの名無しさん
2020/10/03(土) 10:45:42.05ID:68v91MPk よろしくお願いします
619デフォルトの名無しさん
2020/10/03(土) 22:48:38.93ID:7NrhvCrT バージョン上がって使いやすくなってきたねpowershell
Shellより扱いやすいからmacにもインスコしたわ
コンソールに貼り付けて実行した時に右クリックの貼り付けとctlvの貼り付けで動きが違うのは何で?
Shellより扱いやすいからmacにもインスコしたわ
コンソールに貼り付けて実行した時に右クリックの貼り付けとctlvの貼り付けで動きが違うのは何で?
620デフォルトの名無しさん
2020/10/04(日) 17:12:39.48ID:Pj4o9N0c621デフォルトの名無しさん
2020/10/07(水) 01:28:53.25ID:OLUeUK9d あるファイルを消そうとしたら「このファイルは開かれているため〜」と表示されて消せなかった。
こういう場合、自分はリソースモニターでファイルを開いているアプリを探すんだけど
最近入った現場では管理者以外はリソースモニターを使えないように設定されていて困った。
それで質問なのですが、powershellのコマンドでファイルを開いているアプリを探す方法はあるのでしょうか?
こういう場合、自分はリソースモニターでファイルを開いているアプリを探すんだけど
最近入った現場では管理者以外はリソースモニターを使えないように設定されていて困った。
それで質問なのですが、powershellのコマンドでファイルを開いているアプリを探す方法はあるのでしょうか?
622デフォルトの名無しさん
2020/10/07(水) 02:03:23.70ID:HMBCuleJ624デフォルトの名無しさん
2020/10/08(木) 19:15:35.07ID:zkqa7tbj 試せば判るけど >>622 はプロセスがロードしてるDLLとかのモジュールしか得られないよ
開いてるファイルはプロセスに紐付いてるハンドル取得して一個一個チェックするしかないよ
実装はpowershellじゃかなり大変だからhandle.exeっていうMSが公開してるツール使ったらいいよ
開いてるファイルはプロセスに紐付いてるハンドル取得して一個一個チェックするしかないよ
実装はpowershellじゃかなり大変だからhandle.exeっていうMSが公開してるツール使ったらいいよ
625デフォルトの名無しさん
2020/10/14(水) 06:30:09.66ID:JjVHZHwh セキュリティガチガチでネットにも繋がらないうちの現場じゃ無理だな
626デフォルトの名無しさん
2020/10/14(水) 11:09:36.08ID:s64A8YK8 うちの会社は「キッコーマン」のHPが見れません、”コーマン”がフィルターに引っかかるのですw
627デフォルトの名無しさん
2020/10/15(木) 21:32:35.73ID:vPm9QJ4K openfiles コマンドでファイルを開いているプロセスを調べる 【 Windows】
http://tooljp.com/windows/doc/Server2008/openfiles/openfiles.html
Openfiles
https://web.archive.org/web/20120424081342/http://technet.microsoft.com/ja-jp/library/cc772842(v=ws.10).aspx
http://tooljp.com/windows/doc/Server2008/openfiles/openfiles.html
Openfiles
https://web.archive.org/web/20120424081342/http://technet.microsoft.com/ja-jp/library/cc772842(v=ws.10).aspx
628デフォルトの名無しさん
2020/10/17(土) 17:51:59.12ID:2b9DYeQb 職場で「さすがパワーシェラー!」って言われたんだけど
パワーシェルを使う人のことをそう呼ぶものなの?
パワーシェルを使う人のことをそう呼ぶものなの?
629デフォルトの名無しさん
2020/10/17(土) 17:57:10.05ID:Ske6VIT2 聞いたことないな
むしろ馬鹿にされてる気分
むしろ馬鹿にされてる気分
630デフォルトの名無しさん
2020/10/17(土) 23:05:50.24ID:DNKik4OU 洋書で良い本ないですか?
和書だと数冊しか出てないので…
和書だと数冊しか出てないので…
631デフォルトの名無しさん
2020/10/18(日) 21:28:34.46ID:6x+7Jy+N in actionは読んだのかね
あとはCoreのソース読んでくのが手っ取り早い
あとはCoreのソース読んでくのが手っ取り早い
632デフォルトの名無しさん
2020/10/19(月) 22:58:13.20ID:TaaQ8sH/633デフォルトの名無しさん
2020/10/24(土) 21:41:19.65ID:1s91cR1z 多次元配列(ジャグ配列ではなく)を1次元配列に平坦化する高速な方法ありませんか?
データ数は100万個くらいです。
@($a | % {$_})
検索したら↑のカッコいい方法が出てきましたが、
私の環境で6秒ほどかかり速度に不満があります。
データ数は100万個くらいです。
@($a | % {$_})
検索したら↑のカッコいい方法が出てきましたが、
私の環境で6秒ほどかかり速度に不満があります。
634デフォルトの名無しさん
2020/10/24(土) 23:22:07.28ID:ZaC2aARH パイプとForeach-Object自体が遅いからね
データがオンメモリにあるならforeach文のが速い
データがオンメモリにあるならforeach文のが速い
635デフォルトの名無しさん
2020/10/24(土) 23:28:40.40ID:ZaC2aARH あとは万個の繰り返し処理になるわけだからpowershellで書いたら全体的には当然遅い
対策としては繰り返し部分だけC#に渡すとかだね
対策としては繰り返し部分だけC#に渡すとかだね
636デフォルトの名無しさん
2020/10/24(土) 23:45:12.07ID:V4Y88WB8 万個とかエッチ!
637633
2020/10/25(日) 00:13:47.38ID:orpbcY2p foreach文にすると0.8秒まで速くなりました!
とりあえずこの方法でやってみます
$b = foreach($x in $a){$x}
とりあえずこの方法でやってみます
$b = foreach($x in $a){$x}
638デフォルトの名無しさん
2020/10/25(日) 02:13:33.54ID:8PerFZ8f >>636
美人穴が「この商品は累計○万個も売り上げたということです!」とかいうとおっきする
美人穴が「この商品は累計○万個も売り上げたということです!」とかいうとおっきする
639デフォルトの名無しさん
2020/10/25(日) 20:51:17.25ID:Bltg1B/v640デフォルトの名無しさん
2020/10/25(日) 23:05:57.46ID:Ny8q0G3C ジャグラーは定番だ
641デフォルトの名無しさん
2020/10/25(日) 23:57:20.55ID:sGr6+tXm 多次元配列のほうがメモリ上で綺麗に配置されている分、高速化の選択肢が多いかもしれないって発想じゃね
642633
2020/10/26(月) 00:00:33.37ID:R7zaLxag >>639
ExcelファイルからCOM経由で範囲データを取ってくるとobject[,]になるためです
ExcelファイルからCOM経由で範囲データを取ってくるとobject[,]になるためです
643デフォルトの名無しさん
2020/10/26(月) 08:09:54.14ID:mujdTIU3 なんでそれを1次元にするんだろう
644デフォルトの名無しさん
2020/10/26(月) 12:01:58.05ID:bVz9LMJg >>641
実際には多次元配列の方が遅い
実際には多次元配列の方が遅い
645デフォルトの名無しさん
2020/10/26(月) 13:22:10.82ID:l+r11Fp5 >>644
理由は?
理由は?
646デフォルトの名無しさん
2020/10/26(月) 14:41:24.14ID:RInXL5ja PowerShellというか.NETの仕様
.NETには1次元配列の要素にアクセスするための専用命令があるので速い
多次元配列の要素にアクセスするにはプロパティみたいなアクセサメソッドを使わなきゃいけないので遅い
.NETには1次元配列の要素にアクセスするための専用命令があるので速い
多次元配列の要素にアクセスするにはプロパティみたいなアクセサメソッドを使わなきゃいけないので遅い
647デフォルトの名無しさん
2020/10/26(月) 16:19:55.73ID:l+r11Fp5 >>646
多次元だと倍以上遅いと言う根拠あるの?
多次元だと倍以上遅いと言う根拠あるの?
648デフォルトの名無しさん
2020/10/26(月) 16:27:11.02ID:RDi5ol2j めんどくせー奴だな
649デフォルトの名無しさん
2020/10/26(月) 17:00:59.84ID:XYschmPc 体感速度は変わらん
650デフォルトの名無しさん
2020/10/26(月) 17:43:17.64ID:jItJ//Mq >>647
自分で試せば良いんじゃね
自分で試せば良いんじゃね
651デフォルトの名無しさん
2020/10/26(月) 17:46:52.74ID:l+r11Fp5 要は根拠もなしに
> 実際には多次元配列の方が遅い
と妄想をほざいてただけって話かよw
> 実際には多次元配列の方が遅い
と妄想をほざいてただけって話かよw
652デフォルトの名無しさん
2020/10/26(月) 17:56:32.09ID:jItJ//Mq653デフォルトの名無しさん
2020/10/26(月) 17:58:32.50ID:j+tAxxjP >>651
質問に答えず茶化すだけかよw
質問に答えず茶化すだけかよw
654デフォルトの名無しさん
2020/10/26(月) 19:30:32.27ID:l+r11Fp5655デフォルトの名無しさん
2020/10/26(月) 19:43:09.27ID:/01g7c5c >>ID:l+r11Fp5
たくさん構ってもらえて良かったね
たくさん構ってもらえて良かったね
656デフォルトの名無しさん
2020/10/26(月) 20:06:18.23ID:l+r11Fp5 >>655
恥の上塗りかなw
恥の上塗りかなw
657633
2020/10/26(月) 20:09:14.97ID:5qWbLIDu >>643
Excelファイルから取得したデータを更に別の処理に使うのですが、その際に1次元で渡す必要があるためです
Excelファイルから取得したデータを更に別の処理に使うのですが、その際に1次元で渡す必要があるためです
658デフォルトの名無しさん
2020/10/26(月) 20:09:30.70ID:/TCFG/M1 実装としては添え字でメモリの位置を計算して参照するだけだから
一次元でも多次元でも原理的には速さは変わらないぞ
一次元でも多次元でも原理的には速さは変わらないぞ
659デフォルトの名無しさん
2020/10/26(月) 20:13:28.15ID:jItJ//Mq660デフォルトの名無しさん
2020/10/26(月) 20:17:45.03ID:mujdTIU3661デフォルトの名無しさん
2020/10/26(月) 20:28:30.59ID:l+r11Fp5662デフォルトの名無しさん
2020/10/26(月) 20:36:57.75ID:mujdTIU3 あんたはまず「倍以上」の出所を説明しないと
663デフォルトの名無しさん
2020/10/26(月) 21:11:41.27ID:EAm4Av0T664デフォルトの名無しさん
2020/10/26(月) 21:49:29.23ID:AmD6br2D #2次元配列初期化
Measure-Command {
$i = 0; $array = New-Object "object[,]" 1000,1000
for ($x = 0; $x -lt $array.GetLength(0); $x++) {
for ($y = 0; $y -lt $array.GetLength(1); $y++) {
$array[$x,$y] = $i++
}
}
}
#ジャグ配列初期化
Measure-Command {
$i = 0; $array = New-Object "object[]" 1000
for ($x = 0; $x -lt $array.length; $x++) {
$array[$x] = New-Object "object[]" 1000
for ($y = 0; $y -lt $array[$x].length; $y++) {
$array[$x][$y] = $i++
}
}
}
たしかに初期化の段階でジャグ配列のが速いね
Measure-Command {
$i = 0; $array = New-Object "object[,]" 1000,1000
for ($x = 0; $x -lt $array.GetLength(0); $x++) {
for ($y = 0; $y -lt $array.GetLength(1); $y++) {
$array[$x,$y] = $i++
}
}
}
#ジャグ配列初期化
Measure-Command {
$i = 0; $array = New-Object "object[]" 1000
for ($x = 0; $x -lt $array.length; $x++) {
$array[$x] = New-Object "object[]" 1000
for ($y = 0; $y -lt $array[$x].length; $y++) {
$array[$x][$y] = $i++
}
}
}
たしかに初期化の段階でジャグ配列のが速いね
665デフォルトの名無しさん
2020/10/26(月) 22:09:49.38ID:l+r11Fp5666デフォルトの名無しさん
2020/10/26(月) 22:22:45.88ID:5/h2v6nN >>665
PSで例見せてよ
PSで例見せてよ
667デフォルトの名無しさん
2020/10/26(月) 22:37:25.27ID:l+r11Fp5 ILの話にPSとか言われてもw
668デフォルトの名無しさん
2020/10/26(月) 22:48:42.22ID:l+r11Fp5669デフォルトの名無しさん
2020/10/27(火) 01:23:06.66ID:IPa2oLl3 なるほど勉強になります
670デフォルトの名無しさん
2020/10/27(火) 13:37:08.15ID:bD3kPd/D なるほど理解できません
671デフォルトの名無しさん
2020/10/27(火) 15:37:54.18ID:az6RTKF7 処理系の実装に寄るけど、うまくインデックスを張れば
速度的には同等になるはずだけどな
速度的には同等になるはずだけどな
672デフォルトの名無しさん
2020/10/27(火) 19:29:05.55ID:k9DNZwa6 >>671
どういう理論なんだ?
ランダムアクセスだとジャグ配列は次元毎にメモリーアクセスして辿らないとダメだけど多次元配列ならインデックスの計算してその場所にアクセスするだけだから多次元配列の方が速い
シーケンシャルアクセスだとアクセスの多くは最後の次元のアクセスだから毎回インデックスを計算する多次元配列よりジャグ配列の方が速いと思う
まあめっちゃ最適化して多次元配列を1次元配列に展開するようなコードにまで落とせたら多次元配列の方が微妙に速くなるかも
どういう理論なんだ?
ランダムアクセスだとジャグ配列は次元毎にメモリーアクセスして辿らないとダメだけど多次元配列ならインデックスの計算してその場所にアクセスするだけだから多次元配列の方が速い
シーケンシャルアクセスだとアクセスの多くは最後の次元のアクセスだから毎回インデックスを計算する多次元配列よりジャグ配列の方が速いと思う
まあめっちゃ最適化して多次元配列を1次元配列に展開するようなコードにまで落とせたら多次元配列の方が微妙に速くなるかも
673デフォルトの名無しさん
2020/10/27(火) 19:52:31.91ID:Sd8akiyh なんにせよ多次元配列を1次元配列に高速に平坦化する方法分からないんだろ
グダグダスレ引き延ばしておきながらなw
グダグダスレ引き延ばしておきながらなw
674デフォルトの名無しさん
2020/10/27(火) 21:46:07.02ID:UFBDJ7q0 @($a)
Foreach-Objectもforeach分も要らない
Foreach-Objectもforeach分も要らない
675デフォルトの名無しさん
2020/10/27(火) 21:47:10.61ID:UFBDJ7q0 foreach分 → foreach文
676デフォルトの名無しさん
2020/10/27(火) 22:27:25.79ID:6aj92Tm3 >>673
そんな低レベルなことでドヤれるとか羨ましいわw
そんな低レベルなことでドヤれるとか羨ましいわw
677デフォルトの名無しさん
2020/10/28(水) 19:54:09.10ID:RpzUgl/d678633
2020/10/29(木) 21:32:08.09ID:/oXwNFXj679デフォルトの名無しさん
2020/10/29(木) 23:08:28.85ID:u3CTd5OP680デフォルトの名無しさん
2020/10/29(木) 23:35:09.18ID:ebCj94Ij え? これは常識では・・・
681デフォルトの名無しさん
2020/10/30(金) 08:08:54.65ID:xvehW8+X PowerShell使うならほぼ常識、てか知らないと辛いレベル
そもそもPowerShell自体が色々トリッキーな動作するし、特に配列周り
そもそもPowerShell自体が色々トリッキーな動作するし、特に配列周り
682デフォルトの名無しさん
2020/11/02(月) 13:12:42.29ID:cgiVh2xg $a = [Object[,]]::new(3,3); $a.Rank は 2
$b = $a; $b.Rank は 2
$b = & { $a }; $b.Rank だと 1
$b = $a + @(); $b.Rank でも 1
もちろん $b.Length はどれも 9
$b = $a が特例のように思えてきた
どうしてこうなるのかきちんと理屈が知りたい
$b = $a; $b.Rank は 2
$b = & { $a }; $b.Rank だと 1
$b = $a + @(); $b.Rank でも 1
もちろん $b.Length はどれも 9
$b = $a が特例のように思えてきた
どうしてこうなるのかきちんと理屈が知りたい
683デフォルトの名無しさん
2020/11/02(月) 14:39:03.01ID:Q6ZeZ8N8 配列での foreach の使用 (C# プログラミング ガイド)
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays
多次元配列の場合、右端の次元のインデックスが最初に加算されていき、次にその左の次元、またその左、というような方法で各要素がトラバースされます。
int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } };
// Or use the short form:
// int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } };
foreach (int i in numbers2D)
{
System.Console.Write("{0} ", i);
}
// Output: 9 99 3 33 5 55
https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/arrays/using-foreach-with-arrays
多次元配列の場合、右端の次元のインデックスが最初に加算されていき、次にその左の次元、またその左、というような方法で各要素がトラバースされます。
int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } };
// Or use the short form:
// int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } };
foreach (int i in numbers2D)
{
System.Console.Write("{0} ", i);
}
// Output: 9 99 3 33 5 55
684682
2020/11/02(月) 17:29:09.65ID:cgiVh2xg 明示的な foreach の使用は興味がないなあ
$b = $a も $b = & { $a } も $a を $b に代入するのに
なんで結果が違うのかが知りたい
$b = $a も $b = & { $a } も $a を $b に代入するのに
なんで結果が違うのかが知りたい
685デフォルトの名無しさん
2020/11/02(月) 17:46:27.91ID:O692h/lZ 最初のやつ以外はシンプルな代入じゃなくて演算してるから、演算の結果が一次元配列になっただけじゃないの
686682
2020/11/02(月) 17:50:23.99ID:cgiVh2xg $b = & { $a } も演算?
具体的にどういう演算になるのかわからない
具体的にどういう演算になるのかわからない
687デフォルトの名無しさん
2020/11/02(月) 17:54:46.38ID:Razdsa9H >>682
>$b = & { $a }; $b.Rank だと 1
>$b = $a + @(); $b.Rank でも 1
この2つは$aがそれぞれ評価されて1次元になって$bに代入されてる
$b = & { $a }
の場合$aの前にカンマを入れれば型は保たれる
$b = & { ,$a }
PowerShellの謎仕様
>$b = & { $a }; $b.Rank だと 1
>$b = $a + @(); $b.Rank でも 1
この2つは$aがそれぞれ評価されて1次元になって$bに代入されてる
$b = & { $a }
の場合$aの前にカンマを入れれば型は保たれる
$b = & { ,$a }
PowerShellの謎仕様
688デフォルトの名無しさん
2020/11/02(月) 18:05:40.51ID:Razdsa9H おそらくスクリプトブロックを通過するときと
右辺や左辺に置いて演算するとき
それぞれ1次元に変換されてしまう仕様みたい
右辺や左辺に置いて演算するとき
それぞれ1次元に変換されてしまう仕様みたい
689デフォルトの名無しさん
2020/11/02(月) 18:07:36.92ID:O692h/lZ690682
2020/11/02(月) 18:14:48.39ID:cgiVh2xg じゃあやっぱり単純な代入 $b = $a だけが特別で
それ以外は配列が展開されるってことか
理解した
>>687
& { $a } だと配列 $a が展開される
& { ,$a } にすれば配列の配列 ,$a が展開されて配列 $a がそのまま渡される
それ以外は配列が展開されるってことか
理解した
>>687
& { $a } だと配列 $a が展開される
& { ,$a } にすれば配列の配列 ,$a が展開されて配列 $a がそのまま渡される
691682
2020/11/02(月) 18:50:05.02ID:cgiVh2xg あれ違うな
単純な代入だけでなく Comma operator も特例になるのか
単純な代入だけでなく Comma operator も特例になるのか
692デフォルトの名無しさん
2020/11/02(月) 18:58:29.51ID:WQUINiFK >>691
特例だとか自分勝手な解釈をする癖を直さないと、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
自分が既に頭の中に描いているイメージに合わせて無理に解釈方法を寄せていくのではなくて、本来理解すべき仕様の方に自分の中の理解を修正して近づけていく方がいいぞ。
特例だとか自分勝手な解釈をする癖を直さないと、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
自分が既に頭の中に描いているイメージに合わせて無理に解釈方法を寄せていくのではなくて、本来理解すべき仕様の方に自分の中の理解を修正して近づけていく方がいいぞ。
693デフォルトの名無しさん
2020/11/02(月) 19:13:13.99ID:eTL99CIn ウザっ
694デフォルトの名無しさん
2020/11/02(月) 19:59:31.61ID:D4NZ1UY1 >>692
TPO をわきまえられずトンチンカンな御高説垂れる人も、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
TPO をわきまえられずトンチンカンな御高説垂れる人も、他人とのコミュニケーションで苦労するぞ(主に周囲の人間の方が...)。
695デフォルトの名無しさん
2020/11/02(月) 20:30:51.76ID:Razdsa9H696682
2020/11/02(月) 20:44:58.19ID:cgiVh2xg ,$a は Comma operator で1要素の配列を返すけれど
その時に $a は展開されずに2次元配列のまま
これは単純な代入と同じ扱いだよね
その時に $a は展開されずに2次元配列のまま
これは単純な代入と同じ扱いだよね
697デフォルトの名無しさん
2020/11/02(月) 21:48:13.16ID:Qlwbnxz+ { $a } は { Write-Output $a } の事
Write-Output に配列を渡した時の挙動を考えればいい
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output
By default, Write-Output enumerates through collections provided to the cmdlet.
However, Write-Output can also be used to pass collections down the pipeline as a single object with the NoEnumerate parameter.
Write-Output に配列を渡した時の挙動を考えればいい
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/write-output
By default, Write-Output enumerates through collections provided to the cmdlet.
However, Write-Output can also be used to pass collections down the pipeline as a single object with the NoEnumerate parameter.
698デフォルトの名無しさん
2020/11/02(月) 22:48:01.97ID:O692h/lZ ウザかろうと思って特例云々につっこむのやめたけどやっぱり書くわ
代入は代入でしかなく特例も何もない
いつだって右辺の値をありのままの型と値で代入するだけ
$b=&{$a} というのを代入として認識するからおかしくなる
$b=$a.Rank と書いたら$bは数値になるわけだけど、代入したから数値になった!とは思わないでしょ
あくまで.Rankを評価した結果が数値になって、その数値を$bに代入したに過ぎない
$b=&{$a} も &{$a} の評価結果が一次元配列になる仕様なだけで、代入が何かの法則性に寄与している訳ではないし、一次元配列になるという一貫したルールや思想があるわけでもない
代入は代入でしかなく特例も何もない
いつだって右辺の値をありのままの型と値で代入するだけ
$b=&{$a} というのを代入として認識するからおかしくなる
$b=$a.Rank と書いたら$bは数値になるわけだけど、代入したから数値になった!とは思わないでしょ
あくまで.Rankを評価した結果が数値になって、その数値を$bに代入したに過ぎない
$b=&{$a} も &{$a} の評価結果が一次元配列になる仕様なだけで、代入が何かの法則性に寄与している訳ではないし、一次元配列になるという一貫したルールや思想があるわけでもない
699682
2020/11/03(火) 00:15:03.20ID:Da50zhuo operand を展開してから operator にわたすんじゃなくて
operand をそのままわたして operator が展開したりしなかったりする
たぶん理解した
operand をそのままわたして operator が展開したりしなかったりする
たぶん理解した
700デフォルトの名無しさん
2020/11/03(火) 08:59:33.05ID:HUEo3Cdu701デフォルトの名無しさん
2020/11/04(水) 10:50:57.08ID:ZJcGuVz6702デフォルトの名無しさん
2020/11/04(水) 20:48:58.85ID:0afqdDmu703デフォルトの名無しさん
2020/11/07(土) 21:29:59.64ID:AAgSLehy こんなシェルを書きました。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
}
while ($true) {
get_stop_code
Write-Output $hoge
}
シェル実行中に、stop_code.txtの中身を書き換えても
get_stop_codeがファイルの中身を拾ってくれません
いろいろ試したら、こうしたらうまくいきました。がすっきりしません。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
Write-Output $hoge
}
while ($true) {
$stop_code=(get_stop_code)
write-output $stop_code
}
get_stop_codeがファイルの中身を、while ($true)の中でうまく拾ってくれる
書き方を教えてください。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
}
while ($true) {
get_stop_code
Write-Output $hoge
}
シェル実行中に、stop_code.txtの中身を書き換えても
get_stop_codeがファイルの中身を拾ってくれません
いろいろ試したら、こうしたらうまくいきました。がすっきりしません。
function get_stop_code {
$hoge=(Get-Content stop_code.txt)
Write-Output $hoge
}
while ($true) {
$stop_code=(get_stop_code)
write-output $stop_code
}
get_stop_codeがファイルの中身を、while ($true)の中でうまく拾ってくれる
書き方を教えてください。
704デフォルトの名無しさん
2020/11/08(日) 00:25:05.60ID:gCrk6dnE これって遅延展開系の話なのかな?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 偏差値35大臣「すぐに経済的威圧するところへの依存はリスク」 [834922174]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 【朗報】高市、中国からの日本行き空路49万件キャンセルを達成🤩オーバーツーリズム対策の手腕が光る [359965264]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 小野田経済安保相「すぐに経済的威圧するところへの依存はリスク」😲 [861717324]
