X



PowerShell -Part 4
■ このスレッドは過去ログ倉庫に格納されています
0002デフォルトの名無しさん
垢版 |
2020/01/01(水) 18:34:35.19ID:dhZuPVlL
すみません教えてください。テキストファイル内の当日の日付を検索したいんですが
patternに変数を使うにはどうすればいいんでしょうか?↓だと検索がヒットしません

$today = Get-Date -Format "yyyyMMdd"
Select-String -path c:\a.txt -pattern $today
0003デフォルトの名無しさん
垢版 |
2020/01/01(水) 20:08:13.94ID:kGjhqYZD
怒らないで教えて欲しいんだが

WSLでよくね?
0005デフォルトの名無しさん
垢版 |
2020/01/01(水) 20:48:49.03ID:MALUlSLD
$today に適当な文字列を代入して、sls しても出来る!
一応、パス区切りが\ の場合は、クォートした方が間違いない

たぶん、そのファイルが存在しないか、エラーが起きているのかも。
それか、文字コードが異なるとか?

$today = "file"
echo $today

Select-String -path c:\Users\Owner\Documents\a.txt -pattern $today
Select-String -path "C:/Users/Owner/Documents/a.txt" -pattern $today

漏れは、UTF-8 を、WSL で、grep してる
00062
垢版 |
2020/01/01(水) 21:05:16.52ID:dhZuPVlL
ごめんなさい。凄い勘違いをしてた・・・。
今日は1月2日だと思い込んでて、テキストファイル内には20200102という文字列しかなくて
Get-Dateで今日の日付で検索してもヒットしない訳だ・・・。
Select-String -patternには変数が問題なく使えることが確認できました。お騒がせして申し訳ない
0008デフォルトの名無しさん
垢版 |
2020/01/01(水) 23:40:11.34ID:MALUlSLD
WSL なら、これでフォルダ内のすべてのファイルから検索できる。
grep -i '文字列' ./*

Windows 側のフォルダに、alias も貼っているから、カレントフォルダの移動も簡単

shopt -s expand_aliases

alias windoc='cd /mnt/c/Users/Owner/Documents'
0009デフォルトの名無しさん
垢版 |
2020/01/02(木) 00:33:51.58ID:Qw2T8cPg
コーディングとは直接関係ないのですが、
WMF をわざわざインストールせず、WindowsUpdate のみ適用し続けた Windows7 の場合、
Windows PowerShell のバージョンって 2.0 のままでしょうか?

試せる環境が手元に無くて…。ググっても分かりませんでした。
よろしくお願いします。
0011デフォルトの名無しさん
垢版 |
2020/01/02(木) 09:32:26.45ID:m85p0XAo
>>5
>>8
やっぱりbashの方が優秀なんだな、、
Powershellてアホやろ
0015デフォルトの名無しさん
垢版 |
2020/01/02(木) 14:58:28.80ID:80VOHiHM
poewrshellはcmd内蔵にはあったバイナリのコピーが簡単にできなかったり色々半端だよね
0018デフォルトの名無しさん
垢版 |
2020/01/02(木) 17:02:09.06ID:SnzEOw/h
Copy-Itemがrobocopyレベルに作り込まれていたらcmdに置き換わっていただろうね
革新性面白さに主眼が置かれて運用をきっちりこなす為の地味な部分は蔑ろにされた
0022デフォルトの名無しさん
垢版 |
2020/01/02(木) 18:19:47.57ID:d4KLeRXS
魚を下ろすなら出刃包丁、鉛筆を削るならカッターナイフ。一つだけに限定する必要はない。
スクリプティング環境も同じ。WSL でも PowerShell でも、適材適所で選べばいいだけだろ。

俺の場合は WSL ではなく Cygwin と PowerShel を併用してるけど。
0023デフォルトの名無しさん
垢版 |
2020/01/02(木) 18:26:02.49ID:diWefbzT
>>22
パワー汁
0024デフォルトの名無しさん
垢版 |
2020/01/02(木) 19:34:13.71ID:LqVuN/CI
>>18
robocopyレベルの機能が欲しいなら欲しい機能をPowerShellで実装すればいいだけだろ
出来合いのものが欲しい人が見るスレじゃないよ?
0026デフォルトの名無しさん
垢版 |
2020/01/02(木) 21:32:35.62ID:ShHqIFTQ
漏れは、スクリプトを下のように、Ruby で書く

powershell は、そのスクリプト内で、コマンドを呼び出す程度にしか使わない。
長いコードでは圧倒的に、Rubyの方が可読性が高い

# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
0030デフォルトの名無しさん
垢版 |
2020/01/03(金) 09:33:21.20ID:3Uhjf7eS
PowershellはWPFと同様に
こんなことできちゃう俺ってすごい?
って承認要求を満たす為のツール
0031デフォルトの名無しさん
垢版 |
2020/01/03(金) 10:07:45.44ID:fRk42gOq
こんな低い程度で承認欲求満たせるなんて
さぞかし安っぽく薄っぺらな人生を歩んで来たんだろうね
君のような知恵遅れクンが羨ましい限りだよ
0033デフォルトの名無しさん
垢版 |
2020/01/03(金) 14:14:41.25ID:wJkHBgCK
>>18
>Copy-Itemがrobocopyレベルに作り込まれていたらcmdに置き換わっていただろうね

見当違いだよ
あんたがrobocopy相当でないことに不満を持っているのは分かったが、世の中が同じ不満を持っていると勝手に決めつけてもしょうがない
自己と他者の境界を混同する癖があると生き辛さの原因になるぞ

Powershellもcmdもシェルなんだから、どっちからでもrobocopyを呼べばいい
変な固執がなければそれで解決

そもそもPowershellが完璧に作り込まれていたとしてもcmdは置き換わってない
長年のデファクトスタンダードとして居座ったシェルスクリプトを書き直す人はほとんどいないし、そこで覚えた知識を必要に迫られてもいないのにアップデートする人もいない
Powershellへの移行は強制されない限り極めて緩慢にしか進まないんだ
0034デフォルトの名無しさん
垢版 |
2020/01/03(金) 14:18:05.13ID:E2rkGUYG
>>30
いや普通にぱぱっと学んで普通に道具として使うだろ
どんだけ頭わるいのかコンプレックス丸出し
0035デフォルトの名無しさん
垢版 |
2020/01/03(金) 14:34:10.57ID:/oC1Ys4Z
PowerShell使いよりUNIXシェル使いのほうが凄い
同じコマンドなのに仕様が全然違うのを我慢できるんだぜww
0036デフォルトの名無しさん
垢版 |
2020/01/03(金) 14:51:58.50ID:E2rkGUYG
ごめんな
シェルを使うのに凄いとか凄くないとかちょっと俺には理解できない
チンパンジーが箸を使うとすごいとかそういうレベルの話なのかな
0038デフォルトの名無しさん
垢版 |
2020/01/03(金) 21:26:42.13ID:LoHkYQxe
WSLは手間が掛かりすぎてNG
・「入れとけ」というが、ユーザー毎にいちいち手動で入れさせる手間が掛かる。しかも厄介なストア配布形態
・一番使いたいはずのログインスクリプト等に使えない
全く話にならない
0039デフォルトの名無しさん
垢版 |
2020/01/03(金) 22:06:06.23ID:ZgWtqjsT
過去の遺産があるならWSLでもいいけど、どちらでも使えて新規で組むならPowerShellだな
0041デフォルトの名無しさん
垢版 |
2020/01/04(土) 02:12:51.07ID:aSKFbY9r
>>40
bashかパワーシェル(爆笑)で比較しませんか、ドザさんwww
0042デフォルトの名無しさん
垢版 |
2020/01/04(土) 02:52:56.44ID:eFXyJY/2
今日日こんなのでマウント取ろうとする化石がいるとは
もう令和だぞおっさん
0045デフォルトの名無しさん
垢版 |
2020/01/04(土) 10:38:35.92ID:uBZCVRc/
>>44
あなたノンプログラマの人?w
0047デフォルトの名無しさん
垢版 |
2020/01/04(土) 14:44:48.90ID:fYLLjFYo
前提条件(要件)の提示もなく優劣を論じちゃうのって、典型的な「自称パワーユーザ」だな
0052デフォルトの名無しさん
垢版 |
2020/01/05(日) 08:35:56.46ID:8wcedpaS
その「おバカ」とやらに使ってもらおうって気がないから
いつまでたってもLinuxデスクトップは普及しないんだよ
0054デフォルトの名無しさん
垢版 |
2020/01/05(日) 14:43:55.52ID:ZEXd5sZ7
それはシェアをあきらめるって事だと分かってて言うならそれでもいいんだけどね
0057デフォルトの名無しさん
垢版 |
2020/01/06(月) 21:40:32.90ID:ID1ddVMh
>>50
> いろいろな *[!c]sh 実装のキライなところ
UNIX系シェルは古くからあるから色々意見があっていいけど、嫌いなとこ言うだけってのは馬鹿。
> まだBashで消耗してるの?
読んだけど2年前のスライド&スライド発表者が馬鹿過ぎる。
現在のTwitterアカウントを見たけど「進歩がない…」の一言。
makeのアルゴリズムを紹介するよ!的なことやってて…大丈夫かこいつ…いやはやく(周りが)何とかしないと駄目だろ…。
ていうか >>48 の記事の筆者か…。
生きてて楽しいのかこいつ…。
0058デフォルトの名無しさん
垢版 |
2020/01/07(火) 08:15:41.91ID:5fudPZU/
>>57
> 読んだけど2年前のスライド&スライド発表者が馬鹿過ぎる。
> 現在のTwitterアカウントを見たけど「進歩がない…」の一言。

スレチな話題を延々と繰り返すバカよりは256倍マシだと思うよ
0059デフォルトの名無しさん
垢版 |
2020/01/07(火) 08:38:58.32ID:Ks+JfxYO
>>57
> 嫌いなとこ言うだけってのは馬鹿
> 生きてて楽しいのかこいつ…

ここでPowerShell叩きだけやってるやつそのものじゃん
0060デフォルトの名無しさん
垢版 |
2020/01/10(金) 01:58:55.42ID:orNiqaoM
ところでWSLを入れて
Windows10の制御はどういう風にやるんだろ?
0061デフォルトの名無しさん
垢版 |
2020/01/10(金) 02:00:24.71ID:orNiqaoM
そもそもUNIXからの流れって
スクリプトがないと何もできなかった
というだけだよね。
0063デフォルトの名無しさん
垢版 |
2020/01/10(金) 12:28:21.35ID:vcBIqSBB
>>62
たいして設定項目ないからcomfig.sysとかを直接編集してただろ
ちなみに同時期のunixも似たようなもんだった
スクリプトで設定するようになったのはだいぶ後だったように思う
0064デフォルトの名無しさん
垢版 |
2020/01/10(金) 14:42:27.33ID:IxDycp4w
>>63
> だいぶ後だったように思う

80年代からマイコンを使ってた世代からすれば、確かに「だいぶ後」ですねw
0065デフォルトの名無しさん
垢版 |
2020/01/10(金) 18:17:26.14ID:PkgwRlbI
Windows10, WSL, Ubuntu(Linux)側から、

Wondows側のC ドライブへのアクセスは、
/mnt/c/Users/ユーザー名/Documents/〜

漏れは、いつも、WSL側から、Windows側をgrep してる。
なぜなら、Windowsでは、CP932 と、BOM 無しUTF-8 を区別できないから

BOMが付いていれば区別できるけど、
普通、ウェブ系開発ではバグるので、BOMを付けない
0067デフォルトの名無しさん
垢版 |
2020/01/12(日) 03:08:17.75ID:gh55rPFY
Lnuxユーザは大変やね
Winodowsユーザは、そんな面倒なことはしないわな
それなりのツールつかうから
0068デフォルトの名無しさん
垢版 |
2020/01/12(日) 03:10:21.78ID:gh55rPFY
要はLinuxなどの場合は、近頃はいいだろうが
そういうことのためのツールが用意されていないんで
スクリプトに頼るしかなかったということなんだろうな
0070デフォルトの名無しさん
垢版 |
2020/01/12(日) 04:22:58.37ID:Uj5X0q1W
設定ファイルがスクリプトということに何も疑問を持たなかったんだろかと思うことはある。
0072デフォルトの名無しさん
垢版 |
2020/01/12(日) 09:20:24.49ID:Uj5X0q1W
Linux板は荒らししかいないし、末期のウェブ板やPHP板みたいになってる。
まともな住人はここに移住してきても良いよね?
ウェブ板やPHP板も移住してるんだし。
0073デフォルトの名無しさん
垢版 |
2020/01/12(日) 09:21:14.45ID:Uj5X0q1W
Linux板は志賀何とかさんのことを語る板になってしまった。
0074デフォルトの名無しさん
垢版 |
2020/01/12(日) 10:59:33.84ID:FbSdnFnB
まさかとは思うがツールというのはGUIのことだろうか
PowerShellスレでCUIよりもGUIが無条件に優れているという話をしているのだろうか

スレチを自己正当化する理由が、然るべきスレが機能不全を起こしてるから行きたくないと?
しつこいスレチがここに機能不全を招くとは思わないのだろうか

前スレに続いての「WSLでよくね」なんて明らかに反応を楽しむ愉快犯なのに、まんまとLinuxのほうが残念だもん!って
いいかげん落ち着いてくれよ
0076デフォルトの名無しさん
垢版 |
2020/01/12(日) 19:02:16.18ID:Uj5X0q1W
bash最高って書いてあるけど。
0077デフォルトの名無しさん
垢版 |
2020/01/12(日) 21:27:38.66ID:gh55rPFY
>>74
>まさかとは思うがツールというのはGUIのことだろうか

なわけないよ。
要は今は良くなってきているが
シェル言語なないと処理できないようなのがUnix系の世界
だったということ
ほかにろくなものないから
0078デフォルトの名無しさん
垢版 |
2020/01/12(日) 22:41:27.46ID:gh55rPFY
ま、そりゃいいか。
PowerShellを語る板だから
ごめん。
PowerShellの話に戻します。
0081デフォルトの名無しさん
垢版 |
2020/01/28(火) 00:59:10.36ID:b7mfcqCA
刻々と変化する変数をフォームに表示させたいんだけど
当然この例だと実行した時点での変数しか表示されません。
フォームのラベルの変数を動的に表示し続ける方法を教えてください(この例だと時計のように動かしたい)

$time = Get-Date
Add-Type -AssemblyName System.Windows.Forms
$form = New-Object System.Windows.Forms.Form
$label = New-Object System.Windows.Forms.Label
$label.Text = $time
$form.Controls.Add($label)
$form.ShowDialog()
0083デフォルトの名無しさん
垢版 |
2020/01/28(火) 05:27:11.17ID:gua2EZr0
正確な時間じゃなくても良いなら、Ruby なら、sleep で簡単にできる。
ただし、OS がバッファリングしてると、最後にまとめて出力されてしまう!

STDOUT.sync = true # バッファリングしない

3.times do
puts Time.now
sleep 3
end
0085デフォルトの名無しさん
垢版 |
2020/01/28(火) 19:45:19.95ID:xyAuIeAM
>>81
別スレッドで非同期にフォームを起動すればいい

using namespace System.Windows.Forms
using assembly System.Windows.Forms

$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
$form = [Form]@{ Size = "350,100" }
$form.Controls.Add($label)

$runspace = [RunspaceFactory]::CreateRunspace()
$runspace.Open()
$pipeline = $runspace.CreatePipeline()
$pipeline.Commands.AddScript({ param ($form) $form.ShowDialog() })
$pipeline.Commands[0].Parameters.Add("form", $form)
$pipeline.InvokeAsync()

foreach ($p in 1..10) {
  if ($Runspace.RunspaceAvailability -ne "Busy") { break }
  $time = [datetime]::Now
  $label.Text = $time
  sleep 1
}

if ($Runspace.RunspaceAvailability -eq "Busy") { $form.Close() }
$runspace.Dispose()
0088デフォルトの名無しさん
垢版 |
2020/02/01(土) 10:30:55.09ID:escHc8OK
PowerShel で凝ったことやろうとすると、どうしても C# の知識が必要になるよな。
おかげで、C# を勉強する良いきっかけになったわ。スキルの幅が広がるのは嬉しい。
0091デフォルトの名無しさん
垢版 |
2020/02/01(土) 22:22:36.87ID:QN2fVxGF
$label = [Label]@{ Dock = "Fill"; Font = "Meiryo,20" }
という式を初めて見て驚いてるんだけど、これについてのドキュメントってどこかにありますか?
0093デフォルトの名無しさん
垢版 |
2020/02/02(日) 11:46:03.71ID:9GpNdTap
>>92
ありがとう
だいぶ楽になった

こういうの知ってる人ってMSDNのヘルプに全部目を通してるの?
0094デフォルトの名無しさん
垢版 |
2020/02/04(火) 17:22:37.51ID:Rq+qX9o+
オブジェクト志向ライクでいいんだけど、
powershellへbatやVBSから置き換えようとすると機能によってはバージョンチェックをしないといけないのがもどかしい
.NETにしろそうなんだけどね
0095デフォルトの名無しさん
垢版 |
2020/02/04(火) 20:42:27.29ID:uL6VAIkG
ご教示ください。
商品の価格を定期的にWebサイトから取得したいのですが、Invoke-WebRequestで取得したHtmlWebResponseObjectから要素の内の文字列を取り出そうとすると「Windows セキュリティの警告」のポップアップが表示されてしまいます。
ポップアップを出さずに要素の内の文字列を取得するにはどうすればよいでしょうか?

$response = Invoke-WebRequest -uri "https://www.yodobashi.com/product/100000001002955686/";
$price = $response.ParsedHtml.getElementById("js_scl_unitPrice").innerText

これを実行すると「この Web サイトから個人用の情報を提供できるように、Cookie と呼ばれる小さなファイルをこのコンピューターに配置できるようにしますか?」と表示されます。
0097デフォルトの名無しさん
垢版 |
2020/02/04(火) 22:40:04.72ID:tW1M7Be/
cookie powershellでぐぐればやり方は出てくる
javascriptとか出てきたら素直にseleniumを使う
seleniumをpowershellで使う方法もある
■ このスレッドは過去ログ倉庫に格納されています

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