PowerShell -Part 6

■ このスレッドは過去ログ倉庫に格納されています
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/

次スレは>>980が立ててね!!
2022/03/29(火) 02:33:47.96ID:ieHzhZh4
何でインデントついてるんだろと思ったら\u3000でしたか
207202
垢版 |
2022/03/29(火) 09:28:46.66ID:H9URZ70O
>>205
うん。範囲指定できるので、"['\u2018-\u201B]" とか書くと、もっとシンプルかも。

>>206
U+3000 の Unicode クラスは Zs で、正当な空白文字なので、コピペで動いてくれる。
2022/03/29(火) 21:51:03.77ID:SKE99kDT
B.1.9.3 文字列リテラル
https://docs.microsoft.com/ja-jp/powershell/scripting/lang-spec/chapter-15#b193-string-literals
209デフォルトの名無しさん
垢版 |
2022/04/04(月) 21:22:25.32ID:ECqCrQfL
>>1
$url=$($site="+pj.og.ldn.iakkokA3%etis=q?hcraes/moc.elgoog.www//:sptth".ToCharArray();[Array]::Reverse($site);-join $site)
"ソビエト人","支那人","朝鮮人" | % {start "$url$_";sleep 21}
2022/04/07(木) 22:32:51.33ID:49oapsGv
(Get-Date).ToString("M/d") # 4/7
(Get-Date).ToString("M") # 4月7日
(Get-Date).ToString("d") # 2022/04/07

"M"と"d"単体で取れないのは仕様なの?
2022/04/07(木) 22:51:48.46ID:UZkBrI19
>>210
書式指定を単体で使う場合は%を前置する

https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/custom-date-and-time-format-strings#UsingSingleSpecifiers
2022/04/07(木) 23:27:13.95ID:49oapsGv
>>211
なるほど。ありがとう
2022/04/13(水) 14:32:54.13ID:Wntan1Ql
いえいえ
2022/04/13(水) 21:32:59.17ID:wBIIYhTi
事務員がこれ使って自動化して評価されるかね?
Excel VBAとかだと認知されてるし動きも分かるからアピールになりそうだけど、これはps1をダブルクリックしたら既に結果が出てるキンクリ状態になるんで何か地味なんだよね
出来ることは多彩なのにさ
2022/04/14(木) 08:19:21.43ID:Qn5tHQbB
結果を開いて見せつけてやればよろしいかと
2022/04/14(木) 16:18:50.55ID:NCtDoq3M
キンクリ状態てどういう意味なん
例えばExcel操作の自動化なら最初に$excel.Visible = $true
とでもしとけば同じようにリアルタイムで処理中の動きが出てくるけど
事務員ならいらん仕事押し付けられるのがオチだから隠しとけ
この程度でドヤりたいならIT土方にでも転職しなよ
217デフォルトの名無しさん
垢版 |
2022/04/14(木) 20:27:06.96ID:PvzsrQHs
事務員がマクロやスクリプトで評価されても給料や時給が上がったりはしないだろ
都合よく使われるだけだよ
退屈な定常業務から抜け出したい動機なら良いのかも
218デフォルトの名無しさん
垢版 |
2022/04/14(木) 20:32:25.20ID:PvzsrQHs
×定常業務
○定型業務
2022/04/14(木) 20:56:37.25ID:gLpPhM76
>>214
レスから知性を感じない
2022/04/14(木) 21:57:43.29ID:ICzBofFJ
それがパワー・シェルの能力……
ボクがこのps1をダブルクリックした時点で"結果"はもう確定しているッ!!
マクロみたいなトロいもんじゃあないんです
221214
垢版 |
2022/04/14(木) 22:27:15.00ID:7HZEzgeQ
やっぱり評判あんま芳しく無いからやめとくわ
回答してくれた皆さんありがとう
2022/04/15(金) 01:21:33.96ID:BWy9qJpj
>>220
ダブルクリックしたらISEが開いたんだが
2022/04/15(金) 08:51:23.89ID:UtgXyNoL
パワーシェル
破壊力 A
スピード B
射程距離 A
持続力 B
精密動作性 E
成長性 E

タイプ 自動操縦型
能力 人が嫌がる仕事をする

To Be Continued…
2022/04/15(金) 11:34:08.46ID:0ObfuMR0
パワーシェルのスピードは最下位ランクだろ
C#埋め込むなら別だが
2022/04/15(金) 11:53:27.02ID:UtgXyNoL
Cランクが人並みだからそれよりちょっと速いBランクが妥当
2022/04/15(金) 12:21:45.82ID:wKBILFEa
ウマナミナノネー
2022/04/15(金) 20:16:25.51ID:k1oDZsjR
windowsに標準に入っているってことだけはかなり優遇されてる
2022/04/15(金) 20:50:36.38ID:6g+y36jy
JScript.NETも入っているぞー
2022/04/15(金) 21:04:54.33ID:k1oDZsjR
プログラミングにおける認知度の低さは調べにくいし致命的
2022/04/15(金) 23:12:56.97ID:41Kz9otF
プログラミング言語の人気ランキング、順位変動は縮小傾向にある――RedMonkが調査
https://atmarkit.itmedia.co.jp/ait/articles/2204/13/news040.html

このランキングだとPowerShellは17位だぞ
Rustに勝ってる!
2022/04/15(金) 23:31:17.12ID:3ZMsARLO
PowerShellはランキングとか関係ないでしょ
PS5止まりで.NET4.8と心中する運命しかない、完全に袋小路の言語だよ
2022/04/16(土) 00:54:32.11ID:Zcudz7ky
Windowsと共に来たりWindowsと共に滅ぶべし
2022/04/16(土) 12:02:03.34ID:nVJ4wCm0
>>232
おれがこれまで作ったソフトのほとんどが共に滅ぶな
かなりの割合の開発者が一緒に滅ぶんじゃないだろうか
2022/04/16(土) 12:30:34.16ID:4vTOoh05
>>231
それってよく聞くけどなんの問題があるの?
Powershellなんてそもそもbetter MS-DOSであり
better WSHでしかないんだからなんの問題もないでしょ
なんか過剰な期待をしてた人がいるの?
2022/04/16(土) 12:58:53.88ID:NFUA2B25
そもそもすでにオープンソースなんだし衰退することはあるだろうけど袋小路とか意味わからん
2022/04/16(土) 15:51:46.54ID:9cJTCJfn
Powershellはオープンソースとして元気にやってるよ
7.3でコミュニティ主体の機能改善になりそうなのはこの辺とか?
scriptblockの引数の数でオーバーロード解決できるようにしたいというもの
https://github.com/PowerShell/PowerShell/issues/16940
2022/04/16(土) 15:57:59.43ID:9cJTCJfn
あとはc言語とかrustのようなネイティブアプリからPowershellをホスト出来るようになっていたりする
https://github.com/awakecoding/pwsh-native-host
2022/04/16(土) 16:17:49.58ID:GtnKHoFP
元気もなにも開発してるのMSの社員だし、6以降は事実上Azure専用だよ
2022/04/16(土) 16:24:09.56ID:nVJ4wCm0
>>237
コードちら見したけど普通にPSプロセス呼んでプロセス間通信した方がよくないってなった
2022/04/16(土) 18:36:59.47ID:9cJTCJfn
>>239
新たにプロセスを立ち上げることでコマンドライン等が生成されるのを回避したいらしい
2022/04/21(木) 00:00:35.45ID:9X1k5UGW
Powershell使えたら小5と付き合えますか?
2022/04/21(木) 00:43:18.15ID:KtzHzoax
きみが小5か小6なら付き合えるかもしれないね!
2022/04/21(木) 02:16:18.40ID:/A3pqg11
20年位前の30代前半の頃、小6と付き合ってた
powershellのお陰だと思うよたぶん
2022/04/21(木) 03:15:46.74ID:+OyHOy+D
>>243
そのころpowershellは未だ無いだろ

おれの場合は30年位前に小6と付き合っていると噂されたが事実はそのようなことはなく
当時powershellがあれば付き合えたのは確実だったと思う
2022/04/21(木) 15:56:01.36ID:6s2N7jdI
ワイも小学生低学年のころ、かけっこで1位だった
PowerShellのおかげだろうなあ
246デフォルトの名無しさん
垢版 |
2022/04/29(金) 11:16:42.60ID:8kZAWy9o
htmlの特定のID(例:<div id="XXX">)の中身を取得するにはどうすればいいでしょうか?
htmlのソース自体は$sourceに格納しています。
2022/04/29(金) 11:18:43.54ID:RNDpr+pH
文字コードを文字に変換するコマンドはありますでしょうか。

PS > change-moji -code SJIS 0x41
A
PS >

こういうコマンドです。
2022/04/29(金) 11:25:23.63ID:X7f5QGPR
[char]0x41
2022/04/29(金) 18:39:45.29ID:RNDpr+pH
>>248
ありがとうございます。
2022/04/29(金) 23:23:53.91ID:X7f5QGPR
>>246
$html = New-Object -ComObject "HTMLFile"
$html.IHTMLDocument2_write($source)
$html.getElementsByTagName("div") | ?{ $_.ID -like "特定のID" }
みたいにCOM使ってDOMで操作するか、正規表現で自力で解析するかしか思いつかない
powershellの定番の処理方法があるなら俺が聞きたい
2022/04/30(土) 02:08:01.29ID:TTQ8Rhtz
Ruby なら、Nokogiri, CSS Selector で、

require 'nokogiri'

doc = Nokogiri::HTML(<<EOT)
<div>あ</div>
<div id="xyz">い</div>
EOT

element = doc.at_css( '#xyz' )
puts element.content #=> い
2022/04/30(土) 02:45:41.62ID:PTNoCeDZ
getElementsByTagName 使うなら getElementById でいいんじゃない
253デフォルトの名無しさん
垢版 |
2022/04/30(土) 13:04:46.37ID:9f5J4pIa
Windows11は、結構Powershellが主役の位置に躍り出てきて、コマンドプロンプトの影が薄くなってる。
2022/04/30(土) 15:40:15.85ID:6Xk9b1VA
>>252
DOM操作にお詳しいなら補足してやって
俺は普段webページ解析なんてしないから適当に書いただけなので
2022/04/30(土) 23:17:02.29ID:/67qPyiA
xml形式ならselect-xmlというコマンドレットがあるんだけどね
2022/05/01(日) 07:07:03.47ID:Rd1MW222
Invoke-WebRequest でパースできるんだから Web からだけじゃなく html を格納した変数とかもソースにできればいいのにね
2022/05/01(日) 22:31:03.32ID:bsI6eYYg
COMのやつってIEのパーサなんだよね
くやしいけどこの辺を高度にやりたいならスクレイピングに定評のあるスクリプトでやった方がいいと思う
258デフォルトの名無しさん
垢版 |
2022/05/02(月) 03:17:08.47ID:GCJ++Ydj
>>250
ありがとうございます!
できました。
259デフォルトの名無しさん
垢版 |
2022/05/07(土) 22:39:06.01ID:A4G1I3Hd
$idContents = $html.getElementById($idName).innerHTML
でinnerHTMLを取得して、$idContentsに格納してある「src」の値(src="https://〜〜.jpg)はどうやって取得するのでしょうか?
2022/05/07(土) 23:18:18.03ID:aihC1Ap7
innerHTMLは使わない
getAttribute("src")を使う
261デフォルトの名無しさん
垢版 |
2022/05/08(日) 11:03:41.82ID:KUDJnBX7
$idContents = $html.getElementById($idName).getAttribute("src")
で試したのですが、$idContentsの中身は何もない状態です。
試しに、$idContents = $html.getElementById($idName)だけで実行すると、
$idContentsの中身に
innerHTML : <IMG id=img src="https://〜〜jpg/keystamp=〜〜;></A>
はあります。
2022/05/08(日) 12:11:23.98ID:q3KU1av3
$idNameは'img'なのか?
263デフォルトの名無しさん
垢版 |
2022/05/08(日) 12:17:10.62ID:KUDJnBX7
$idNameは'img'ではなく、'kr3'になります。
2022/05/08(日) 12:25:56.66ID:q3KU1av3
だから取得したいのは、id=imgのIMGタグにあるsrc属性値じゃないのか?
$idNameを'img'にしろよ
265デフォルトの名無しさん
垢版 |
2022/05/08(日) 12:30:38.21ID:vSiZdN2k
ID:KUDJnBX7はバカなんだろうね
266デフォルトの名無しさん
垢版 |
2022/05/08(日) 12:47:35.64ID:KUDJnBX7
>>264
なるほどです。ありがとうございました。
267デフォルトの名無しさん
垢版 |
2022/05/09(月) 13:37:41.35ID:Plp0Diry
特定のフォルダの中にファイルが10個以上あったらタイムスタンプが一番古いファイルを削除する処理をPowerShellでどう書くかどなたか教えろください。。
スクリプトはタスクスケジューラで日次で走らせるイメージです。
2022/05/09(月) 13:54:29.50ID:7AqNU3U0
一番古い一個だけを削除?それとも9個残して削除?
269デフォルトの名無しさん
垢版 |
2022/05/09(月) 14:11:58.68ID:I+mG682T
https://teratail.com/questions/23031
270デフォルトの名無しさん
垢版 |
2022/05/09(月) 16:57:08.12ID:Plp0Diry
>>268
一番古い一個だけを削除か、最新の9個を残してそれ以外を削除、の簡単な方でお願いしたいです。
2022/05/09(月) 17:37:09.13ID:7AqNU3U0
>>270
269の30を9に変更するのが簡単だと思います
一番古い一個だけを消すのは Select-Object -Skip 9 | Select-Object -Last と二回もSelect-Object するのでとても難易度が高いです
2022/05/09(月) 22:37:25.90ID:lywqA2G/
その質問バッチファイルスレで見たぞ
powershellの回答も貼ってある
2022/05/10(火) 00:05:58.23ID:aI8FHZ+3
【.cmd】 バッチファイルスクリプト %14 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1597442426/757-764

漏れが763 に、Ruby で書いた。
これをPower Shell(PS)用に書き直せばよい

764には誰かが、PSで書いている
2022/05/10(火) 01:07:57.29ID:0qiVBd6f
Multicsだったのか
2022/05/10(火) 23:04:11.60ID:gcxSlYEt
フリーランスエンジニアになってからの年収推移を公開【現在年収1000万】

【実体験】仕事ができない新卒エンジニアでも月収70万フリーランスになれる理由

フリーランスエンジニアは年収900万円までは余裕!現役フリーランスエンジニアが徹底解説

フリーエンジニアの平均年収!未経験が年収1000万円を超える方法とは?

月額150万円以上も可能?ITフリーランスで高単価を獲得できる理由

在宅で年収1000万稼ぐフリーランスエンジニアの稼ぎ方【再現できる】

フリーランスのエンジニアやるなら45歳までに貯金5000万円作れないと死ぬ説
276デフォルトの名無しさん
垢版 |
2022/05/12(木) 17:12:26.22ID:QXSbgRzq
フォルダA内にファイルを1つずつ個別に圧縮した上でフォルダBにそれぞれ出力するPowerShellってどう書けば良きでしょうか。
以下スクリプトを書いてみましたが、これだと1つずつの圧縮はできないようで。。。

//フォルダA内のファイル名(拡張子なし)を取得
$src = Get-ChildItem -Name C:\folderA
$file = [System.IO.Path]::GetFileNameWithoutExtension("$src")
//ファイル圧縮とフォルダ移動
Compress-Archive -Path C:\folderA\*.* -DestinationPath C:\folderB\$file
2022/05/12(木) 18:00:29.84ID:J4rOXsT5
if やらforやらはBASICからやり直せ
2022/05/12(木) 18:08:53.97ID:3e5cbbRq
>>276
以下のサンプルみたいにForeach-objectとか使ってCompress-Archiveをファイル毎に実行すればいい

$SrcPath = "C:\folderA\*.*"
$DstPath = "C:\folderB\"

Get-ChildItem $SrcPath|
ForEach-Object {$DstFile = Join-Path $DstPath ($_.Name -replace '^(.+)\..+$','$1');$_}|
ForEach-Object {Compress-Archive -LiteralPath $_.FullName -DestinationPath $DstFile}
2022/05/12(木) 18:27:26.96ID:ZUpAZ75N
PowerShellで複数アイテムに同じ処理をする場合は、アイテムをリストアップした出力をパイプでForEach-Objectに渡して
ForEach-Object の中で、一個ずつ($_ という変数で参照できる)処理するのが定番と思うの。

get-childitem | foreach-object { write-output $_.fullname $_.name }

とりあえず、これをやってみると感じが分かると思うの。
280デフォルトの名無しさん
垢版 |
2022/05/12(木) 20:27:03.08ID:QXSbgRzq
>>278
ありがとうございます。
ただ、フォルダAにファイル2つ置いて試してみたのですが、いずれも圧縮・移動されませんでした。。。
再度ご確認いただけますでしょか??
2022/05/12(木) 22:15:13.98ID:3P57KS6y
何だその言い方
お前周りから嫌われてると思うぞ
2022/05/12(木) 23:17:43.20ID:TAn4nFm7
ここは労働の場じゃないからな
金のやり取りを伴ってる仕事とは違うのになんでお客様気分丸出しでいられるんだよ
2022/05/12(木) 23:26:53.76ID:C4APGYH2
誰かが持ち上げてくれるからじゃないの
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")
}
これの意味を考えてみてください。
285276
垢版 |
2022/05/13(金) 00:26:01.86ID:/s7ZcOSV
解決しました!ありがとうございます!
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 }) # 圧縮
2022/05/13(金) 15:56:54.19ID:LpRC3aDE
gciとかの-forceパラメータって必須だろうに
デフォでオフなのがなんだかな
2022/05/13(金) 19:23:39.98ID:Sc/EfT9l
わざわざ隠し属性で隠してるのにディフォで表示しろとか頭おかしい
2022/05/13(金) 22:56:09.66ID:uctr9r2r
foreach中に最後の要素でないって判定どこかでできないですか
これができなくてforに書き直すはめになること何回もあるんですけど…
Foreach-Objectの場合もあったらお願いします
2022/05/13(金) 23:28:29.60ID:dqCr6D+p
原理的に無理だろ...
2022/05/14(土) 00:16:48.73ID:5a0Y4MKv
最後の要素でないってどういう目的で知りたいの?
本当に知りたいときもあるけど慣れてない人が書きがちなコードでもあるので気になった
カンマ区切りにするために最後ならカンマを付けない分岐を書くとかそういうの
2022/05/14(土) 00:17:48.74ID:hb3+ANgg
カウンタを用意してforeach対象のコンテナのlengthと都度比較する
これがモダンプログラミング()
2022/05/14(土) 00:27:25.14ID:hb3+ANgg
>>291
次の処理の前準備を現在の要素も使ってやってて最後だけ不要なとき
$i = 0
foreach ($item in $list) {
 # $itemの処理
 #
 if (++$i -lt $list.length) {
  # 前準備
 }
}
これなら普通にforのが見やすい
2022/05/14(土) 05:45:14.69ID:NJOQ17Ts
そういう最後だけ処理が違うってのは同じように処理しといて後から取り除く方が良くね?
二度手間で美しく無いように思えるけれどそれよりも
一々「最後かどうか」の判別に毎回if挿む方がバカらしく感じる
2022/05/14(土) 05:57:00.05ID:0bRjAEIy
前準備ってなにさ
2022/05/14(土) 06:07:55.24ID:Wt4JCGPH
>>291
> カンマ区切りにするために最後ならカンマを付けない分岐を書くとかそういうの
そう言うのは最初以外はカンマを頭に付けるようにしたほうがいいかと
2022/05/14(土) 08:23:02.72ID:m7B1u9M5
カンマ区切りしたいだけなら $list -join ',' で十分だな
2022/05/14(土) 09:47:46.73ID:R8RMhLQi
そう、joinで済むんだよね
慣れてない人はフラグや分岐で処理しがち
だからまずは具体的にどんな処理をしようとしてるのか聞きたかったんだ
2022/05/14(土) 10:32:45.51ID:kcOGS6gO
カンマの話は>>291が勝手に言ってるだけなのにjoinですむとかあたおかかよw
2022/05/14(土) 11:19:53.60ID:0bRjAEIy
いや分からないから聞いてるのよ
2022/05/14(土) 11:23:04.66ID:etUAy71A
ID変わってるけど291=298な
判定する必要のない例としてカンマ区切りを挙げて、だから具体的な例を教えてくれと書いたのに、カンマ区切りのうまいやり方をレクチャーしてくれる人が出てきたから説明しただけよ
2022/05/14(土) 12:41:49.36ID:HwJxcgzF
>>294
後から取り消せないこともあるだろう
例えばライトワンスメディアに書くとか
2022/05/14(土) 13:05:47.91ID:Ws3jUYfQ
具体的な処理が分からんとどうしようもないだろ
準備じゃなくて、準備のための情報の保存にすることならできるんじゃないか
#itemの準備
#itemの処理
#次のitemの準備のための設定
として実際の準備は次のループの先頭で行うようにする
2022/05/14(土) 13:37:46.90ID:hb3+ANgg
はあ…やっぱり論点ズラしで無いことを正当化する流れになったかw
無いなら無いでいいよ
2022/05/14(土) 13:39:58.87ID:HwJxcgzF
>>289
最初、最後、何番目などには別処理をする場合は、foreachは向いてないというか
もともと for があって、何番目かを気にせず全部の要素に同じ処理をすることが多いので、そういう場合用に foreach があると思ってます
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況