前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/
次スレは>>980が立ててね!!
探検
PowerShell -Part 6
■ このスレッドは過去ログ倉庫に格納されています
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
281デフォルトの名無しさん
2022/05/12(木) 22:15:13.98ID:3P57KS6y 何だその言い方
お前周りから嫌われてると思うぞ
お前周りから嫌われてると思うぞ
282デフォルトの名無しさん
2022/05/12(木) 23:17:43.20ID:TAn4nFm7 ここは労働の場じゃないからな
金のやり取りを伴ってる仕事とは違うのになんでお客様気分丸出しでいられるんだよ
金のやり取りを伴ってる仕事とは違うのになんでお客様気分丸出しでいられるんだよ
283デフォルトの名無しさん
2022/05/12(木) 23:26:53.76ID:C4APGYH2 誰かが持ち上げてくれるからじゃないの
284デフォルトの名無しさん
2022/05/12(木) 23:56:30.38ID:z9H8Cfuc >>280
Compress-Archive の使い方(パラメーターの指定方法)は分かってますか?
ファイル一個だけで試してみましたか?
それを調べてから
Get-ChildItem -path "C:\folderA" -File | ForEach-Object {
Compress-Archive -LiteralPath $_.FullName -DestinationPath ("C:\folderB\" + $_.Name + ".zip")
}
これの意味を考えてみてください。
Compress-Archive の使い方(パラメーターの指定方法)は分かってますか?
ファイル一個だけで試してみましたか?
それを調べてから
Get-ChildItem -path "C:\folderA" -File | ForEach-Object {
Compress-Archive -LiteralPath $_.FullName -DestinationPath ("C:\folderB\" + $_.Name + ".zip")
}
これの意味を考えてみてください。
285276
2022/05/13(金) 00:26:01.86ID:/s7ZcOSV 解決しました!ありがとうございます!
286デフォルトの名無しさん
2022/05/13(金) 03:41:22.40ID:tKRLPzFb Ruby で、7-zip なら、
a フォルダ以下を再帰的に圧縮して、a.zip アーカイブにする
圧縮
7z a (アーカイブ名) (圧縮したいフォルダ)
7z a sample.zip aaa_folder
archive = "C:/Users/Owner/Documents/test/a.zip"
src_dir = "C:/Users/Owner/Documents/test/a"
# Program Files には半角空白があるので、"〜" で囲む
puts %x("C:/Program Files/7-Zip/7z.exe" a #{ archive } #{ src_dir }) # 圧縮
a フォルダ以下を再帰的に圧縮して、a.zip アーカイブにする
圧縮
7z a (アーカイブ名) (圧縮したいフォルダ)
7z a sample.zip aaa_folder
archive = "C:/Users/Owner/Documents/test/a.zip"
src_dir = "C:/Users/Owner/Documents/test/a"
# Program Files には半角空白があるので、"〜" で囲む
puts %x("C:/Program Files/7-Zip/7z.exe" a #{ archive } #{ src_dir }) # 圧縮
287デフォルトの名無しさん
2022/05/13(金) 15:56:54.19ID:LpRC3aDE gciとかの-forceパラメータって必須だろうに
デフォでオフなのがなんだかな
デフォでオフなのがなんだかな
288デフォルトの名無しさん
2022/05/13(金) 19:23:39.98ID:Sc/EfT9l わざわざ隠し属性で隠してるのにディフォで表示しろとか頭おかしい
289デフォルトの名無しさん
2022/05/13(金) 22:56:09.66ID:uctr9r2r foreach中に最後の要素でないって判定どこかでできないですか
これができなくてforに書き直すはめになること何回もあるんですけど…
Foreach-Objectの場合もあったらお願いします
これができなくてforに書き直すはめになること何回もあるんですけど…
Foreach-Objectの場合もあったらお願いします
290デフォルトの名無しさん
2022/05/13(金) 23:28:29.60ID:dqCr6D+p 原理的に無理だろ...
291デフォルトの名無しさん
2022/05/14(土) 00:16:48.73ID:5a0Y4MKv 最後の要素でないってどういう目的で知りたいの?
本当に知りたいときもあるけど慣れてない人が書きがちなコードでもあるので気になった
カンマ区切りにするために最後ならカンマを付けない分岐を書くとかそういうの
本当に知りたいときもあるけど慣れてない人が書きがちなコードでもあるので気になった
カンマ区切りにするために最後ならカンマを付けない分岐を書くとかそういうの
292デフォルトの名無しさん
2022/05/14(土) 00:17:48.74ID:hb3+ANgg カウンタを用意してforeach対象のコンテナのlengthと都度比較する
これがモダンプログラミング()
これがモダンプログラミング()
293デフォルトの名無しさん
2022/05/14(土) 00:27:25.14ID:hb3+ANgg >>291
次の処理の前準備を現在の要素も使ってやってて最後だけ不要なとき
$i = 0
foreach ($item in $list) {
# $itemの処理
#
if (++$i -lt $list.length) {
# 前準備
}
}
これなら普通にforのが見やすい
次の処理の前準備を現在の要素も使ってやってて最後だけ不要なとき
$i = 0
foreach ($item in $list) {
# $itemの処理
#
if (++$i -lt $list.length) {
# 前準備
}
}
これなら普通にforのが見やすい
294デフォルトの名無しさん
2022/05/14(土) 05:45:14.69ID:NJOQ17Ts そういう最後だけ処理が違うってのは同じように処理しといて後から取り除く方が良くね?
二度手間で美しく無いように思えるけれどそれよりも
一々「最後かどうか」の判別に毎回if挿む方がバカらしく感じる
二度手間で美しく無いように思えるけれどそれよりも
一々「最後かどうか」の判別に毎回if挿む方がバカらしく感じる
295デフォルトの名無しさん
2022/05/14(土) 05:57:00.05ID:0bRjAEIy 前準備ってなにさ
296デフォルトの名無しさん
2022/05/14(土) 06:07:55.24ID:Wt4JCGPH297デフォルトの名無しさん
2022/05/14(土) 08:23:02.72ID:m7B1u9M5 カンマ区切りしたいだけなら $list -join ',' で十分だな
298デフォルトの名無しさん
2022/05/14(土) 09:47:46.73ID:R8RMhLQi そう、joinで済むんだよね
慣れてない人はフラグや分岐で処理しがち
だからまずは具体的にどんな処理をしようとしてるのか聞きたかったんだ
慣れてない人はフラグや分岐で処理しがち
だからまずは具体的にどんな処理をしようとしてるのか聞きたかったんだ
299デフォルトの名無しさん
2022/05/14(土) 10:32:45.51ID:kcOGS6gO カンマの話は>>291が勝手に言ってるだけなのにjoinですむとかあたおかかよw
300デフォルトの名無しさん
2022/05/14(土) 11:19:53.60ID:0bRjAEIy いや分からないから聞いてるのよ
301デフォルトの名無しさん
2022/05/14(土) 11:23:04.66ID:etUAy71A ID変わってるけど291=298な
判定する必要のない例としてカンマ区切りを挙げて、だから具体的な例を教えてくれと書いたのに、カンマ区切りのうまいやり方をレクチャーしてくれる人が出てきたから説明しただけよ
判定する必要のない例としてカンマ区切りを挙げて、だから具体的な例を教えてくれと書いたのに、カンマ区切りのうまいやり方をレクチャーしてくれる人が出てきたから説明しただけよ
302デフォルトの名無しさん
2022/05/14(土) 12:41:49.36ID:HwJxcgzF303デフォルトの名無しさん
2022/05/14(土) 13:05:47.91ID:Ws3jUYfQ 具体的な処理が分からんとどうしようもないだろ
準備じゃなくて、準備のための情報の保存にすることならできるんじゃないか
#itemの準備
#itemの処理
#次のitemの準備のための設定
として実際の準備は次のループの先頭で行うようにする
準備じゃなくて、準備のための情報の保存にすることならできるんじゃないか
#itemの準備
#itemの処理
#次のitemの準備のための設定
として実際の準備は次のループの先頭で行うようにする
304デフォルトの名無しさん
2022/05/14(土) 13:37:46.90ID:hb3+ANgg はあ…やっぱり論点ズラしで無いことを正当化する流れになったかw
無いなら無いでいいよ
無いなら無いでいいよ
305デフォルトの名無しさん
2022/05/14(土) 13:39:58.87ID:HwJxcgzF >>289
最初、最後、何番目などには別処理をする場合は、foreachは向いてないというか
もともと for があって、何番目かを気にせず全部の要素に同じ処理をすることが多いので、そういう場合用に foreach があると思ってます
最初、最後、何番目などには別処理をする場合は、foreachは向いてないというか
もともと for があって、何番目かを気にせず全部の要素に同じ処理をすることが多いので、そういう場合用に foreach があると思ってます
306デフォルトの名無しさん
2022/05/14(土) 14:20:17.76ID:lDPvxjtF >>304
無いことを正当化してる書き込みは見当たらないけどどのレスのこと?
無いことを正当化してる書き込みは見当たらないけどどのレスのこと?
307デフォルトの名無しさん
2022/05/14(土) 15:09:44.46ID:Y4vxLItZ だからforeachでは原理的に無理
foreach($item in $items){ ... }
はざっくり
$e = $items.GetEnumerator();
while ($e.MoveNext()) {
$item = $e.Current;
...
}
みたいなコードになるから$e.MoveNext()を呼ぶまで最後かどうかはわからない
極端な話、乱数で最後にするかを決めるような実装されたらどうしようもない
foreach($item in $items){ ... }
はざっくり
$e = $items.GetEnumerator();
while ($e.MoveNext()) {
$item = $e.Current;
...
}
みたいなコードになるから$e.MoveNext()を呼ぶまで最後かどうかはわからない
極端な話、乱数で最後にするかを決めるような実装されたらどうしようもない
308デフォルトの名無しさん
2022/05/14(土) 16:18:41.32ID:YaxyXfsS 最後の要素って$list[-1]でいいんじゃないの?
if($item -ne $list[-1]){前処理}でいけると思うけど
if($item -ne $list[-1]){前処理}でいけると思うけど
309デフォルトの名無しさん
2022/05/14(土) 18:19:29.97ID:POYL5zWo <section id="image-test">
<a href="https://www~BBB.jpg">
<img src = "https://www~AAA.jpg">
</a>
</section>
があって、AAAとBBBのURLをそれぞれ変数にかくのうしたいのですが、これであってます?
$AAA = $web_source_code.getElementById("image-test").getAttribute("src")
$BBB = $web_source_code.getElementById("image-test").getAttribute("href")
<a href="https://www~BBB.jpg">
<img src = "https://www~AAA.jpg">
</a>
</section>
があって、AAAとBBBのURLをそれぞれ変数にかくのうしたいのですが、これであってます?
$AAA = $web_source_code.getElementById("image-test").getAttribute("src")
$BBB = $web_source_code.getElementById("image-test").getAttribute("href")
310デフォルトの名無しさん
2022/05/14(土) 18:55:56.30ID:QtW6yb+i 合ってないよ
section要素にはsrcもhrefもないんだから取れない
子や孫の要素からイイ感じで取ってきてくれるような期待をしてるんだろうけど、内側がどんな構造でいくつのimg要素とかがあるのかわかんないんだから、そんなのでイイ感じに取られる曖昧な挙動は逆に困る
要素をid指定で取ったあと.ChildNodesで自分で辿ったりする必要がある
querySelectorが使えれば楽なんだけどね
何度も似たような質問を繰り返すよりもまずHTML DOMの基礎を多少でも勉強しないとずっとハマるだけだし応用もできないよ
section要素にはsrcもhrefもないんだから取れない
子や孫の要素からイイ感じで取ってきてくれるような期待をしてるんだろうけど、内側がどんな構造でいくつのimg要素とかがあるのかわかんないんだから、そんなのでイイ感じに取られる曖昧な挙動は逆に困る
要素をid指定で取ったあと.ChildNodesで自分で辿ったりする必要がある
querySelectorが使えれば楽なんだけどね
何度も似たような質問を繰り返すよりもまずHTML DOMの基礎を多少でも勉強しないとずっとハマるだけだし応用もできないよ
311デフォルトの名無しさん
2022/05/14(土) 19:43:46.46ID:POYL5zWo ありがとうございます。HTML DOMを勉強してみます。
312デフォルトの名無しさん
2022/05/17(火) 11:55:50.17ID:w1KKtOUX PowerShellである処理について、変数の値だけ変えてそれぞれに同じ処理を実行したい場合、以下のように変数の値の数だけ実処理を複数段書けば実行できました。
ただ、これだとスマートではないと思いますので、ループ処理?のような形で最初に全変数を定義する等して、実際の処理自体は1か所だけにしたいのですが、どなたか書き方教えろください。。
------------
$変数a1 = 1-a
$変数b1 = 1-b
~~処理~~
------------
$変数a2 = 2-a
$変数b2 = 2-b
~~処理~~
------------
$変数a3 = 3-a
$変数b3 = 3-b
~~処理~~
------------
ただ、これだとスマートではないと思いますので、ループ処理?のような形で最初に全変数を定義する等して、実際の処理自体は1か所だけにしたいのですが、どなたか書き方教えろください。。
------------
$変数a1 = 1-a
$変数b1 = 1-b
~~処理~~
------------
$変数a2 = 2-a
$変数b2 = 2-b
~~処理~~
------------
$変数a3 = 3-a
$変数b3 = 3-b
~~処理~~
------------
313デフォルトの名無しさん
2022/05/17(火) 15:36:54.01ID:VMMgADOG コンテナでググれ
314デフォルトの名無しさん
2022/05/17(火) 19:17:50.09ID:ZA1GChKV ググれとか言う奴はスレから出ていけ
315デフォルトの名無しさん
2022/05/17(火) 20:03:10.54ID:xbjGOtM1316デフォルトの名無しさん
2022/05/18(水) 03:24:17.13ID:CLYU5EG2 こんな初歩の初心者にpowershellの配列は難しい気がする
別の規格がちゃんとしてる言語を1つでも履修して出直してもらいたいな
プロの俺でもフィルタ関連とか関数から返した場合とかでしょっちゅう間違えるんで…
別の規格がちゃんとしてる言語を1つでも履修して出直してもらいたいな
プロの俺でもフィルタ関連とか関数から返した場合とかでしょっちゅう間違えるんで…
317デフォルトの名無しさん
2022/05/18(水) 09:11:28.21ID:b9KxG2vQ ベテランでも諳んじて一発正解するのは難しいかったりするけど、シェルなんだから試行錯誤で構造化プログラミングの感覚を摑めばいいと思うよ
固定長配列でハコとして使う分には落とし穴もそうないのでは
パイプは使うかもしれないし使わないかもしれない
せっかくの気付きなんだから試してみるチャンス
固定長配列でハコとして使う分には落とし穴もそうないのでは
パイプは使うかもしれないし使わないかもしれない
せっかくの気付きなんだから試してみるチャンス
318デフォルトの名無しさん
2022/05/18(水) 10:26:21.69ID:Q05gEBgM まずforeach文で作ってみればいい、そんな難しくはない
foreach-objectとかのコマンドレットにしたい、てのは次の段階にしてみよう
foreach-objectとかのコマンドレットにしたい、てのは次の段階にしてみよう
319デフォルトの名無しさん
2022/05/19(木) 01:52:14.72ID:r92G1leA .NETのジェネリックなコレクションを使う癖を付ければpsの変な仕様に振り回されないで済むかも
320デフォルトの名無しさん
2022/05/19(木) 10:22:09.77ID:hhrIPFsF そもそも配列やコレクションをループで回したりするのはPowerShell的な発想ではない
積極的にパイプを使うんだよ
それに馴染めないならもうインラインでC#書いたほうがいい
積極的にパイプを使うんだよ
それに馴染めないならもうインラインでC#書いたほうがいい
321デフォルトの名無しさん
2022/05/19(木) 11:54:46.82ID:AWcD8iuw 初学者がパイプの意味を理解するのはハードル高いと思う
コードが長くてもいいから自分のやりたいことをロジックにして組み立てる
それも出来ないうちからパイプでかくなんてさらに混乱するだけ
コマンドレットを見てすぐ処理を想像できるような慣れてる人ならいいと思うけどね
コードが長くてもいいから自分のやりたいことをロジックにして組み立てる
それも出来ないうちからパイプでかくなんてさらに混乱するだけ
コマンドレットを見てすぐ処理を想像できるような慣れてる人ならいいと思うけどね
322デフォルトの名無しさん
2022/05/19(木) 12:11:52.45ID:vDWzHeJO323デフォルトの名無しさん
2022/05/19(木) 12:19:41.05ID:HGJ493WX 初心者ですでにスクリプトも書いていてリファクタの相談なのに、パイプ使わないならC#でって…
原理主義なのか話を聞かない人なのか柔軟性が動脈硬化起こしてる人なのか
原理主義なのか話を聞かない人なのか柔軟性が動脈硬化起こしてる人なのか
324デフォルトの名無しさん
2022/05/19(木) 14:36:52.46ID:mIjloFOo パイプに拒絶反応してる奴らがわらわらとw
325デフォルトの名無しさん
2022/05/19(木) 15:37:07.78ID:i7u7qPJB PowerShellのパイプはクセあるからなあ
326デフォルトの名無しさん
2022/05/19(木) 15:57:51.90ID:K1O9Nfx2 だが、そこが良い
327デフォルトの名無しさん
2022/05/19(木) 16:21:27.92ID:vDWzHeJO ドトネトのコレクションはPS的には未知の参照型オブジェクトだから
PSのスコープの影響も受けないし、
配列みたいに勝手に構造を壊されたりもしないから積極的に使う事をお勧めしたい
PSのスコープの影響も受けないし、
配列みたいに勝手に構造を壊されたりもしないから積極的に使う事をお勧めしたい
328デフォルトの名無しさん
2022/05/19(木) 17:15:25.08ID:z1zzxM54329デフォルトの名無しさん
2022/05/19(木) 17:16:58.08ID:z1zzxM54 ID変わったけど323=328な
好きなものを無条件に全肯定しないと則敵認定ってまさに信者やん
好きなものを無条件に全肯定しないと則敵認定ってまさに信者やん
330デフォルトの名無しさん
2022/05/20(金) 15:12:12.74ID:rcI504Fo -pv/-ovで黒魔術できるのがpwshパイプの真骨頂、汚いけど…
パイプは一般にバッファ単位の目詰まりが難だけど、これは-obで自由に調節できる
-pv/-ov/-ovは共通パラメータだからいつでも使えるしpitfallsは大体これで解決できるからパイプ活用したいなら、最重要で覚えるべし
パイプは一般にバッファ単位の目詰まりが難だけど、これは-obで自由に調節できる
-pv/-ov/-ovは共通パラメータだからいつでも使えるしpitfallsは大体これで解決できるからパイプ活用したいなら、最重要で覚えるべし
331デフォルトの名無しさん
2022/05/20(金) 20:50:08.65ID:8qofalUL >>330
パイプで最重要で覚える事はさあ、パイプはめっちゃコストコが掛かる書き方だな!って理解することじゃないかなあ
1行ずつ読んでパイプに渡してたら日が暮れるし…ずっとパイプの中で暮らさないといけない程変な言語でもない…
あっこの処理、パイプで連携したら効率いいかも…なんてあんまないのでな
これがパイプの真骨頂!って例を見せてくれたら、まあ考えを改めてもいいが…君の発言は新しいもの好きの勇み足発言にしか見えなくて痛々しい…
パイプで最重要で覚える事はさあ、パイプはめっちゃコストコが掛かる書き方だな!って理解することじゃないかなあ
1行ずつ読んでパイプに渡してたら日が暮れるし…ずっとパイプの中で暮らさないといけない程変な言語でもない…
あっこの処理、パイプで連携したら効率いいかも…なんてあんまないのでな
これがパイプの真骨頂!って例を見せてくれたら、まあ考えを改めてもいいが…君の発言は新しいもの好きの勇み足発言にしか見えなくて痛々しい…
332デフォルトの名無しさん
2022/05/20(金) 20:56:56.50ID:zxJBX/+G PowetShell大好きパイプ大好き
可能な限りパイプを使うように努めてるよ
可能な限りパイプを使うように努めてるよ
333デフォルトの名無しさん
2022/05/20(金) 20:58:03.25ID:zxJBX/+G ちょっと間違えちゃった
334デフォルトの名無しさん
2022/05/20(金) 21:00:45.78ID:slL0jKxc アホらし
C#と同じように書きたいならAdd-TypeでC#書けばいいでしょ
C#と同じように書きたいならAdd-TypeでC#書けばいいでしょ
335デフォルトの名無しさん
2022/05/20(金) 21:52:53.66ID:XK9Y5vcV 俺はバイブの方が好き♡
336デフォルトの名無しさん
2022/05/21(土) 04:11:37.11ID:xI11xSxR 結局どんな言語や書き方であろうと慣れでしか無い
読み辛いとか言う奴の大半が適応力やワーキングメモリの低い低能
読み辛いとか言う奴の大半が適応力やワーキングメモリの低い低能
337デフォルトの名無しさん
2022/05/29(日) 14:10:16.59ID:KYl341LT 2つ以上のcsvをできる限り簡単に結合する方法ありますでしょうか。
a.csv
id,name,gender
以下データ
b.csv
address,phone
以下データ
$firstcsv = a.csv
$secondcsv. = b.csv
$ketugou = connect-csv -delimiter ',' firstcsv[0] + firstcsv[1] + $secondcsv[0] + $secondcsv[1] + firstcsv[2]
$ketugou
id,name,address,phone,gender
以下データ
という感じであれば最高です。
a.csv
id,name,gender
以下データ
b.csv
address,phone
以下データ
$firstcsv = a.csv
$secondcsv. = b.csv
$ketugou = connect-csv -delimiter ',' firstcsv[0] + firstcsv[1] + $secondcsv[0] + $secondcsv[1] + firstcsv[2]
$ketugou
id,name,address,phone,gender
以下データ
という感じであれば最高です。
338デフォルトの名無しさん
2022/05/29(日) 15:56:20.58ID:2VGP7oaH bash -c "paste -d , a.csv b.csv"
339デフォルトの名無しさん
2022/05/29(日) 18:24:56.01ID:maoDzYC5 カラムの順序指定もしたいみたいだから、cutとかでもう1処理いるね。
PowerShellだと
(>>338) | ConvertFrom-Csv | select id,name,address,phone,gender | ConvertTo-Csv
ただしConvertFrom-Csv・ConvertTo-Csvは
元データを正確に再現する必要がある場合には難あり。
(Trim()が掛かるとかダブルクォーテーションで括られるとか。)
PowerShellだと
(>>338) | ConvertFrom-Csv | select id,name,address,phone,gender | ConvertTo-Csv
ただしConvertFrom-Csv・ConvertTo-Csvは
元データを正確に再現する必要がある場合には難あり。
(Trim()が掛かるとかダブルクォーテーションで括られるとか。)
340デフォルトの名無しさん
2022/05/29(日) 18:27:45.99ID:maoDzYC5 paste使えない環境とか、Trim()掛かると困るとか、PowerShellだけで実装したい場合
function Merge-Csv {
Param (
[Object[]] $InputObject,
[string[]] $Header,
[char] $Delimiter = ','
)
$tbl = [Data.DataTable]::new()
# 1行目をカラム名として使用
foreach ($csv in $InputObject) {
$tbl.Columns.AddRange(($csv[0].Split($Delimiter)))
}
# 各CSVの同じ行同士をDataRowにする。
for ($lineIdx = 0; $lineIdx -lt $InputObject[0].Length; $lineIdx++) {
$rowData = @(
foreach ($csv in $InputObject) {
$csv[$lineIdx].Split($Delimiter)
}
)
$null= $tbl.Rows.Add($rowData)
}
# カラム順序を指定順序に変更する。
for ($order = 0; $order -lt $Header.Length; $order++) {
$tbl.Columns[$Header[$order]].SetOrdinal($order)
}
# CSV形式で出力
foreach ($row in $tbl.Rows) {
$row.ItemArray -join $Delimiter
}
}
function Merge-Csv {
Param (
[Object[]] $InputObject,
[string[]] $Header,
[char] $Delimiter = ','
)
$tbl = [Data.DataTable]::new()
# 1行目をカラム名として使用
foreach ($csv in $InputObject) {
$tbl.Columns.AddRange(($csv[0].Split($Delimiter)))
}
# 各CSVの同じ行同士をDataRowにする。
for ($lineIdx = 0; $lineIdx -lt $InputObject[0].Length; $lineIdx++) {
$rowData = @(
foreach ($csv in $InputObject) {
$csv[$lineIdx].Split($Delimiter)
}
)
$null= $tbl.Rows.Add($rowData)
}
# カラム順序を指定順序に変更する。
for ($order = 0; $order -lt $Header.Length; $order++) {
$tbl.Columns[$Header[$order]].SetOrdinal($order)
}
# CSV形式で出力
foreach ($row in $tbl.Rows) {
$row.ItemArray -join $Delimiter
}
}
341デフォルトの名無しさん
2022/05/29(日) 18:28:27.86ID:maoDzYC5 注意:
・CSVは1行1要素の配列で、1行目にヘッダがあり、データに区切り文字を含んでいない想定。
・各CSVのヘッダに重複はない想定。
・1つ目のCSVの行数を基準にしている。
・エラーチェックしてないので適宜追加すること。
例:
$csv1 = @(
@"
id,name,gender
csv1.r1.id,csv1.r1.name,csv1.r1.genger
csv1.r2.id,csv1.r2.name,csv1.r2.genger
csv1.r3.id,csv1.r3.name,csv1.r3.genger
"@ -split '\r?\n'
)
$csv2 = @(
@"
address,phone
csv2.r1.address,csv2.r1.phone
csv2.r2.address,csv2.r2.phone
csv2.r3.address,csv2.r3.phone
"@ -split '\r?\n'
)
Merge-Csv $csv1, $csv2 -Header id, name, address, phone, gender | ConvertFrom-Csv | ft -a
id name address phone gender
-- ---- ------- ----- ------
csv1.r1.id csv1.r1.name csv2.r1.address csv2.r1.phone csv1.r1.genger
csv1.r2.id csv1.r2.name csv2.r2.address csv2.r2.phone csv1.r2.genger
csv1.r3.id csv1.r3.name csv2.r3.address csv2.r3.phone csv1.r3.genger
・CSVは1行1要素の配列で、1行目にヘッダがあり、データに区切り文字を含んでいない想定。
・各CSVのヘッダに重複はない想定。
・1つ目のCSVの行数を基準にしている。
・エラーチェックしてないので適宜追加すること。
例:
$csv1 = @(
@"
id,name,gender
csv1.r1.id,csv1.r1.name,csv1.r1.genger
csv1.r2.id,csv1.r2.name,csv1.r2.genger
csv1.r3.id,csv1.r3.name,csv1.r3.genger
"@ -split '\r?\n'
)
$csv2 = @(
@"
address,phone
csv2.r1.address,csv2.r1.phone
csv2.r2.address,csv2.r2.phone
csv2.r3.address,csv2.r3.phone
"@ -split '\r?\n'
)
Merge-Csv $csv1, $csv2 -Header id, name, address, phone, gender | ConvertFrom-Csv | ft -a
id name address phone gender
-- ---- ------- ----- ------
csv1.r1.id csv1.r1.name csv2.r1.address csv2.r1.phone csv1.r1.genger
csv1.r2.id csv1.r2.name csv2.r2.address csv2.r2.phone csv1.r2.genger
csv1.r3.id csv1.r3.name csv2.r3.address csv2.r3.phone csv1.r3.genger
342デフォルトの名無しさん
2022/05/29(日) 19:20:10.32ID:KYl341LT >>338-340
ありがとうございます!
書き起こしてくれるなんて、感謝のしようがありません・・。
少し読み解くのに時間がかかりそうですが、半日考えても良い手が思いつかなかったので
しっかり読んで身に着けたいと思います。
ありがとうございました。
ありがとうございます!
書き起こしてくれるなんて、感謝のしようがありません・・。
少し読み解くのに時間がかかりそうですが、半日考えても良い手が思いつかなかったので
しっかり読んで身に着けたいと思います。
ありがとうございました。
343デフォルトの名無しさん
2022/05/29(日) 23:48:36.53ID:MBI5r2Hn 割とちゃんとした風なのが出てきてよかったな
>>337の結合は別にCSVとして処理する必要ねーじゃんと思ってたわ
>>337の結合は別にCSVとして処理する必要ねーじゃんと思ってたわ
344デフォルトの名無しさん
2022/05/30(月) 22:45:36.14ID:5eMIb3Vr どこでみんな基礎を習得してるか気になる
都度ネット検索して見よう見まねでやってるけどちゃんと体型立てて学んだ方が良い気が最近してる
上のcsv解決の発想だって全然出てこないもの
都度ネット検索して見よう見まねでやってるけどちゃんと体型立てて学んだ方が良い気が最近してる
上のcsv解決の発想だって全然出てこないもの
345デフォルトの名無しさん
2022/05/30(月) 23:00:34.01ID:1p0oXEXT PowerShellから入る人なんていないでしょ
初学者がPowerShellでまともなプログラミングを学ぶのは難しいからC#でもやった方がいいよ
初学者がPowerShellでまともなプログラミングを学ぶのは難しいからC#でもやった方がいいよ
346デフォルトの名無しさん
2022/05/30(月) 23:03:23.68ID:6thXMpkz 薄々そうじゃないかと思ってた
やっぱC#行くべきなのね
やっぱC#行くべきなのね
347デフォルトの名無しさん
2022/05/30(月) 23:08:03.98ID:fHLpS2ag >>345
C#もJavaも含めてほぼプログラム言語扱えない非プログラマーだけどPowershellは普通に学習出来たよ
C#もJavaも含めてほぼプログラム言語扱えない非プログラマーだけどPowershellは普通に学習出来たよ
348デフォルトの名無しさん
2022/05/30(月) 23:14:06.95ID:5eMIb3Vr 会社では追加基本インストール禁止だから使える自動化ツールがVBA、WSH、CMD、Powershell くらいしか無いのです
VBA VBSは一通り使えるけどやっぱモダンなの使いたいって事でpowershellを使いこなしたいんですよ
っていうパターンは自分以外にもきっといるんだろうなって思って
VBA VBSは一通り使えるけどやっぱモダンなの使いたいって事でpowershellを使いこなしたいんですよ
っていうパターンは自分以外にもきっといるんだろうなって思って
349デフォルトの名無しさん
2022/05/30(月) 23:14:46.76ID:0w3w2Q9u >>347
どうやって学習した?
どうやって学習した?
350デフォルトの名無しさん
2022/05/30(月) 23:16:19.58ID:bPn6KqG1 どの言語を学んでも解決ロジックなんかは数をこなして他人のソースサンプルを見るとかしていかないと見につかない
C#とか言語仕様は入門書が充実してるところが違うだけで読んだからといって
問題解決力が身につくわけではないことは心得ておかないとね
教科書を全部読んだからといって入試問題が解けるか?ってこと
C#とか言語仕様は入門書が充実してるところが違うだけで読んだからといって
問題解決力が身につくわけではないことは心得ておかないとね
教科書を全部読んだからといって入試問題が解けるか?ってこと
351デフォルトの名無しさん
2022/05/30(月) 23:16:45.35ID:0w3w2Q9u352デフォルトの名無しさん
2022/05/30(月) 23:29:45.91ID:ArE2ZMbw >>348
プライベートのPCでやればいい
プロでプログラミングやってる人間は学生時代やプライベートの時間など多かれ少なかれ仕事以外の時間を捧げてるんだよ
基礎から学ぶというのはそういう連中と同じ土俵に立つってことだ
プライベートのPCでやればいい
プロでプログラミングやってる人間は学生時代やプライベートの時間など多かれ少なかれ仕事以外の時間を捧げてるんだよ
基礎から学ぶというのはそういう連中と同じ土俵に立つってことだ
353デフォルトの名無しさん
2022/05/30(月) 23:38:38.76ID:fHLpS2ag354デフォルトの名無しさん
2022/05/30(月) 23:38:47.91ID:5eMIb3Vr 方法論を聞いてるのに精神論を語る奴っているよね
355デフォルトの名無しさん
2022/05/30(月) 23:49:53.74ID:+PNdSWJO 普通にpwsh使ってコマンドライン作業してれば覚える
スクリプトもその延長線上
スクリプトもその延長線上
356デフォルトの名無しさん
2022/05/30(月) 23:54:36.28ID:9dnvWkql いうほど精神論説いてるやついる?
〇〇論を聞いてるのに〇〇論を、そういう気の利いたフレーズを言ってみたい気持ちが先行してるように見える
〇〇論を聞いてるのに〇〇論を、そういう気の利いたフレーズを言ってみたい気持ちが先行してるように見える
357デフォルトの名無しさん
2022/05/30(月) 23:57:11.82ID:NR5IHQxQ 本腰入れて文法とかほじくりたいならまずはpowershellexplainedってブログオススメ
358デフォルトの名無しさん
2022/05/31(火) 00:32:11.60ID:eW10AB/z やりたいことが先にあって、それを如何に良く実現するかをあれやこれや試行錯誤していくのがいいよ
漠然と習得したいとか体系的にとかやってると漠然としか身につかない
あと人のものをよく見ること
こういうやり方があったのか、ってのを一つでも多く体験するのがいい
漠然と習得したいとか体系的にとかやってると漠然としか身につかない
あと人のものをよく見ること
こういうやり方があったのか、ってのを一つでも多く体験するのがいい
359デフォルトの名無しさん
2022/05/31(火) 00:43:09.74ID:z7NqqS3T コマンドラインで補完叩きながら必要そうなパラメータやメンバ探してれば大体望みのものが見つかるはず
フラッシュ暗記的にどこに使えそうなものがあったか思い出せればヘルプも引ける
俺がワンライナー以上の事をするときの具体的な手順
必要そうな関数を一つ定義してはパラメータ与えて何回かチェック、動けばfunction:から追記リダイレクトして最後にvimで手直ししてmainを添えて取り敢えず動くものを完成
暇なときに気が向いたら体裁整えたり関数まとめたり構造化
副産物として汎用性高そうなの出来たら$profileにも追記
こういうlisp的なサイクル回して使っていくのがいいと思う
フラッシュ暗記的にどこに使えそうなものがあったか思い出せればヘルプも引ける
俺がワンライナー以上の事をするときの具体的な手順
必要そうな関数を一つ定義してはパラメータ与えて何回かチェック、動けばfunction:から追記リダイレクトして最後にvimで手直ししてmainを添えて取り敢えず動くものを完成
暇なときに気が向いたら体裁整えたり関数まとめたり構造化
副産物として汎用性高そうなの出来たら$profileにも追記
こういうlisp的なサイクル回して使っていくのがいいと思う
360デフォルトの名無しさん
2022/05/31(火) 00:43:37.67ID:BZqNx7Tc361デフォルトの名無しさん
2022/05/31(火) 23:10:25.48ID:OuANH9gG このコマンドがうまく動きません。
1行で書いて、うまく動かす方法を教えてください
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process remove-item -ArgumentList C:\Users\Public\Desktop\test -Verb runas"
Start-Process : このコマンドは、次のエラーのため実行できません: 指定されたファイルが見つかりません。
とエラーが出て正常に実行できません。
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process cmd -Verb runas"
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process notepad -ArgumentList C:\Windows\System32\drivers\etc\hosts -Verb runas"
このコマンドはうまく動くので、同じ感じで行けるのかと思ったのですが、上のremove-itemコマンドの場合がうまくいきません。
1行で書いて、うまく動かす方法を教えてください
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process remove-item -ArgumentList C:\Users\Public\Desktop\test -Verb runas"
Start-Process : このコマンドは、次のエラーのため実行できません: 指定されたファイルが見つかりません。
とエラーが出て正常に実行できません。
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process cmd -Verb runas"
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process notepad -ArgumentList C:\Windows\System32\drivers\etc\hosts -Verb runas"
このコマンドはうまく動くので、同じ感じで行けるのかと思ったのですが、上のremove-itemコマンドの場合がうまくいきません。
362デフォルトの名無しさん
2022/06/01(水) 04:00:12.01ID:U+A7iBPz remove-item.***なんて言う実行ファイルは存在しないから無理なのは当たり前
どうしてもstart-processに繋げないといけないの?
どうしてもstart-processに繋げないといけないの?
363361
2022/06/01(水) 05:21:30.48ID:lJWk1HAY >>362
レスありがとうございます。
> どうしてもstart-processに繋げないといけないの?
というわけではありません。
1行で管理者権限でRemove-Item C:\Users\Public\Desktop\testを実行する
ということが出来れば、どんな方法であっても構いません。
①powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process powershell -Verb runas"
②Powershellが管理者:Windows Powershellとして起動する。
③remove-item C:\Users\Public\Desktop\test を実行する
という①と③を1行でまとめる方法です。
レスありがとうございます。
> どうしてもstart-processに繋げないといけないの?
というわけではありません。
1行で管理者権限でRemove-Item C:\Users\Public\Desktop\testを実行する
ということが出来れば、どんな方法であっても構いません。
①powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process powershell -Verb runas"
②Powershellが管理者:Windows Powershellとして起動する。
③remove-item C:\Users\Public\Desktop\test を実行する
という①と③を1行でまとめる方法です。
364デフォルトの名無しさん
2022/06/01(水) 11:08:03.91ID:yxFCK4Jy >>363
自分もこの問題は解決出来なかった
UAC有効な環境で管理者権限使うならStart-processか管理者権限実行なのも一緒
しかしStart-processはコマンドレット実行出来ない模様
ワークアラウンドで別のcmdスクリプト作ってそいつをStart-processで実行させるという非スマートな力業でどうにかするしかなかった
自分もこの問題は解決出来なかった
UAC有効な環境で管理者権限使うならStart-processか管理者権限実行なのも一緒
しかしStart-processはコマンドレット実行出来ない模様
ワークアラウンドで別のcmdスクリプト作ってそいつをStart-processで実行させるという非スマートな力業でどうにかするしかなかった
365デフォルトの名無しさん
2022/06/01(水) 11:27:22.75ID:HV/k13ls powershell -NoProfile -ExecutionPolicy unrestricted -command "Start-Process -Verb runas -FilePath powershell.exe -ArgumentList ‘-command remove-item C:\Users\Public\Desktop\test'"
試してないけどこんな感じで出来ん?
不備とかエスケープ処理が必要だったりとかあるかも
powershellから昇格させたpowershell呼んでそこでdel
試してないけどこんな感じで出来ん?
不備とかエスケープ処理が必要だったりとかあるかも
powershellから昇格させたpowershell呼んでそこでdel
366デフォルトの名無しさん
2022/06/02(木) 00:03:43.97ID:B9Goniqn >>365
出来ました
出来ました
368デフォルトの名無しさん
2022/06/04(土) 17:47:37.42ID:TSmSPUgr 定義した変数のメモリ開放は$nullの代入でいいのでしょうか?
メモリリソースが足りませんとエラーがでるので。
メモリリソースが足りませんとエラーがでるので。
369デフォルトの名無しさん
2022/06/04(土) 18:56:11.76ID:IRaDT1CY Remove-Variable
まあ設計を見直した方がいいと思うけど
まあ設計を見直した方がいいと思うけど
370デフォルトの名無しさん
2022/06/04(土) 20:19:25.41ID:TSmSPUgr ありがとうございます!
371デフォルトの名無しさん
2022/06/18(土) 20:04:49.41ID:2rZBula1 フォルダ内にあるすべての画像ファイルにおいて、その画像のWidthが1280のものだけを削除するスクリプトを作成中ですが、ファイルはどうやって削除するのでしょうか?
Get-ChildItem "D:\Download\test" | Sort Name | % {
$img = [System.Drawing.Image]::FromFile($_.fullname)
if ($img.Width -eq 1280) {
Remove-Item $_
}
}
だと
Remove-Item : Cannot find path 'D:\Download\test_01.jpg' because it does not exist.
とエラーがでるのですが、パスの設定方法がいまいちわかりません。
Get-ChildItem "D:\Download\test" | Sort Name | % {
$img = [System.Drawing.Image]::FromFile($_.fullname)
if ($img.Width -eq 1280) {
Remove-Item $_
}
}
だと
Remove-Item : Cannot find path 'D:\Download\test_01.jpg' because it does not exist.
とエラーがでるのですが、パスの設定方法がいまいちわかりません。
372デフォルトの名無しさん
2022/06/18(土) 20:44:46.51ID:opzT6/bZ Remove-Item $_.FullName
か
$_ | Remove-Item
かな
か
$_ | Remove-Item
かな
373デフォルトの名無しさん
2022/06/18(土) 20:51:53.83ID:2rZBula1 ありがとうございます。やってみます!
374デフォルトの名無しさん
2022/06/19(日) 00:03:25.24ID:d/5y1flf VSCode でも、コマンドプロンプト・PowerShell を使うと、
ファイル・フォルダ操作のアクセス権限が無いから、
右下のトーストに、そういうエラー通知が来る
そこで、アプリに対して、操作を許可する
それと、Windows でもファイルパス区切りに、/ を使える。
C:/Users/Owner/Documents/a.txt
ファイル・フォルダ操作のアクセス権限が無いから、
右下のトーストに、そういうエラー通知が来る
そこで、アプリに対して、操作を許可する
それと、Windows でもファイルパス区切りに、/ を使える。
C:/Users/Owner/Documents/a.txt
375デフォルトの名無しさん
2022/06/19(日) 18:24:35.04ID:xfiYTNc0 今までこれをbatで起動させていました!
-------
sc stop DoSvc
@echo off
echo.
echo ====================
echo Enable_TaskScheduler
echo ====================
echo.
rem ----- win10_ServicePreparation_DoSvc -----
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f
exit
-------
特定サービスの作動強制停止およびスタートアップ強制置換です
しかしこれでは管理者権限を付与する場合、人間がコンテキストで管理者実行をその都度選んでやらねばならず、
反映の有無も再起動が必要だったり再起動なしで切り替わったり不安定です
PowerShellのps1はそれら管理者権限付与の自動化や再起動不要が可能と聞きました
ネットにはバッチのような記述解説サイトが乏しいので、コードの代替案、またはおすすめの参考書等があれば教えてください〜
-------
sc stop DoSvc
@echo off
echo.
echo ====================
echo Enable_TaskScheduler
echo ====================
echo.
rem ----- win10_ServicePreparation_DoSvc -----
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f
exit
-------
特定サービスの作動強制停止およびスタートアップ強制置換です
しかしこれでは管理者権限を付与する場合、人間がコンテキストで管理者実行をその都度選んでやらねばならず、
反映の有無も再起動が必要だったり再起動なしで切り替わったり不安定です
PowerShellのps1はそれら管理者権限付与の自動化や再起動不要が可能と聞きました
ネットにはバッチのような記述解説サイトが乏しいので、コードの代替案、またはおすすめの参考書等があれば教えてください〜
376デフォルトの名無しさん
2022/06/19(日) 19:51:13.64ID:k543CSlC377デフォルトの名無しさん
2022/06/19(日) 22:46:16.09ID:WW6NzJIS サービスを削除でぐぐれ
378デフォルトの名無しさん
2022/06/20(月) 08:42:33.76ID:sIvuqcVm レジストリを直接編集するな
Windows 秘話: なぞのキー
https://docs.microsoft.com/ja-jp/previous-versions/technet-magazine/dn456530(v=msdn.10)
> 変更または操作されることがまったく意図されていない設定が存在します。そのような設定を見つけたときには、とにかくそっとしておいてください。
Windows 秘話: なぞのキー
https://docs.microsoft.com/ja-jp/previous-versions/technet-magazine/dn456530(v=msdn.10)
> 変更または操作されることがまったく意図されていない設定が存在します。そのような設定を見つけたときには、とにかくそっとしておいてください。
379デフォルトの名無しさん
2022/06/20(月) 08:48:02.21ID:3bt1t/j5 それはメーカーが分解すんなって言うのと同等の話
380デフォルトの名無しさん
2022/06/20(月) 10:58:01.21ID:4+IWkf9p 目的がテレメトリ関連の通信の遮断だしサービス削除しかないと思うけどな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【!?】高市早苗「靖国神社電撃参拝プラン」浮上!これもう戦争だろ… [481941988]
- 【実況】博衣こよりのえちえち朝こよ🧪
- カカロット、腰痛い
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
