PowerShell -Part 7

1デフォルトの名無しさん
垢版 |
2023/11/29(水) 16:07:49.46ID:0g8RZ7sB
前スレ
PowerShell -Part 6
https://mevius.5ch.net/test/read.cgi/tech/1644744972/

次スレは>>980が立ててね!!
2024/06/23(日) 13:37:48.52ID:ermJYjK6
webアプリのテキスト入力部分にpowershellスクリプトで自動的に文字入力をしています
しかし動作させるタイミングによってIMEが日本語入力になっていたり直接入力になっていたりしています
「無変換」キーに「IMEオフ」を割り当てて文字入力の前にpowershellで自動的に無変換キーを押下させましたが当方の環境では何故か期待通りの結果にならず、やむなくタスクバートレイのIMEアイコンを右クリック(メニュー表示)→「直接入力」左クリックをpowershellで自動でやって実現しています
しかしこの方法はスマートじゃないです
powershellで他のアプリに入力中のIMEの設定を「直接入力」モードにスマートに切り替える方法があれば教えてください
2024/06/23(日) 13:50:30.91ID:e+eCK7bX
望んでいる答えではないと思うがWebアプリなら素直にブラウザのプラグインでJavaScriptを動かす方法を一度覚えておいたほうが幸せになれると思う
安定性も増すしやれることの幅もかなり広がる
230デフォルトの名無しさん
垢版 |
2024/06/23(日) 13:52:52.91ID:eptuMF0K
>>227
ぷっ
バグがあったら動かないのは当然
231デフォルトの名無しさん
垢版 |
2024/06/23(日) 14:57:30.86ID:nCpb5rpZ
>>228
WindowsFormsあたり使えばできるんじゃないの?と思ってCopilotに聞いてみた

Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;

public class ImeControl {
[DllImport("user32.dll")]
public static extern IntPtr GetForegroundWindow();

[DllImport("user32.dll")]
public static extern int ImmAssociateContext(IntPtr hWnd, IntPtr hIMC);

public static void DisableImeMode() {
IntPtr hWnd = GetForegroundWindow();
ImmAssociateContext(hWnd, IntPtr.Zero);
}
}
"@

思ってたんと違った
2024/06/23(日) 17:48:41.99ID:ermJYjK6
>>231
有難うございます
一回り難しそうですが、試しながら参考にさせて頂きます
2024/06/23(日) 18:39:00.79ID:QkuO1K/N
肝心のアレが入ってないからまともに動かなそう
AIをもっと虐めないとだよ
234デフォルトの名無しさん
垢版 |
2024/06/23(日) 23:34:40.87ID:iAmtDmVE
>>230
バグじゃなくて、互換性の問題。
古いのC#の文法を使えば良いとは言え、あんまり逆行したかったん。
235デフォルトの名無しさん
垢版 |
2024/06/23(日) 23:46:54.32ID:iAmtDmVE
xあんまり逆行したかったん。
oあんまり逆行したくなかったん。
236デフォルトの名無しさん
垢版 |
2024/06/24(月) 00:41:48.16ID:sso3G8sO
>>221
使えます。
237デフォルトの名無しさん
垢版 |
2024/06/26(水) 17:27:29.44ID:qsKWsaPH
地味にハマったからPowerShell7.5PrevewでC#コード実行の注意点書きこ。

・$Argが$argsに。(ここまではいい)

・$argsに格納されるコマンド引数がカレントディレクトリではなく、「PowerShellを起動したディレクトリ」になっている。
(なので、初期はPowerShellの本体があるフォルダー。しかもcdでカレントディレクトリ変えても、コマンド引数のディレクトリは変化しない)

解決策
(hoge.ps1は$argsを使っているスクリプト)

pwsh hoge.ps1 arg1 arg2

の様にPowerShellを起動してからスクリプトを実行すると、コマンド引数のディレクトリも(そのシェルを起動した時点の)カレントディレクトリに変わる。

238デフォルトの名無しさん
垢版 |
2024/06/26(水) 17:31:44.50ID:qsKWsaPH
あ、C#はPowerShell7.5で $"{}"(文字列補間式)使えるようになった\(^_^)/
2024/06/28(金) 09:33:29.65ID:bVzHKq+e
過去に作られたスクリプトなのですが、
$script=(New-Object System.Net.WebClient).DownloadString("https://○○/dir/file1.js")
として別Webサーバからスクリプトを毎回ダウンロードしていたのですが、
そのWebサーバが廃止されるということで、
そのfile1.jsをPCにダウンロードして、それを毎回読み込ませるようにしたいです

$script=Get-Content .\file1.js
としてみましたが、ファイルは読み込めているようですが、
その後の処理でうまく動作しません

何か方法ありますでしょうか
2024/06/28(金) 21:59:51.65ID:1ppaObvA
file1.jsのエンコーディングはどうなってるの?
2024/06/28(金) 23:09:31.36ID:YK96fiDO
>>237
説明が分かりにくい。
たぶん昔からよく混乱の元になってる
$PWD(*-Location)のカレントディレクトリと
[Environment]::CurrentDirectoryのカレントディレクトリの
両方を意識しないといけない問題について調べたらいいと思うよ。
>>239
DownloadString()の戻り値の型は[string]で
Get-Contentは大抵[Object[]]だから型の違いで動作変わってんじゃないの。
Get-Content -Rawにしてみたらどう?
2024/06/29(土) 12:31:22.88ID:AKI9JxZ5
カレントディレクトリという甘えた幻想は捨てろ
2024/07/07(日) 11:58:14.30ID:L0BIfwX5
カレンちゃんとディレクトリしたい
2024/07/07(日) 13:02:55.78ID:LfIamK5n
Get-Item カレンデバイス
2024/07/07(日) 22:31:52.21ID:gAixcUjS
カレンちゃんって誰だよ競走馬じゃないんだぞ
2024/07/08(月) 19:41:40.15ID:f8BMTbPy
きんモザ
2024/07/18(木) 01:02:53.21ID:X/v3DPD5
windows10から11に変えたらwindows10ではちゃんと動いていたスクリプトが動作しなくなりました。
ショートカットに「powershell -file スクリプトのフルパス」と書いて目的のファイルをD&Dして使用しています。
ISEからだと一応動作して「引数が足りません」になるんですが、ショートカットからでは一瞬ウインドウが開くだけで何も起きません。
-NoExitをつけてもウインドウが閉じてしまいます。閉じるのが早すぎて正確にはわかりませんがウインドウには何も表示されていないようです。
「consolehost_history.txt」がログのようなので見てみたんですが、何も実行されていないようです。
管理者権限でpowershellを起動してから「スクリプトのフルパス "引数になるファイルのフルパス"」では正常に動作しました。
powershell.exeを右クリックで管理者権限で実行にチェックを入れても動作せず。
windows11になってからpowershellのショートカットを作る方法に変化があったのでしょうか?
248デフォルトの名無しさん
垢版 |
2024/07/18(木) 01:29:27.44ID:T4qee4Qo
>>247
多分まさに>237に書いてる仕様変更の影響かと。
2024/07/18(木) 12:34:31.99ID:X/v3DPD5
>>248
ありがとうございます。 「pwsh -file スクリプトのフルパス」と書き換えたら起動できたんですが、今度は別のところでwindows10では起きなかったエラーが出てしまいました。
$cmfiletxt = Get-ChildItem -Path "$cmtemp" -Recurse -Depth 1 -Filter "$trimfile"
と書いてある行で、
Second path fragment must not be a drive or UNC name. (Parameter 'expression')
というエラーが出ます。
"$trimfile"の中身は例えば「R:\TEMP\cmtmp\amt9996774\アニメA・ダークギャザリング #1「寶月夜宵」 2023-07-10.m2v.txt」です。
windows10では正常に動作していました。
「amt9996774」の所は連携しているソフトがランダムで自動生成するのでこちらからいじることはできません。
どう修正すればいいでしょうか。
2024/07/18(木) 12:46:56.92ID:2XOaIs3w
>>249
変数名が $cmtemp になってるけど、その中身の文字列は e抜きの \cmtmp\ を含むパスなの?
2024/07/18(木) 13:09:10.50ID:X/v3DPD5
>>250
そうです。最初にパスを設定する部分を設けています。
$cmtemp = "R:\TEMP\cmtmp"
252デフォルトの名無しさん
垢版 |
2024/07/18(木) 13:13:45.35ID:g0scKYj2
>>249
ダブルコーテーションで括ってるからじゃね
2024/07/18(木) 14:22:52.00ID:eHTBk2KG
-Filterにパスを指定しちゃだめ、っていうエラーメッセージ。
ファイル名部分を指定するんだよ。(ワイルドカード)
でもWin10でもエラーになると思うんだけどな。
254デフォルトの名無しさん
垢版 |
2024/07/18(木) 14:29:18.66ID:g0scKYj2
>>252
補足
変数をダブルクォーテーションで囲むと
変数の式が展開されてから渡される
変数の中身がファイル名でスペースを含んでたりすると誤動作する
変数に入ってるんだからそのまま変数で渡せばいい
ファイル名がスペースを含んでいても大丈夫

こんな感じだと思う
255247
垢版 |
2024/07/18(木) 18:19:03.04ID:X/v3DPD5
ありがとうございます。結局$trimfileの中身をフルパスではなくファイル名のみにするようにしたら処理完了しました。
…本当にwindows10ではこれで動いていたんですけどね…?
ただし別の問題が発生しています。あらかじめ作業フォルダを指定してその下にサブフォルダを生成、そこに処理したファイルを展開するようにしてるんですが、
指定した作業フォルダ(日本語)が文字化けしており、文字化けした作業フォルダを改めて作成してさらにその下にサブフォルダを作るようになってしまいました。
write-hostで表示する日本語も同様に文字化けしており、サブフォルダの名前は正常なのでスクリプト自体の問題ではないと思います。
powershellのタイトルバーを右クリック→設定→左のアイコンからpowershellを選択→外観→フォントフェイスをMSゴシックに変更、では解決しませんでした。
2024/07/18(木) 18:48:37.59ID:2XOaIs3w
>>255
コンソール側の文字コードの問題だと思うよ
レジストリにCodePageを設定すれば解決するはず(「65001」で検索)
2024/07/18(木) 19:04:19.79ID:eHTBk2KG
pwshが動く時点で普通のwin11じゃない気がする。pwshは一部の物好きな上級者用じゃない?(もうwin11のデフォルトになった?)
pwshのままだと今後も色々問題出るよ。自己解決していける自信がないなら総合的にはwin11の再インストールが手っ取り早いと思う。
2024/07/18(木) 20:08:19.40ID:7Xw39CjT
powershellが動かなかった理由ってOS変えたからデフォルトのExecutionPolicyの問題で弾かれてただけじゃないの
pwshについては設定変更済みで通ったと
そしてv5向けのスクリプトをそのままv7で動かしたから細かい非互換の問題が出たと
259247
垢版 |
2024/07/18(木) 20:55:47.23ID:X/v3DPD5
>>256
やってみましたが結果変わらずです。

>>258
当初ISE経由でも弾かれたのでBypassに変更済みです。

>>257
powershellのバージョンの問題かと思ってMicrosoftStoreからver7をインストールしました。
試しに7をアンインストールして.5.1が強制的に動くようにしてみたんですが、挙動は振り出しに戻っちゃいました。
互換性の問題で言うとAutoHotkeyもうまくショートカットを発行できないソフトが出てきていますね…。
再セットアップで解決するもんでしょうか。
2024/07/18(木) 21:35:09.26ID:eHTBk2KG
pwshを入れたのは後退なので、スタート地点に立てたくらいに思えば。

1. ショートカットのあるディレクトリにで右クリック→ターミナルで開く
2. ショートカット(lnk)を開く

でウインドウが閉じずにエラーメッセージを確認できると思う
261247
垢版 |
2024/07/18(木) 22:55:07.91ID:X/v3DPD5
>>260
出てきたエラーをコピーしようとしたらNGワードに引っかかったみたいなので要約すると、
・名前が正しく記述されていることを確認しろ、パスを確認しろ
・ コマンドは見つかりませんでしたが、
現在の場所に存在します。Windows PowerShell は、既定では、現在の場所からコマンドを読み込みません。
このコマンドを信頼する場合は、".\(ファイル名)" と入力してください。

言われた通りに.入力したら「引数がないため処理を終了します。」となり、一応正常に終了しました。
2024/07/18(木) 23:26:42.40ID:gkVcHWUr
恐らく11から強制的に使わされてるターミナルが悪いんだろうな
MSストアで入るアプリは総じてゴミだから今すぐ使用中止しろ
ttps://qiita.com/dokimiki/items/f1075003cb37f1b542a8
263247
垢版 |
2024/07/18(木) 23:57:38.19ID:X/v3DPD5
>>262
リンク先を試してから、powershellを開いてから実行する方法では修正前のスクリプトで文字化けもせず正常に終了しました。
しかしショートカットのD&Dする方法では変わらず一瞬でウインドウが閉じました。
264デフォルトの名無しさん
垢版 |
2024/07/19(金) 11:00:27.12ID:70UaCPmY
>>263
powershellのスクリプトの最後に pause でも追加しておけばいいんじゃね
265247
垢版 |
2024/07/19(金) 12:40:24.75ID:ct1DQagX
あの…、なんか寝て起きて試したら動きました…。
昨日からマジで何も変えてない…。せいぜいUSB-DACのドライバ当てたくらい?
とりあえずこのまま様子見ます…。色々とありがとうございました。
2024/07/19(金) 15:14:54.49ID:jwlCgmdc
今のターミナルで困ることって何だろう
--headlessが使えないことくらい?
conhostより重いって意見はあるかもしれないけど.NETと比べれば誤差みたいなものだし
2024/07/21(日) 22:11:17.98ID:m0XhNdSd
Windows terminalは普通に優秀だと思うけど
2024/07/21(日) 23:51:02.31ID:vKWhifz8
無変換キーを押すと@が書き込まれること以外は完璧
2024/07/22(月) 09:11:09.38ID:C7pnRrY6
cmdと動作が異なる意味では欠陥
最初にppwershellをコンソールアプリで公開したのは失策
WSH使いからは失笑
2024/07/22(月) 13:17:32.45ID:PeYRIg1J
コンソールホストとシェルの区別がついてないお🐴🫎さんかな
2024/07/27(土) 12:32:42.70ID:+W8EF3Nh
ISEって2019年末時点でオプション機能化とか終息に向かうとか言われてたみたいだけど現行Windows11にも普通にプリインストールされてるよな
終息する話は延期になったんだろうか
まぁ弊社みたいなインストール手続きがクッソ面倒なところでは助かるんですが…
2024/07/27(土) 12:49:12.36ID:KGtSZjqO
収束するには代わりにVSCodeをプリインストールするようにしてくれないと
2024/07/27(土) 15:16:22.47ID:7uwMSqss
削除予定はないよ
今後の機能追加がないだけ

プリインストールしたらしたで欧米人がMS訴えるじゃん?
エディタはどうぞお好きなものをお使いください
未だにVSCodeすらインストール許可が出ない会社ならそこの組織の問題
淘汰されるまでそうしていればいい
客先のサーバーで作業中のエンジニアならスクリプトは事前準備したものだけ使うか一旦課題を持ち帰れ
2024/07/28(日) 21:35:37.31ID:cLn1FmEd
ISEの優位性って何?使ったことないけどvscodeにできないことができたりする?
2024/07/29(月) 07:56:32.32ID:4FIXkUHw
プリインストールされていること
276デフォルトの名無しさん
垢版 |
2024/07/30(火) 00:37:00.12ID:CUjc7QCy
hogehoge.txtの重複するレコードを
powershell -command "get-content hogehoge.txt | sort-object | get-unique | write-host"
みたいにして取り除いています。
重複除去の前に外部コマンドによる処理を追加したくなり、まずファイルからではなく標準入力から読み込んだデータの重複除去に取り組んでいますが上手く行きません。
当初get-contentをread-hostに置き換えればうまく行くかと思いましたがダメでした。
type hogehoge.txt | powershell -command "read-host | sort-object | get-unique | write-host"
考えてみればそれも当然で、いったん標準入力を丸呑みにして溜め込んでおかないとsortもuniqもできないですよね。
MSのサイトで配列に溜め込んでいくみたいな用途に使えそうな命令を探しましたが見あたりませんでした。
なんか解決法ないでしょうか?

あとついでに聞いちゃうんですけどunixのコマンド(wcとかcatとか)をその言語で書き直すみたいな本のpowershell版ってないもんですかね。
2024/07/30(火) 01:55:59.46ID:0EE76/Sc
Out-String -Stream
2024/07/30(火) 11:15:11.79ID:jBvTVZZ/
無理にワンライナーやパイプラインで繋げて書かずに
スクリプトファイルを作ってそれを呼び出す方が柔軟性があって整理もできて使いやすい
2024/07/30(火) 12:15:40.81ID:tWSTSpQm
無理にでもワンライナーやパイプラインで繋げて書くのがPowershellの醍醐味
2024/07/30(火) 12:48:31.64ID:jBvTVZZ/
>>276 みたいに困ったときはスクリプトファイルで
制御構文やら変数やらクラスやら使った方が
色々試し易くて色々整理できていいじゃん
2024/07/30(火) 21:02:35.18ID:EaRTEGq5
[Console]::In.ReadToEnd() -replace '\r?\n$' -split '\r?\n'

その外部コマンドによる処理もPowerShell内でやればいい気がする
282281
垢版 |
2024/08/01(木) 18:57:02.91ID:nKkP9XuY
そういえばと思って試したら$inputでいけたわ。なんで忘れてたんだろ
2024/08/02(金) 09:11:09.42ID:gKkfhLC1
>>276
Ruby で作ってみた

input_str = "5\n11\n33\n9\n0\n9\n11\n"

# 末尾の改行を削除してから、数値型に変換する。
# 重複を排除し、ソートする
input_ary = input_str.each_line.lazy.map do |line|
line.chomp!
line.to_i
end.uniq.force.sort

p input_ary
#=> [0, 5, 9, 11, 33]
2024/08/02(金) 21:54:58.24ID:l/+AFQUJ
Rubyの人来るの遅いぞもう飽きたのか?ww
2024/08/02(金) 21:57:08.30ID:4wv1Q78q
過疎過疎5ちゃんなんかよりツイッタランドで凸でもすれば
2024/09/27(金) 16:52:34.25ID:Qq+DEfW6
新しい Windows11マシンに pwshをインストールして
以前から使ってるファイルを そのままコピーしたら…何故だか起動時設定を読み込んでくれない

…と思って 調べたら

$PROFILE が
以前からのPCでは
C:\Users\(私のユーザー名)\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

に対して、新しいのでは
C:\Users\(私のユーザー名)\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

profileを置くディレクトリが違ってたということ.
pwshのバージョンは どちらも最新(同じ)なのに

…なのですが、特に どちらかで $PROFILEを設定するようなことは していない.
環境変数なども特に設定していないし
Program Files/7 直下には profile的なものは 置いていない
…でもどこかで指定しているのを自分で忘れたんだろうか?
複数マシンを管理するにあたって 面倒なので…とりあえず原因になりうるものを知りたいのです
2024/09/27(金) 18:13:57.62ID:J4fT6PqJ
>286
最新のWindowsにも入ってる「古いpowershell」が原因っぽい. 新しいのを入れても残ってるので そういうことはある
2024/09/27(金) 18:54:54.18ID:dRTmSCrE
>>286
デフォルトの$profileのパス設定が異なるマシンがあってその原因が知りたい、ってことなのかな?
ちなみに、新しいマシン側の$profileは5.x系(いわゆるWindows PowerShell)のデフォルトパスと一致してる
2024/09/28(土) 00:24:19.73ID:xELx2i6V
ExecutionPolicyがRestrictedのままでProfileがロードされないとか?
290デフォルトの名無しさん
垢版 |
2024/09/30(月) 10:14:56.15ID:OEXqADpi
286です すいません、自分の混乱の原因がわかりました。
新しいWindows11のマシンにも5.x系は入っていて、7.xのpwshをインストールしてもそれは残る.
そして、私は タスクバーに「ピン留め」して起動するのですが、pwshを起動した状態でピン留めしても いったん終了させてからアイコンをつつくと 5.x系が起動してしまう…というところに 気がついていなかったというわけです. ピン留めしたのは たしかに7系だったのに. なんだか納得いかない感じ
2024/09/30(月) 10:46:54.62ID:OEXqADpi
ピン留めされるのは「ターミナル」であって、その中で何を起動するのかは 右クリックで選択できるようになっており、そのデフォルトが5.x系であるように見えます。もちろん以上のことがわかっていれば ここから7.xを選んで起動するのも簡単ではあるのですが…これはカスタマイズできるんだろうか
2024/09/30(月) 13:04:09.12ID:AYohfY5N
ターミナルのデフォルトはターミナルの設定画面で選べるよ
既定のプロファイルってやつ
2024/09/30(月) 17:54:24.00ID:OEXqADpi
292← できました!ありがとうございます
…というか、これまで(Windows10)は「ターミナル」じゃなかったということを今日 知りました(笑)
2024/10/01(火) 06:43:45.64ID:/Tad9Lz2
コマンドプロンプトで、where powershell
と入力すれば、powershell.exe の絶対パスが分かる。
だから、絶対パスを書けば、exe を指定できる

C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe

ここに、2つ以上表示されたら、上の方が優先して実行される
2024/10/01(火) 08:34:51.39ID:CEO/MZ1M
ワイ氏、whereというコマンドがあることをパソコン歴20年にして初めて知る
2024/10/01(火) 08:53:10.90ID:lHW1RCWi
Powershell v5はpowershell.exe、v7はpwsh.exeなのでこれらの混在環境でパスの優先順位が問題になることは基本ない
むしろコマンド名を混同したままでは取り違えが起こりそうなので一応
2024/10/01(火) 21:40:49.64ID:+PXXCXjN
20年前のWindowsにはまだwhereコマンドは標準搭載されてなかったから知らなくても仕方ない
一応リソースキットやサポートツールには入ってたけど
2024/10/02(水) 21:22:59.58ID:PTqKnWGQ
20年ぐらい前から個人でPathが通ってるところに ls.bat や which.bat を作って同等のことをやってた
Unix(当時はまだUnixは普通に使われていた)やLinux も普通に使ってるとつい ls って入力していらっとしてしまうから必須だった
299デフォルトの名無しさん
垢版 |
2024/10/14(月) 11:07:36.62ID:iqlRL8W8
>>298
UNX・LinuxのlsコマンドだってシェルやOS依存だぜ?
300デフォルトの名無しさん
垢版 |
2024/10/14(月) 11:10:46.06ID:iqlRL8W8
Windowsの基本知識がないのにPowerShellを使うというのも何がなんだかわからないやつだ
2024/10/14(月) 21:22:43.79ID:6g0FV4Kx
>>299
UNIXでlsが使えない環境があるの?
2024/10/14(月) 22:47:46.01ID:Fd8j7Mhu
Powershellの話をする気がないなら黙れジジイ
2024/10/14(月) 23:07:14.44ID:rwiJ8lRR
>>301
無いのでecho *でやっていた環境があるのだ

そう、あれはLinuxっていうやつだった
2024/10/15(火) 06:06:09.78ID:CzVFQLgH
>>303
スレチ
305デフォルトの名無しさん
垢版 |
2024/10/15(火) 20:55:15.08ID:7T7mXQAC
>>298
PSのcatとUnix系のcatが別物ってくらい違うのがね…。
おまけにDOSコマンドのtypeもPSとコマンドプロンプトで違う。
(PSのcat/typeはget-contentの別名)

PSだとリストを受け取るので、カンマで区切る必要がある。

cat file1, file2, file3

C#で自作したコマンドとも、元からあるDOSコマンドとも違うって…。
MS謹製のIDE(VS)で自作したコマンドと連携撮れないMS謹製のシェルェ…。
2024/10/15(火) 21:47:59.44ID:lPGbp20O
エイリアスに互換性を求める人なんていたんだ
そんなの新しいコマンドを覚えやすくするための糖衣でしょ
DOSみたいなクソダサレガシー環境との互換性を尊重してたら呪縛なんてもんじゃない
シェルスクリプトって古今東西きったねえ一貫性のないもんなんだから拘っても虚しいだけよ
2024/10/15(火) 23:10:10.50ID:qo7/LMKy
>>306
どの言語でもrubyを求める奴がいるように
PowerShellにもUnix系シェルを求めちゃうんだろうな
308デフォルトの名無しさん
垢版 |
2024/10/16(水) 07:29:00.82ID:SZo2N9Nf
>>301
コマンドの実装は違うよ
2024/10/16(水) 09:56:19.21ID:NaAnwllp
>>305
Remove-Alias cat
function cat([Parameter(ValueFromRemainingArguments=$true)][string[]]$Path){Get-Content @PSBoundParameters}

これで文句ないだろ
310デフォルトの名無しさん
垢版 |
2024/10/17(木) 00:37:51.84ID:yqUeq3Bo
PowerShellでLINQをメソッドチェーンで書く方法ってある?
静的メソッドで[Enumerable]::Select()みたいに書くと()が増えてガチャガチャしちゃうのがなぁ…
311デフォルトの名無しさん
垢版 |
2024/10/17(木) 00:38:50.49ID:WrCN832N
>>309
そういうコマンドに出合うたびに毎回そんなの書くのはね…。
そんなこんなでLinux(bash)に落ち着くんだよね…。
312デフォルトの名無しさん
垢版 |
2024/10/17(木) 00:49:20.12ID:yqUeq3Bo
>>311
俺は逆に会社でWindows使う機会が多すぎてLinux(*nix)コマンド側の記憶が消えそうになってるな…
たまにLinux使うとPowershellみたいにパイプラインを文字列じゃなくてオブジェクトが通るつもりで書きそうになる
2024/10/17(木) 01:09:19.82ID:YcyvXrpH
>>311
お前は何を言ってるんだ
catエイリアスを消してbashっぽい動きの関数をcatの名前で登録し直すって内容なんだから
これをprofileにでも貼り付けて使えって意味だろうが
314デフォルトの名無しさん
垢版 |
2024/10/17(木) 02:10:19.27ID:WrCN832N
>>313
うん。
そう理解してる。
PowerShellってよりは周辺環境が追い付いてない印象だけど、まだLinuxでbash触る方が楽かな。
もうしばらく進化を待ちますね。
2024/10/17(木) 11:09:20.30ID:wdGjJarp
スクリプト書くのはbashよりpowershellの方が書きやすいし読みやすい
そしてlinuxでもpowershell使えるしで重宝してる
2024/10/17(木) 21:13:19.55ID:ooYpCywP
スペースとコンマの違い程度で発狂して上から目線でもうしばらく進化を待ちますねって面白い人だなぁ
そもそも進化してないのはUNIXシェルのほうでしょ
2024/10/18(金) 13:56:03.02ID:wVDH4S6Q
space と , はさすがに気付くと思うが
: と ; の違いは老眼にはきつい
2024/10/19(土) 10:49:56.95ID:0/OluZJS
:(コロン)ていう名前が美味しそうな響きなんだよなぁw
2024/10/20(日) 10:17:27.24ID:Y993j978
コロネじゃないんだから
2024/10/20(日) 10:22:09.68ID:/FrbdBj7
マロンかと思った
2024/10/20(日) 13:53:57.93ID:hxgHNqIu
LinuxとかDOSコマンドを、デフォルトのエイリアスでPowerShellコマンドレットに結びつけておくってのは悪手だよなー
他環境利用者の移行配慮ってなら、例えば「cat」を「Get-Help Get-Content」を実行する関数へのエイリアスにするとか、何かやりようあったんじゃないかと思う。
PSv1、v2の出来の悪さ、様々な考慮不足がずっと足引っ張ってると思う。
2024/10/20(日) 18:37:33.24ID:sfhCtbKo
curlとかシンプルな本物使いたいことの方が多いから邪魔なだけ
2024/10/21(月) 01:06:16.28ID:ursFBC+1
エイリアスはハマることがあるので不評
2024/10/21(月) 01:47:50.43ID:9ofaZL13
sh系はともかく、cmdと全く別のコマンド名覚えなおすのも慣れとはいえ面倒なのは確かだからしょうがないんじゃない
補完できても長いものは長かったし
当時からWSLがあれば別だったんだろうけど
2024/10/21(月) 02:22:41.82ID:fVCz7bM3
このスレを見ていれば分かるけど、自分がいまcmdを実行しているのかpowershellなのかpwshなのか分かってないユーザがかなりを占める
そんなごく普通のWindowsユーザーたちがdirやcdで適当にやったらなんか動いたとか、同じコマンドで動くらしいからオレも使ってみようかなとかいったハードルを下げる要素の重要性は無視できない
複数パラメータの区切りがスペースかカンマか?マジどうでもいいよw
Windowsの新しいシェルスクリプトなんて相反するニーズに縛られまくるからどんな仕様にしたところで数え切れない文句が飛んでくる
2024/10/21(月) 21:43:14.36ID:iHmIY3KR
>>324
>当時からWSLがあれば別だったんだろうけど

WindowsでUNIXシェルが使えないから仕方なく欠陥品のPowerShellを作った、とか思ってそう
2024/10/22(火) 00:45:55.83ID:CtvGpoP8
>>326
思考が卑屈すぎるわw エイリアスの話しかしてないよ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。