PowerShell -Part 7

2024/05/30(木) 09:38:23.19ID:BwsQkw0g
>ウインドウ非表示実行

conhost.exe --headless powershell.exe -file foo.ps1
では駄目?
2024/05/30(木) 10:02:25.09ID:KpHhmNZR
非表示にする理由ある?
2024/05/30(木) 12:56:45.30ID:T4GqjJ/d
vbs廃止は神国だわw
2024/05/30(木) 17:48:39.42ID:U4JaIgka
>>205
駄目じゃない、ありがとう
タスクスケジューラーから定期実行する時、VBS以外の選択肢がなくて困ってた
引数の--headlessはどういう意味なんだ?
2024/05/30(木) 22:14:09.65ID:5L9b56Kn
https://github.com/microsoft/terminal/issues/17178
conhost.exe --headlessは終了コードを得られない致命的なバグがあるらしいな
Hiddenで起動する適当なexe作った方が早そう
2024/06/01(土) 09:49:39.74ID:GcLNDseM
>>154
なんじゃこりゃ、どんだけエアプが書いてんだ?
そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ
権限の昇格の概念の無いOS用のsudoと意味論が異なる事を示す為にせめてsudo以外の名前を使えよ

以下win/pwsh環境での突っ込み
>runasはパスワードの入力が必要になる
saps に-cred $me渡せ

>別ウィンドウでターミナルが起動する
-nonew渡せ

>別ターミナル再度コマンドを実行する必要
それはsu相当の動作であってsaps pwshで代替できる

全部やりたいならsaps $prog -runas -cred $me -nonewだろ?

win上のpwsh環境ではsaps上で直交するオプションとして設計された4機能が全部斜交した邪悪の極みみたいなコマンドと化してるぞ
ついでに言うとrunas.exeも若干邪悪…

テストはしてないからなんか俺もエアプしてたら突っ込んでね?
2024/06/01(土) 10:15:49.38ID:rqyUs55u
$progと-args @argsをfunction sudoに包んで渡せばとりあえず望みの挙動を得られるはず
2024/06/01(土) 22:09:53.18ID:olGfUeGO
俺の環境だと-NoNewWindowと-Credential両方指定すると新しいウインドウが開いちゃうんだが
2024/06/04(火) 22:16:09.49ID:GNPHSdGp
>>208
https://www.keyence.co.jp/ss/general/iot-glossary/headless.jsp

ヘッドレスとは、組み込み機器やサーバなど、本来対面で人が操作するためのものではない(または、その必要がない)システムで見られる運用形態のひとつです。コンピュータの場合、キーボード、マウス、タッチパネルなどの入出力機器を接続しない状態で運用すること、また、その状態で運用を行う機器などがあります。
2024/06/05(水) 00:12:03.26ID:nLwXXU6Y
https://eow.alc.co.jp/search?q=headless
例文、怖えぇ〜

【headless】
1. 頭部のない、首を切られた
 ・ I saw a headless dog lying beside the road on my way to school. :
  学校へ行く途中、道端に首のない犬が転がっているのを見た。
2. 指導者がいない
 ・ The terrorist group is a headless organization. :
  そのテロリスト集団は指導者がいない組織である。
3. ・・
2024/06/10(月) 08:02:22.79ID:KfgQc11A
ヘッドレスってCPUをなくすべきでは
2024/06/12(水) 21:40:45.55ID:68xFIGJf
>>210
>そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ

今のSudo for Windowsは同一じゃない

https://learn.microsoft.com/ja-jp/windows/sudo/#how-is-sudo-for-windows-different-from-the-existing-runas-command
>現時点で Windows 上の sudo コマンドは、他のユーザーとしてのプログラムの実行をサポートしていません。
2024/06/13(木) 01:51:19.96ID:I2CUi2vW
>>216
>そもそもrunas.exeとsudoの意味論はユーザ切り替えで同一だろ
ここで言及してるsudoはunix系の本家(?)sudoのことやろ
2024/06/19(水) 22:42:22.27ID:pSP80P6j
古い業務システムでデータ入力する時に自動化しようと思ったんだが、
Enterがカーソル位置以降の文字消してフォーカス移動、NumpadEnter(テンキーのEnter)がEnter、
左CtrlがCtrl、右CtrlがEnterという機能になっている。
powershellのSendkeysだとどうやってNumpadEnterか右Ctrlを選択すればいいのでしょうか?
2024/06/19(水) 22:46:04.00ID:rsgeG4yq
VBのSendKeysと変わらないと思う
220デフォルトの名無しさん
垢版 |
2024/06/21(金) 17:49:04.98ID:LwqdtCE6
>>218
無料のRPAでやる方法もあるよ
2024/06/22(土) 01:38:41.92ID:uvHlEJ4P
powershellってlinuxでも使えますっけ?
222デフォルトの名無しさん
垢版 |
2024/06/22(土) 05:23:03.55ID:dw6Bjmix
使えます
223デフォルトの名無しさん
垢版 |
2024/06/22(土) 19:51:57.56ID:dw6Bjmix
Win10のPowerShellのC#がVS2022のC#とバージョンが違って戸惑う…。
Win11ではそこまで違和感ないのだろうか?

foreach (var item in File.ReadAllLines(fileName).Select((line, i) => $"{i + 1,2}:{line}"))

としたかったのにReadAllLinesも使えないし、 $"{i + 1,2}:{line}"部分も使えない。

何か、隔世の感がある…。
2024/06/23(日) 00:24:22.40ID:Gy0jYBbT
???
225デフォルトの名無しさん
垢版 |
2024/06/23(日) 01:48:23.24ID:iAmtDmVE
PowerShell内蔵のC#スクリプトがOS毎にバージョンが違って、使えない機能があって不便だって話。

hello.ps1

Add-Type -Path .\hello.cs
[Hello]::hello()

hello.cs

using System;

public static class Hello
{
public static void hello()
{
Console.WriteLine("Hello World!!);
}
}
2024/06/23(日) 02:33:27.21ID:QkuO1K/N
まあ現在進行形でメンテされてるからな
むしろOS毎に入るバージョンが違ってくるのは当たり前なのでは…
227デフォルトの名無しさん
垢版 |
2024/06/23(日) 04:10:59.53ID:iAmtDmVE
分ってるけど、心の叫びだよ。

あ、PowerShellアップデートしてReadAllLinesの方は使えるようになった。
今更ファイルストリームでopen/closeとか嫌すぎたからホッとした。
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 エイリアスの話しかしてないよ
2024/10/22(火) 12:24:39.31ID:SSjePDmS
curl など誤解を招きかねないエイリアンは害悪でしかない
% とか ? は可読性上がる気がする
2024/10/22(火) 22:53:22.74ID:trzbvHFT
selectにも記号一文字のエイリアスあってもいいんじゃないかと思う
2024/10/28(月) 21:16:39.09ID:ZTog7VUm
そう思うなら自分で勝手にアイリアスを定義すればいいだけだよね
2024/10/28(月) 21:22:49.73ID:U22PtxVm
各々が好き勝手にエアリアルを使っているとコミュニケーションに支障をきたすから困る
2024/10/29(火) 09:23:16.64ID:Qywuhmt6
> WindowsでUNIXシェルが使えないから仕方なく欠陥品のPowerShellを作った、とか思ってそう
開発の経緯としてはまさにその通りなんだけどな
WindowsでUNIXシェルを整備するプロジェクトが頓挫して、根本的にWindowsに適した設計が必要であるということで生まれたのがPowerShell
なおオリジナルの開発者は現在はGoogleへ移籍し、UNIXシェルの世界へと還っていった模様
2024/10/29(火) 09:29:09.19ID:oyxmU1Yp
cygwinには長らくお世話になった
2024/10/29(火) 19:18:49.19ID:/c01W0NL
>なおオリジナルの開発者は現在はGoogleへ移籍し、UNIXシェルの世界へと還っていった模様
なおGoogleへ移籍後は何の成果も得られてない模様
2024/10/29(火) 23:17:38.65ID:/bXBK+wh
Linuxの管理マネージャやそのシェルのPowerShell化をしていたりして、
そのうちカーネルソースのPowerShellマネジメントレイヤーに取り込まれたり
Fedora、Ubuntuに適用される見込みである
2024/10/30(水) 11:01:45.95ID:cBVsI/1s
Azureならともかく、そんなもんGCP採用するような層にニーズあるかねえ
どう考えてもAzureを利することにしかならずGCPのシェアに対して悪影響しかないだろ
最近は首切りしまくってたのに最上位格エンジニアは気楽なもんだな
2024/10/30(水) 20:31:44.86ID:x0G86HEF
PowershellはAdd-Type辺りの機能は便利だけど言語としてはゴミ
2024/10/31(木) 21:50:30.83ID:uhxgBp24
UNIXシェルはもっと言語としてはゴミなんだよなぁ
2024/10/31(木) 23:02:56.00ID:va++Flqd
普段そういうゴミしか作者の周りになくて間違えて拾ってきちゃったんやな
340デフォルトの名無しさん
垢版 |
2024/11/01(金) 02:03:26.53ID:EQMsSXTB
>>338
シェルはUIだぞ?
2024/11/01(金) 04:01:30.22ID:+lXxXu7p
>>328
gal見てたらcurlだけでなくwgetもiwrだった
2024/11/01(金) 04:58:32.80ID:4H4fm5Ic
エイリアスといえばパラメータのエイリアスにも多分いろいろundocumentedなのあるよな?
-ArgmentListが-argsで通ったりとか規則的な略じゃないやつ、これは短くて分かりやすいからいいが
-argなら曖昧さのない限り頭から略せるという規則通りなんだけど

こういう個別のまとめた文書ってある?
一部は
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_commonparameters
にあるのは知ってる
2024/11/01(金) 09:06:40.20ID:vIWZBp6A
Get-Help -Fullの、パラメータのエイリアス
2024/11/17(日) 09:49:45.91ID:LBdK5SU3
Windows Server 2025 以降で削除された機能または開発されなくなった機能
https://learn.microsoft.com/ja-jp/windows-server/get-started/removed-deprecated-features-windows-server-2025

Windows PowerShell 2.0 エンジンは削除されました。アプリケーションとコンポーネントはPowerShell 5.0 以降に移行する必要があります。
345デフォルトの名無しさん
垢版 |
2024/11/20(水) 17:28:43.06ID:jLoC/a6V
AD一覧をcsv出力すると区切りが半角スペースになってExcelで取り込めない。
ググっても同じ症状の人が出て来ない
2024/11/20(水) 17:56:33.65ID:itZFOqj8
とりあえず-Delimiterで指定すれば?
347デフォルトの名無しさん
垢版 |
2024/11/20(水) 18:05:31.34ID:jLoC/a6V
OutfileってDelimiterできないよね?
Exportだと文字コードをdefaut、utf-8にしても数列で出力されちゃう
2024/11/20(水) 19:09:02.72ID:b8mbz+Om
Out-File? ならその前にConvertTo-Csvで変換してるんじゃないの?
2024/11/20(水) 21:42:00.83ID:KXgtJp1v
powershellのなんちゃってCsvコマンドレットはExcelで扱えるCSVと特に親和性があるわけでもなく、俺俺CSV止まりだからあんま使う価値ないかも
2024/11/20(水) 22:02:13.56ID:KXgtJp1v
ではCSV扱うなら何がいいかと言えばCsvHelperが定番なんだけど、C#や.NETの知識が要るね
AD一覧程度なら自力でフィールドをカンマで区切ったっていいよ
2024/11/20(水) 22:56:49.84ID:+ywVzG00
Announcing the Public Preview of AI Shell
https://devblogs.microsoft.com/powershell/announcing-the-public-preview-of-ai-shell/
2024/11/21(木) 09:11:03.40ID:uYan55MO
CSV変換標準コマンドレットはデータ前後のスペース文字が消えるので
一切データ欠落しちゃいけない場合は注意
2024/11/27(水) 23:16:05.27ID:aNQZM+B9
Export-Csvって自力でクォーテーション外してた時代あるし地味に改良してるけどな
2024/11/30(土) 22:11:49.94ID:LJbTxW4W
Should PowerShell 7.x ship inbox in Windows?
https://github.com/PowerShell/PowerShell/discussions/24340
2024/12/01(日) 13:20:57.08ID:8Yw35ga9
>>354
PowerShell7.xは通常利用されないpwshシェルとして実装されても良いと思うよね
標準シェルをpowershell.exeにしておけば互換性問題無いし

ただ7.xが5.1の互換とか言ってるのはかなり微妙
356デフォルトの名無しさん
垢版 |
2024/12/11(水) 10:15:30.38ID:Bk1Et5xQ
引数の文字数上限って回避方法ってありますか?
複数のフォルダをドラッグ&ドロップして使いたいけどいい方法が思いつきません
2024/12/11(水) 22:01:27.57ID:J5p4fYKY
WSHやjavascript限定ではあるけどファイラーのTablacus Explorer使えば会費できたと思う
358デフォルトの名無しさん
垢版 |
2024/12/15(日) 21:59:46.99ID:D9xraIFr
>>356
ネタだよな?

Windowsはパス文字列の長さの上限がかなり低いので長いパスはWindowsでは扱えない
2024/12/16(月) 11:35:41.45ID:EDggbpJc
引数の文字数上限なんて気にしたこともないわ
一体どんなスクリプト組んでるんだ?
2024/12/16(月) 12:33:48.42ID:BlyRMH2R
複数のフォルダをD&Dしてとあるから
大量のフォルダ・ファイルを渡すんだろうな
これは言語の制限じゃなくてエクスプローラかcmdかのシェルの制限だろう
2024/12/17(火) 00:26:16.95ID:qauPzx29
powershellのIDEってやっぱvscode一択?
362デフォルトの名無しさん
垢版 |
2024/12/18(水) 15:12:46.26ID:vtNCD/9a
>>361
Windowsのスタートメニューを見たことがないのか?

PowerShell ISEは無視、Visual Studioも無視するなら、あなたの希望通りにVSCodeになるな。
2024/12/18(水) 22:53:36.03ID:r/ciUEmV
いや普通にVSCode一択だよ
ISEは開発停止がアナウンスされてMicrosoft自身がVSCodeを推奨してる
2024/12/18(水) 23:49:49.43ID:qUh0YP4m
powershellの開発環境としてvisual studioが挙がることってあるか…?
2024/12/19(木) 00:10:06.38ID:MPXM+zkD
VScodeなら分かる
2024/12/21(土) 16:45:21.87ID:3/R2Wu0q
.ps1のスクリプトを右クリックから実行しようとすると
最初に[実行ポリシーを変更しますか?…]というのが出て、キーボード操作が必要になるんだけど
これは出ないようにできないのかな?
2024/12/21(土) 17:27:08.04ID:HkxgIAjH
うろ覚えだけど
右クリからやるやつはポリシーがhogeだったらbypassにするみたいなif文が入ってた気がする
レジストリで変えれたはずだけど出先だから細かくは分かんないや
適当にググったら出てくるんじゃないかな

それかif文にかからないようにポリシーの方を変える
2024/12/21(土) 17:47:50.11ID:3/R2Wu0q
>>367
できました!
ありがとうございます
369デフォルトの名無しさん
垢版 |
2024/12/21(土) 19:56:38.76ID:IOryZJAZ
>>368
間違って実行してしまわないよう、わざわざそういう仕様になっていることを忘れないように
370デフォルトの名無しさん
垢版 |
2024/12/21(土) 19:57:11.83ID:IOryZJAZ
>>368
バッチファイルというものを知った方がいい
371デフォルトの名無しさん
垢版 |
2024/12/21(土) 20:34:08.41ID:kQ229ZTv
的外れなレス付いてんなw
2024/12/23(月) 10:35:42.88ID:8lbwsaDk
バッチこい
373デフォルトの名無しさん
垢版 |
2024/12/24(火) 22:41:53.48ID:S4CkJ4V1
>>371
そもそもGUIで人間の操作で実行というのが変

何のための自動化なのかわからない
2024/12/24(火) 23:14:00.94ID:ALyk/+99
どこからGUIの話が出てきたんだ…?
375デフォルトの名無しさん
垢版 |
2024/12/25(水) 17:59:30.20ID:YmcCoB80
>>374
「右クリック」と書いてある
2024/12/25(水) 21:34:02.80ID:G9TljzDw
ps1で思考停止するような子を見てるとそう
もっと頭を使う訓練を教育機関で受けさせとかないとやばいのではと総務省に問い質したくなるね
2024/12/26(木) 00:31:28.78ID:3BPBxHkr
総務省…?
2024/12/27(金) 11:14:09.84ID:nSbaFnN8
>>373
ps1ファイルを右クリでpwshコンソールが起動してスクリプトが実行される
て普通にあることだと思うが
2024/12/27(金) 12:09:30.67ID:+TT5rJ9I
もう既に解決して終わってるし、>>366に書いてることをもう一度書く必要はない
2025/01/02(木) 12:24:43.46ID:XSssqHtC
$s = "昔し羅馬にこう云う話しがある。後学のため聞いておけと云うんです"
Write-Host -ForegroundColor Red -BackgroundColor Black "$($s[12]) $($s[24]) $($s[23]) $($s[19])"
381デフォルトの名無しさん
垢版 |
2025/01/07(火) 17:30:11.98ID:150rExn4
>>378
それはGUIの操作
382デフォルトの名無しさん
垢版 |
2025/01/07(火) 17:33:24.53ID:150rExn4
実行形式のファイルを実行するときにしつこく確認する仕組みに変化した歴史も知らないんだろ。
2025/01/08(水) 01:30:32.18ID:T5jAWt2M
的外れ過ぎる
2025/01/08(水) 09:05:49.08ID:DiodmN71
>実行形式のファイルを実行するときにしつこく確認する仕組み

何それ
2025/01/12(日) 01:09:34.15ID:7sMi3UMV
gci C:\Windows -include *.log,*.dat
は要素が一つも出なくて
gci C:\Windows\*.* -include *.log,*.dat
gci C:\Windows -recurse -include *.log,*.dat
はOKってどういう理屈なの?
できれば一番上の書きかたしたい…
2025/01/12(日) 10:26:34.53ID:+COVob5t
>>385
仕様。
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-5.1#4-include

理屈は知らん。過去ログになんかあったような、ちょっと違ったような。(-Filterの話だったような)
2025/01/12(日) 14:27:17.12ID:+gCgMQG7
初期リリースで適当に用意されたコマンドレットの仕様が残ってるだけだから理屈なんて無いだろうよ
gciのオプションは普通の人の感覚と違うからWhere-Objectにパイプで渡してフィルタする方がおかしな事にならないよ
2025/01/14(火) 14:43:26.79ID:It61Xpnn
末尾のスラッシュの有無でフォルダ自体を指すのかその配下を指すのかを区別するのはUNIXでは割と珍しくないだろう
Windowsだとファイルパスを文字列というより何らかのエンティティを参照するものと考える傾向があるから馴染みにくいわな
2025/01/14(火) 19:43:42.33ID:yWOGeGxK
この話は末尾がスラッシュかどうかは関係ないよ
Include, Excludeを使うときはワイルドカードを含めないとPathで指定した項目自身しかヒットしなくなるというこのコマンドレット固有ルールの話
390デフォルトの名無しさん
垢版 |
2025/01/27(月) 01:42:20.03ID:hFrLE9a7
V7.47
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.7
V7.5
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.0
が出ました
391デフォルトの名無しさん
垢版 |
2025/01/27(月) 01:43:08.84ID:hFrLE9a7
今回から.exeがある。
2025/01/27(月) 21:48:58.99ID:sL8l+nw9
.exe版と.msi版の違いが分からん
.msiだと問題が起きる環境でもあるのか
2025/01/27(月) 22:00:26.88ID:PdZna4r2
MDMで配れない
2025/02/05(水) 01:17:36.51ID:lMdV6DH3
powershellの実行権限デフォルトで縛ってるのなんでなの
batは縛ってないのに
2025/02/05(水) 09:34:59.87ID:RMyxJ4z6
batが作られた時代はセキュリティという概念がほとんどなかった
いまや甘いと社会的影響も甚大で徹底的に叩かれる時代
何もわからない初心者がメールに添付されたスクリプトを実行できなくて困惑するくらいで丁度いい
batという穴が残っているといってもいまは過渡期
移行する選択肢がありたとえば組織のルールで禁止してメールフィルタで弾けばいい
2025/02/05(水) 11:32:38.10ID:Mu7T1O7D
情弱は我慢して使えってこと
397デフォルトの名無しさん
垢版 |
2025/02/07(金) 21:28:42.53ID:lNWVt+S0
>>394
誰でも間違って重大ミスをする方がいいのか?
2025/02/08(土) 08:16:37.94ID:cxNGtJGK
https://learn.microsoft.com/ja-jp/powershell/scripting/security/security-features
> 実行ポリシーは、Windows プラットフォームにのみ適用されます。

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_execution_policies
> Windows 以外のコンピューターでは、既定の実行ポリシーは Unrestricted され、変更できません。 Set-ExecutionPolicy コマンドレットは使用可能ですが、PowerShell はサポートされていないというコンソール メッセージが表示されます。 Windows 以外のプラットフォームでは Get-ExecutionPolicy は Unrestricted を返しますが、これらのプラットフォームは Windows セキュリティ ゾーンを実装していないため、実際の動作は Bypass と一致します。

なんだこの差は
2025/02/08(土) 08:24:47.70ID:26aAk0ye
2025/02/08(土) 08:47:04.49ID:Tj0Icuu5
マルチプラットフォームで社外の全システムに対応するのもめんどくさそうだしある程度はええやろ
UNIXならパーミッションを適切に設定する文化が馴染んでるしな
100点満点じゃないと人様に叩かれる文化は新しいものが生み出せずに萎縮する
2025/02/08(土) 13:21:14.91ID:1vi9xXrm
バッチファイルでも実行権限を持たせる事はできるんだから
powershell独自のやつは余計なんだよ
2025/02/08(土) 15:13:57.11ID:k/NTaFUS
.ps1はエディタに紐付け
2025/02/08(土) 15:51:11.00ID:6WBbu+9W
メモ帳に紐付けてます
2025/02/13(木) 09:12:08.62ID:/wbXAgvm
PowerShell 7.5 GA is now available
https://devblogs.microsoft.com/powershell/announcing-powershell-7-5-ga/
405デフォルトの名無しさん
垢版 |
2025/02/18(火) 06:18:26.96ID:YFjssuad
Selectボタンでファイルを選択した後にOKボタンを押下しても、$filePathにファイル名が代入されていません。何が原因でしょうか?
ttps://pastebin.com/a3EwP1Lw
2025/02/18(火) 07:51:32.12ID:WQjhH71Q
>>405
テキストボックスには選択したファイルのパスが表示されてるのに、ってこと?
2025/02/18(火) 07:53:13.44ID:hC2ChTFa
scope的に$filePath揮発してたりしない?
2025/02/18(火) 08:02:55.62ID:WQjhH71Q
関数内で外のスコープの変数に代入する場合はスコープ指定(script: や global:)が必要だったかも
409デフォルトの名無しさん
垢版 |
2025/02/18(火) 19:01:09.96ID:cVYWxauq
>>406
はい、そうです。

>>407
多分$filePathが揮発しているのだと思うのですが、何故そうなるのかが正直分かっておりません。

>>408
$global:filePath = $null
$script:filePath = $null
に書き換えても結果は同じでした。orz
2025/02/18(火) 21:38:36.15ID:Zhun0sKt
>>409
408の内容理解してないだろ
2025/02/18(火) 21:45:12.87ID:X9R6h3Dz
$button_Select.Add_Clickの中の $filePath = $dialog_fileSelection.FileName を $script:filePath に変える

そもそもイベントハンドラの書き方おかしくない?
Add_Click{} じゃなくて Add_Click({}) でしょ
2025/02/18(火) 21:45:47.23ID:pnZByoKT
>>409
惜しいw

スコープ指定が必要なのは関数内の代入文側であって、外にある変数定義側ではないよ
413デフォルトの名無しさん
垢版 |
2025/02/19(水) 05:46:44.36ID:95a5Qlah
>>411
ありがとうございます!
$filePathにファイルパスが代入されるようになりました。

>>412
ありがとうございます。
そうだったんですね。勉強になりました。
414デフォルトの名無しさん
垢版 |
2025/03/01(土) 22:23:09.05ID:yrcKQQ99
ttps://pastebin.com/THGpvEsL

ファイルを何も選択していない状態でOKボタンを押下すると、メッセージダイアログボックス「"Please select a file."」が表示され、そのダイアログボックスのOKボタンを押下すると、処理?が終了してしまいます。
OKボタンを押下した際に、そのメッセージダイアログボックス「"Please select a file."」だけ消すにはどうしたらいいでしょうか?
2025/03/02(日) 03:09:52.22ID:9brWkkbH
>>414
当たり前だけど、下記を削除するしかない

$button_OK.DialogResult = "OK"
416デフォルトの名無しさん
垢版 |
2025/03/02(日) 07:10:25.55ID:yaeCdLgC
>>415
ありがとうございます!
2025/03/04(火) 14:43:31.10ID:p/g0UiTR
Microsoft Update changes for PowerShell 7
https://devblogs.microsoft.com/powershell/microsoft-update-changes-for-powershell-7/
「Microsoft Update」を用いた「PowerShell 7」のアップデート計画が変更
まだ「PowerShell 7.2」を利用している場合、米国時間3月14日より7.4へ更新開始
https://forest.watch.impress.co.jp/docs/news/1667304.html
418デフォルトの名無しさん
垢版 |
2025/03/07(金) 19:36:07.86ID:zJfq1/au
Input Folder用のボタンを押下して対象のフォルダを選択した後、OKボタンを押下すると選択した対象のInputフォルダのパスが取得されていません。
変数スコープまたは"function setSelectButton"におけるswitchが機能していないのおもうのですが、何が原因でしょうか?
Copilotに聞いてもダメでした。ボタンなどの部品は関数化しないほうがいいのでしょうか?

ttps://pastebin.com/ULTy9dM8
2025/03/07(金) 23:19:13.53ID:6K+ignj1
Add_Clickに渡したスクリプトブロックが実行されるのはボタンクリック時。
その時にはもうsetSelectButtonを抜けてるから、setSelectButton実行時に渡した$folderTypeはもう見えない。

最後の手段的なglobalスコープの使用を避けて手っ取り早く解決するなら、
{〜〜〜}.GetNewClosure()でsetSelectButton実行中の変数スコープを記憶(?)したうえで
自前のクラスとかハッシュテーブル等で入出力しちゃう。とか。適当実装だとこんな。

function setSelectButton($def){
$conf = New-Object System.Windows.Forms.Button
$conf.Location = New-Object System.Drawing.Point($def.xAxis,$def.yAxis)
$conf.Size = New-Object System.Drawing.Size($def.xSize, $def.ySize)
$conf.Text = "Select"
$conf.Add_Click({
  $dialog_FolderSelection = New-Object Windows.Forms.FolderBrowserDialog
  if($dialog_FolderSelection.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK){
    $def.textBox.Text = $dialog_FolderSelection.SelectedPath
  }
}.GetNewClosure())
return $conf
}
(略)
$inputDef = [Ordered] @{xAxis = 370; yAxis = 50; xSize = 70; ySize = 20; textBox = $textBox_inputFolder;}
$outputDef = [Ordered] @{xAxis = 370; yAxis = 70; xSize = 70; ySize = 20; textBox = $textBox_outputFolder;}
# create Select button
$button_Select_inputFolder = setSelectButton $inputDef
$button_Select_outputFolder = setSelectButton $outputDef
(略)
if([String]::IsNullOrEmpty($inputDef.textBox.Text)){ # show a message dialog if no file is selected

※これで入力欄にフォルダパスをコピペする人(=私)も安心
420デフォルトの名無しさん
垢版 |
2025/03/08(土) 23:41:12.69ID:zOJ1gnEL
画面用のコードがひどすぎるのがPowerShell
421デフォルトの名無しさん
垢版 |
2025/03/09(日) 07:42:20.13ID:RXTu5Tqn
>>419
ありがとうございます!
setSelectButton実行時に渡した$folderTypeはもう見えないんですね。
2025/03/11(火) 21:13:50.84ID:LUWD7xFy
Windows 11 バージョン 24H2 で netsh.exe の出力を PowerShell の変数に代入すると、非 ASCII 文字が文字化けする事象について
https://jpwinsup.github.io/blog/2025/03/11/Networking/TCPIP/NetshEncodingChange24h2/
423デフォルトの名無しさん
垢版 |
2025/04/26(土) 01:37:45.27ID:1l1C1hqe
ttps://pastebin.com/0HrXEMvc
のHTMLソースから特定のDIVクラス「KW」とそのクラスないを削除する方法はありましでしょうか?
以下ではきえませんでした
# HTML読み込み
$targetDir = "D:\Download\test\sample.html"
$html = Get-Content "D:\Download\test\sample.html" -Raw

# KWクラスdivを正規表現で削除
$pattern = '<div\s+class="KW">[\s\S]*?<\/div>'
$modifiedContent = $htmlContent -replace $pattern, ''

# 結果出力
$processedHtml | Out-File "D:\Download\test\pit.html" -Encoding UTF8
2025/04/26(土) 21:00:04.39ID:arwW7ZGW
>>423
なんで変数の対応がめちゃくちゃなの?
正規表現で力技でやるとこんなところだが
xmlとして読み込めばnode削除でいけそうな気がする
Add-Type -AssemblyName Microsoft.VisualBasic
$html = Get-Content "D:\Download\test\sample.html" -Raw

# KWクラスdivを正規表現で削除
$pattern = [regex]"^((?:(?'open'<div[^>]*?>[\r\n]*))|(?'close-open'</div>)|(?:(?!</?div[^>]*>)[\s\S])+?)*(?(open)(?!))"
$processedHtml=$pattern.replace($html,{
$r=$args.value
$e=0
$args.groups['3'].captures|
sort index|
?{$_.index+$_.length -gt $e -and $_.value -cmatch '<div.*class="KW"'}|
%{$e=$_.index+$_.length; $r=[Microsoft.VisualBasic.Strings]::replace($r,$_.value,"",1,1)}
$r
})
$processedHtml | Out-File "D:\Download\test\pit.html" -Encoding UTF8
425デフォルトの名無しさん
垢版 |
2025/04/26(土) 23:51:52.55ID:p1PcxSuO
ttps://pastebin.com/0M9pbEJt
みたいなHTMLから特定のDIVクラス(kw)で定義されている要素を全部削除したいのですが、何かいい方法ありますでしょうか?
426デフォルトの名無しさん
垢版 |
2025/04/27(日) 15:25:40.97ID:/1DxBHsK
>>425 (>>423と同一人物だよね)
>>424に礼を言ったうえで、どの点が自身の質問意図に合ってなかったか説明して、
それからもっと具体的に追加質問した方がいいと思うよ。
ところで「xmlとして読み込めばnode削除でいけそう」は試してから言ってるの?何が合わなかったの?
2025/04/27(日) 16:50:54.99ID:ce45ltSU
滝川クリトリスです
2025/04/27(日) 20:14:14.77ID:/O0GUF2P
楽しようとして初回マッチ部分のみのreplace使ったけど
やっぱり別のが消えちゃうという一抹の不安があるのでreplaceを使うのはやめた
最終行に改行がないままにしたいのかな?
$html = Get-Content "D:\Download\test\sample.html" -Encoding UTF8 -Raw

# KWクラスdivを正規表現で削除
$pattern = [regex]"^((?:(?'open'<div[^>]*?>[\r\n]*))|(?'close-open'</div>)|(?:(?!</?div[^>]*>)[\s\S])+?)*(?(open)(?!))"
$processedHtml=$pattern.replace($html,{
$r=$args.value
$text=''
$e=0
$args.groups['3'].captures|
sort index|
?{$_.index+$_.length -gt $e -and $_.value -cmatch '<div[^>]*?class="KW"'}|
%{
$text = $text + $html.substring($e, $_.index-$e-1);
$e = $_.index + $_.length - 1
}
if($r.length -gt $e) {$text = $text + $r.substring($e, $r.length-$e)}
$text
})

[Text.Encoding]::GetEncoding("UTF-8").GetBytes($processedHtml) | Set-Content -Path "D:\Download\test\pit.html" -Encoding Byte
2025/04/27(日) 20:24:25.83ID:/O0GUF2P
>>426
試してませんでした
HTMLやxmlを扱うことはほぼ無いのであんまり知識が無い
で、>>423の場合では[xml]で読み込めてnode削除でうまくいくんだが
入れ子になってる場合
<div class="KW">
<span>
<div class="KW">
</div>
</span>
</div>
とかにはどうやったら簡単に対応できるのかと思ってるところ
430デフォルトの名無しさん
垢版 |
2025/04/27(日) 22:05:35.62ID:aGrpQ/Rq
中身全部消すのであれば内側のKWは無視していいのでは
2025/04/27(日) 22:11:37.95ID:/1DxBHsK
簡単には
$text = DOCTYPE宣言を除いた<html>〜</html>とかXMLとして読み込めるテキストデータ
$xml = [xml] $text
while($node=$xml.SelectSingleNode("//div[@class='KW']")){
  $null = $node.ParentNode.RemoveChild($node)
}
$xml.OuterXml | Out-File 〜〜〜
## class="aaa KW bbb"の存在とか、インデント等を完璧に維持したい、とかは考慮外。
2025/04/27(日) 22:22:47.91ID:/O0GUF2P
>>431
なるほど
こんな感じにしてたんだよ
$list=@()
$doc.GetElementsByTagName('div')|?{$_.class -eq "KW"}|%{$list+=$_}
$list|%{[void]$_.ParentNode.RemoveChild($_)}
2025/04/27(日) 22:48:33.11ID:/O0GUF2P
悩んでたのは
既に削除しちゃてて存在しない場合にエラー無視はやりたくないなあってところ
2025/05/02(金) 21:45:21.05ID:TuuGRLh6
powershellって日本語に厳しい?
日本語名のフォルダに入れた時だけエラー吐く
英語名フォルダは動く
UTF-8BOMで保存してるのに文字化けエラーが治らない
435デフォルトの名無しさん
垢版 |
2025/05/02(金) 22:24:03.09ID:OrgxTXnx
いわゆる「マルチバイト文字」のことを「日本語」と呼ぶのはジジイ
436デフォルトの名無しさん
垢版 |
2025/05/03(土) 07:39:35.24ID:ERFTsxnY
UTF-8にBOMは不要
437デフォルトの名無しさん
垢版 |
2025/05/03(土) 17:59:32.71ID:0tHkB26n
文字コードが混在するシステムではBOMがあると便利です
2025/05/03(土) 18:08:41.88ID:qBega2UP
それが更に文字コードのバリエーションを増やし失敗を生むのだから本末転倒です
439デフォルトの名無しさん
垢版 |
2025/05/03(土) 18:08:56.03ID:PV3Uf1QS
PowerShellスクリプトは「UTF-8 with BOM」が前提

>>434
実行時(コンソール)のコードページを確認してみては?
2025/05/04(日) 07:07:42.38ID:kiovYued
shift-jisにすればいいんじゃないの?
2025/05/04(日) 08:23:30.18ID:GZLENS5k
適切なエンコードの選択
https://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/vscode/understanding-file-encoding#choosing-the-right-encoding
2025/05/04(日) 11:02:36.68ID:Bff2jlZm
文字化け対策は
 [Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
こういうのをpowershellのプロファイルに書き込んで
powershell起動時に文字エンコードが適切な値になるようにしておく
そしてコンソールのタイトルバーを右クリして設定で適切なフォントが使用されてるか確認
2025/05/09(金) 16:18:47.82ID:LImQScat
>>434 とは別人だが、レジストリ弄ったら文字化けしなくなったわ
初心者泣かせのクソ仕様だな
2025/05/10(土) 10:47:55.61ID:ARU6YZDD
>>443
powershellをアップデートしたらリセットされそうな予感
2025/05/10(土) 15:03:05.65ID:L74jL6NI
>>444
文字化けするようになったのはプロパティでコンソール画面の調整を行ってから
デフォルトの状態では文字化けしていなかったのでたぶん大丈夫…と思う
2025/05/18(日) 16:44:31.56ID:w/29XAyn
$a = powercfg.exe -lastwake
$aは文字列かと思ったら文字列の配列だった…

コマンドの出力に改行が無ければ文字列、含む場合は配列とかいうヘンテコ仕様は何なんだ
2025/05/18(日) 19:51:20.44ID:xRSUEbTb
この振る舞いを知らないと、$a.Lengthが時により文字列長だったり配列長だったりして、例外やバグになる。
さらには標準出力が何もないと文字列型である空文字ではなくNULL(AutomationNull)になるし。
外部プログラムの標準出力を受け手が改行ごとに分割して解釈するのはgrep等でよくあるからヘンテコ仕様とは思わないけど、
沢山あるpowershellの落とし穴の1つだと思ってる。
2025/05/19(月) 10:22:41.03ID:Z1VKFLAg
$a = @(powercfg.exe -lastwake)
こんなふうにして必ず配列で返るようにするといいです
2025/05/19(月) 21:43:03.14ID:qL6NUCv5
キモい記法だな
2025/05/19(月) 23:54:30.60ID:2rbfAZ+2
このキモい記法ってコレクション返す関数書くと使わざるを得ないんだよな…
関数とかスクリプト最後のreturnにコレクションを渡すと勝手にバラす謎仕様

最初知らなくてDataTableのつもりがDataRowの配列で返ってきたときはびっくりした
2025/05/20(火) 01:53:43.90ID:yO05o0Kw
[string[]]$aで受け取る
2025/05/20(火) 12:57:58.71ID:NKLxZTlt
時刻データ(ISO 8601)が入った JSON を invoke-RestMethod で受け取る
あるいは ConvertFrom-JSON すると時刻が powershell 形式になる
データの内容を見て勝手に変換してるんか…
2025/05/20(火) 14:18:35.07ID:Xl2+DDPz
>>452
勝手にDateTime型でだしてくるってこと?
2025/05/20(火) 15:30:07.39ID:NKLxZTlt
>>453
こうなる

(ConvertFrom-Json('{"data":"2025-05-19T16:35:42.000Z"}')).data

2025年5月19日 16:35:42
2025/05/20(火) 15:52:27.90ID:NKLxZTlt
括弧いらなかった(どうでもいい)
(ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data
2025/05/21(水) 09:54:31.02ID:rXr/G70T
ならんが(Win10, Win11, PSv5.1 -nop)

PS C:\Users\User5> (ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data
2025-05-19T16:35:42.000Z
PS C:\Users\User5> (ConvertFrom-Json '{"data":"2025-05-19T16:35:42.000Z"}').data.GetType().FullName
System.String
2025/05/21(水) 09:59:36.90ID:2NJ41Wyd
powershell5とpowershell7で動作が違うね
powershell7だと変換される
2025/05/21(水) 17:10:41.92ID:NEzFfeHM
大半が5.1しか使わないから7の方が合わせろよって事
459デフォルトの名無しさん
垢版 |
2025/05/21(水) 18:50:19.37ID:UAEUk5lE
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/convertfrom-json?view=powershell-7.5#notes

PowerShell 6 以降、 ConvertTo-Json はタイムスタンプとして書式設定された文字列を DateTime 値に変換しようとします。

PowerShell 7.5 では、DateKind パラメーターが追加されました。これにより、タイムスタンプ文字列の変換方法を制御できます。 このパラメーターは、次の値を受け入れます。
2025/06/24(火) 00:10:17.72ID:9HpiqCeZ
powershell7っていつになったらOS標準搭載されるんだろう
スクリプト配れないから困るんだよね
2025/06/24(火) 11:26:30.59ID:F3nFA9Ml
配ればいいじゃん
7で動作確認してますって書いとけばいいだけ
2025/06/24(火) 11:45:12.25ID:jKpO0eO6
その小学生低学年みたいな書き込み必要か?
2025/06/24(火) 12:05:00.87ID:KEAdRoBs
いつになってもされないよ
Windowsのサポート期間と合わないから、標準で入れたところで結局塩漬けされて第二のPowerShell5になるだけ
そして最新のバージョンのPowerShellは今以上に誰も使わなくなる
.NET4.8のサポートが終了する頃にはとっくにPowerShellは開発終了してるだろうし、無理に移行させる理由がないんだよ
2025/06/24(火) 12:24:16.18ID:uXNyGdUq
OS標準搭載とか安定が必要なのはv5を使え、v7は破壊的変更を加えながら育ててくって棲み分けになってるから標準搭載はナイだろうなあ
2025/06/24(火) 18:03:39.76ID:sjc0o4g2
6以降はWindowsファーストでUNIXでも動くシェルとしてわりとユニークな立ち位置なのでそれなりに存在価値はあり、
MSスタックどっぷりな人間がAzureをはじめとしてクラウドでLinuxに触れざるを得ないときのハードルを下げるのに役立っている
Winのオンプレ鯖やPCのシェルとしては5までで終わり
2025/06/24(火) 19:36:57.27ID:ZrkIV361
.NET Framework 4系(4.8.x)がWindowsに同梱され続ける限り、PowerShell 7.xが標準になることはなさそう
Unicodeの年次アプデがもう何年も反映されてなかったり、色々とキツいけど仕方ない
2025/06/25(水) 00:38:29.01ID:6PeRjodX
powershellで攻めた使い方するくらいならpythonで書くよなぁ
インストール不要で動くという最大のメリットがない7系はpowershell好きにしか響かないと思う
2025/06/25(水) 13:28:46.57ID:zWuAHPd0
>>467
逆にpowershell7をインストールしないメリットて何だ
2025/06/25(水) 15:20:42.55ID:TZWJXUbx
Pythonをインストールしないメリットと似たようなもん
2025/06/26(木) 17:27:15.49ID:lOjfAOzg
powershell 7 が読めない速さで(読めないのでキャプチャした)
”Creating implict remoting module ... [Getting command information from remote session ... 74 commands received 0s]”
とか黄色文字で一瞬表示するの止められないんだろうか
チラチラして鬱陶しい

implict remotingて何だと調べると互換性の無いモジュールを裏でpowershell 5 を起動して処理してるんだとか
Set-Location 程度でも発動する
2025/06/28(土) 01:00:11.07ID:UBYVDQZY
昔数百万行の各個別コマンドをpowershellでスレッドプール実装して並列処理で捌いたことあったけどvscodeの拡張機能でのデバッグが無かったら諦めてたと思う
拡張機能のおかげで大分開発しやすくなった
472デフォルトの名無しさん
垢版 |
2025/06/28(土) 16:43:22.73ID:uH6ba5rf
>>471
なぜマルチスレッドの実装にこだわってマルチプロセスにしなかったのか?

スレッドのコントロールは面倒くさい。
互いのスレッドが干渉し合わないなら、別のプロセスとして実装すべき。
2025/06/30(月) 14:31:10.94ID:+52Dh5n7
「Windows PowerShell 2.0」は非推奨、将来的に削除 〜Microsoftが改めて注意喚起
「Windows PowerShell 5.x」や「PowerShell 7.5」への移行を
https://forest.watch.impress.co.jp/docs/news/2026721.html
474デフォルトの名無しさん
垢版 |
2025/07/08(火) 11:07:44.40ID:ub1Gvu25
>>397
batの方が重大なミスしそうなんですがそれは
475デフォルトの名無しさん
垢版 |
2025/07/08(火) 11:08:23.57ID:ub1Gvu25
>>398
っぱpwsh on linuxよ
2025/07/08(火) 11:16:15.29ID:jxaCuQsN
>>474
よく読め
477デフォルトの名無しさん
垢版 |
2025/07/08(火) 11:16:26.31ID:ub1Gvu25
>>466
何時までも4,5系に留まるってことは無いと思うけどね
実際2からアップグレードされてきた訳だし
.NET Frameworkとの差異は比較的大きいにせよ
>>473の件もあるしそのうちプリインされるだろCore版が
なお6か7かはたまたまだ見ぬ8かは知らんけど
478デフォルトの名無しさん
垢版 |
2025/07/09(水) 05:32:28.94ID:aeqwBJS6
powershellの日本語ドキュメント、chatGPTに翻訳させたらもっとマトモにならんかなあ…
479デフォルトの名無しさん
垢版 |
2025/07/09(水) 05:34:55.69ID:aeqwBJS6
6もしぱらくバグまみれだったし7もバグどんどん見つかっていったし、最新がプリイン入る事は無いと思うな
多分最新の1つ前の最終マイナーバージョン、すなわちもし今なら6の最終バージョンじゃね
2025/07/09(水) 06:17:43.31ID:b3V2Axv4
.NET Frameworkと違って.NET5以降がOSに同梱はないでしょ
MS的に推奨かは知らんが関連するライブラリを標準モジュール含めて全部同梱配布が.NET系アプリのスタンダードになってるし今は

だったらロードさせることのないdllをOS標準で入れる意味も無いし未来永劫Powershell6以降は来ないって半分諦めてるけどね
2025/07/09(水) 17:36:33.28ID:ohpjpVt+
本日はご多忙の中、協力関係者様にお集まりいただきありがとうございます。
powershellは無事5.1で完結いたしました。
powershell第一部・完
6以降はまた別のお話とさせていただきます。
こんな感じ
2025/07/10(木) 00:21:06.24ID:z96em9yx
ps1の1は当時はバージョン名の想定じゃなかったっけ
2025/07/10(木) 07:27:18.57ID:qajreXxd
>>482
バージョンを表しているのは間違いない
ただ言語のメジャーバージョンとファイルフォーマットの互換性を表すバージョンは必ずしも一致しないって扱いなので、もし次に拡張子が変わるときが来るなら.ps2になる
https://devblogs.microsoft.com/powershell/ctp-versioning/
Excelを例に取ると97、2007でそれぞれ内部形式が変わっていて、2007では拡張子も変わっているので、いうなれば.xlsxは.xl3に相当するイメージ(5.0以前は無視した場合)
.ps1は最初はバージョンごとに毎回数字を変えるつもりだったけどやめたって説が巷で主流だけど、コレは公式のソースが見つからなかった
2025/07/10(木) 11:15:28.70ID:DIIl0KYX
microsoftは妙に互換性にこだわるから
拡張子.ps1はpowershellがどんなバージョンになっても変わらないよ
今は拡張子に「バージョンの番号が含まれてます」っていう意味すら意味をなくしていて
ただ単に「.ps1はpowershellスクリプトの拡張子です」ってだけの意味でしかないから
今さら拡張子を新しくするメリットが無い
2025/07/10(木) 11:20:06.12ID:DIIl0KYX
>>484
と思ったけどバージョン5とそれ以降では互換性に問題のある事が多かったなw
そういう誤実行を防止する目的で拡張子を変えるメリットあるかなぁ
2025/07/10(木) 11:55:28.72ID:nn3AKhN3
もうexeにすればいいんじゃねえかな
powershellで作ったかどうかすら判らんし
2025/07/11(金) 21:41:14.58ID:UFItDSPS
https://devblogs.microsoft.com/powershell/ctp-versioning/

PowerShell Scripts continue to use “.PS1”.

We will continue to pursue this approach until there is a major change in the CLR or .NET frameworks which force us to go side-by-side. It is at that point that we’ll go from .PS1 to .PS2 . Until then we will stay with .PS1 and everything that runs today will continue to run in new releases.
2025/07/12(土) 15:57:57.17ID:KKY9VgUr
記事の日付は2007年やぞ
2025/07/14(月) 21:23:18.49ID:54I3beLE
PowerShell6で拡張子を変えなかった時点で
この先も.ps1のままなのはほぼ確定だよね
2025/07/15(火) 01:51:30.33ID:kwekYfOc
俺たちのJeffrey Snoverはもういない、いないんだ…
2025/07/15(火) 14:43:34.46ID:iicdRBcv
コマンドプロンプト使ってる人はたくさんいるけど
powershell使ってる人ここ10年で一度も見たこと無い
492デフォルトの名無しさん
垢版 |
2025/07/15(火) 17:26:35.63ID:J6nh+lbb
>>491
コンソール(の外観)のハナシ?
2025/07/15(火) 17:58:06.00ID:eVgbUR/v
俺も、以下の1行をバッチファイル内に記述して実行する程度の事しかやってないな。

powershell.exe -command ("Write-EventLog -LogName Application -EntryType Information -Source 'WSH' -EventID 0 -Message '(%~f0)_Windows Updateの画面を起動します。'") && start "" ms-settings:windowsupdate

※注1:
Windows7以降で標準搭載されているPowerShell(バージョン2.0以降)で使用可能な「Write-EventLog」コマンドレットは、バージョン6.0以降には搭載されてない。
だがバージョン2.0~5.1いずれかとの互換性が保持されている環境(「$PSVersionTable」変数内の「PSCompatibleVersions」プロパティを参照すれば確認可能)では問題ない。

※注2:
「ms-settings:windowsupdate」コマンドはWindows10~11のみで使用可。
494デフォルトの名無しさん
垢版 |
2025/07/15(火) 17:58:26.26ID:onP4ElKb
Terminalに移行したら分からなくなっちゃったか
2025/07/15(火) 18:07:10.16ID:yseOir/R
気軽にスクリプト実行できないから使い道がない
2025/07/15(火) 20:54:02.36ID:1cN94XmW
本気で言ってるのか
2025/07/15(火) 21:58:24.95ID:ZcYliqlC
弊社はIT企業じゃないし、勝手にPythonを入れたりするとたぶん怒られるので
Windowsに最初から入ってるPowerShellを便利に使ってました
たまに、起動用のbatファイルとPowerShellスクリプトをセットにして同僚に渡すこともありました
2025/07/16(水) 08:58:08.06ID:83bEnGjZ
いい加減ペイント3DみたいにPowerShellのアプローチは失敗でしたと認めちゃばいいのに(´・ω・`)
2025/07/16(水) 12:43:16.16ID:09DhhKQk
もうログインスクリプトにも使われてるから
Windowsの終焉まで逃げ出せないよ
2025/07/16(水) 22:06:02.34ID:5d/ixC+9
PowerShellのどのアプローチが失敗なのか具体的に
2025/07/16(水) 23:17:35.03ID:7/+dohrQ
起動用のbatが必要になっちゃうってのがな
PowerShell単独では使いにくい
2025/07/16(水) 23:57:41.77ID:YcDGevHy
ん?どういうこと?
2025/07/17(木) 00:10:22.13ID:sGHKyXGW
ダブルクリック実行できるようにするために手間がかかる
2025/07/17(木) 00:22:02.88ID:Nf2HlQRn
正直言ってexecutionpolicyの初期値は大失敗だろうなぁ
結局.batか.cmd経由でダブルクリック起動できるんだからマジで無意味
ネットから落としたファイルはzoneidがあるから設定に関係なく警告でるんだし

あとcmdもPowershellもWindowsのオマケであることに価値があるのにPowershell5.1までしか同梱されてないし
505デフォルトの名無しさん
垢版 |
2025/07/17(木) 07:33:01.42ID:1VTmgFuN
もう直接powershell.exeに関連付けしてる
506デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:05:58.12ID:9jYPg0KZ
>>482
それはバージョン1として普及させただけ。

いまとなってはバージョンを表してはいない。
507デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:06:51.20ID:9jYPg0KZ
>>486
それはWindowsしか知らない人間の発想
508デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:08:24.36ID:9jYPg0KZ
>>491
Windowsはターミナルというアプリで統合された。

PowerShellはコマンドプロンプトも含めているので、あなたが気づいていないだけ。
509デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:09:59.60ID:9jYPg0KZ
>>495
実行形式にする必要がない。UNIX、Linuxは実行形式ファイルを嫌う。

ブラックボックス化はやめろ!
510デフォルトの名無しさん
垢版 |
2025/07/17(木) 08:11:35.61ID:9jYPg0KZ
>>501
バッチファイルにする必要もないよ?
バッチファイルなどでラッピングするのはWindowsの使い方のひとつでしかない。
2025/07/17(木) 09:38:35.80ID:+XuQIino
>>506-510
全部元発言者を意図を読み取れてない馬鹿のレス
UNIX使いの印象を悪くするだけなのでやめてくれ
2025/07/17(木) 12:08:51.21ID:uGnrWKuf
powershellは小数点以下のバージョンアップでも毎回互換性を壊す
破壊的変更を入れてくるから普及させる気無いんじゃね
2025/07/17(木) 12:30:14.69ID:l8YWhCPU
実際、6以降は普及させる気無いと思うよ
Azure関連を中心にMS社内で使うために開発続けてるだけでしょ
2025/07/17(木) 21:54:18.35ID:yTEYa8cJ
PowerShellが失敗作じゃないと困る人がいるのは分かった
2025/07/17(木) 22:59:18.52ID:o0/3IwZx
PowerShell自体の出来はともかく、6以降は周辺環境がね
PowerShellは.NETがWindowsの中核として位置付けられていた頃に設計されており、
システムワイドにインストールされた.NETに安定的に依存できることが大前提なのよ
知っての通りその前提は完全に覆されてしまい、存在意義を失おうとしている
2025/07/18(金) 01:15:27.61ID:T97Bau37
知っての通りどころか.net frameworkは今もWindowsと一蓮托生だけど
.netと.net frameworkを分けて書かないと意味不明な文章が出来上がる
2025/07/18(金) 22:16:02.55ID:avd6O0J8
Windows以外で.Netで作られたアプリやサービスなんてあんの?
2025/07/18(金) 22:17:51.22ID:r2egjf+1
pythonで良くない?駄目?
2025/07/19(土) 02:03:44.93ID:QndlLNYI
pwsh.exe
520デフォルトの名無しさん
垢版 |
2025/07/19(土) 08:55:57.75ID:jBcCcJ6x
>>518
Pythonがそこまで言い言語だとは思わないので
2025/07/19(土) 10:16:02.54ID:F2LZk1nd
>>517
ゲームエンジンのUnity
2025/07/19(土) 19:43:58.62ID:PVxrNHN1
>>517
GitHub Actions
2025/07/20(日) 10:33:30.33ID:8UONs9WI
>>515は、元はシステム全体でひとつの.NETフレームワークを使ってPowerShellをCOMに対するWSHポジにするつもりだった、という意味だろうけど
.NETフレームワーク自体最初から複数バージョンを共存させる設計になってるので、果たしてそのような構想はあったのだろうか
2025/07/20(日) 11:36:14.91ID:nDfpIeCg
>>523
5以前のPowerShellはサイドバイサイドに対応していないから、使用される.NET Frameworkは結局一つだけ
2025/07/24(木) 02:44:32.63ID:uw32EQ1Q
>>523
> .NETフレームワーク自体最初から複数バージョンを共存させる設計になってるので、果たしてそのような構想はあったのだろうか
.net frameworkはそんな設計じゃないぞ…
526デフォルトの名無しさん
垢版 |
2025/07/24(木) 18:49:30.39ID:bvlLnJ99
コマンドレットを作ったが中途半端で.NET Frameworkを呼び出せばいいということにしたが、これではPowerShellを作った意味がないとしてPowerShellを拡張していまの混乱状態に至る。
2025/07/24(木) 20:21:14.09ID:3SMUfFNx
PowerShell独自の構文や機能はいらん .Net実行できる部分だけでいい
C#Scriptがほしい
2025/07/24(木) 21:28:50.84ID:Ii6lkj2E
C#コードを単一ファイルでスクリプトのように書ける言語機能が「.NET 10」でテスト中
従来のプロジェクトベースへの変換も簡単
https://forest.watch.impress.co.jp/docs/news/2018094.html
2025/07/24(木) 22:28:33.22ID:qxgm8L3v
powershellのAdd-Typeを使えばC#を実行出来るらしいが
530デフォルトの名無しさん
垢版 |
2025/07/26(土) 11:52:54.27ID:VPjMt5X4
Add-TypeのC#は、Windows API使いたい時、局所的に処理速度を上げたい時によく使う。
2025/07/26(土) 19:50:25.05ID:kldGNMpl
ぜんぜん分からないんですけどAdd-TypeでC#を書くのって
インテリセンスが効かなそうで、ちょっとしんどそうなんですけど
そうでもないんですか
2025/07/26(土) 20:51:36.43ID:eh3q3MEs
PowerShellで使う程度のものなら余裕でバイブコーディングでいけるからどうでもいい
2025/07/26(土) 22:09:50.67ID:kldGNMpl
なるほど
2025/07/27(日) 01:39:44.77ID:sXx2dSLi
もっとc#に近い記法にしてほしかったのになんでそうならなかったんだろう
配列の宣言とかセミコロンがないとか
2025/07/27(日) 05:42:54.86ID:L6p6i+Me
クラスはほぼC#だけど
2025/07/27(日) 08:16:33.47ID:/sb9ajQY
PowerShellは名前の通りシェルだからな
単なるスクリプト言語が欲しいだけならWSH.NET的なものを作ってる
2025/07/27(日) 09:15:11.85ID:zaK1ilRt
今のMSだったらRustあたりで作ったWindows CLIで一通りの管理タスクを一貫したコマンド体系でやれるようにした上で、
スクリプトはbashでもPythonでも何でも好きなの使えみたいにしてるだろうね
今となってはPowerShellはバルマー時代の古き悪きMSを象徴する遺産の一つ
2025/07/28(月) 09:16:16.29ID:BMbzFeOA
最初はbashの採用を検討してたけどWindowsには向かないって分かったからわざわざPowerShellを作ったんだが

https://x.com/jsnover/status/976904848162435072
2025/07/28(月) 10:39:54.16ID:dloezDzP
>>538
その理由はファイル指向のUNIXと違ってWindowsはAPI指向だからとJeffreyは述べてるんだけど、
一方でUNIX的なシェルで扱うのに適したCLIコマンドを整備するという方向もありえて、
実際MSがPowerShellにベットする以前はWMICのようにラッパーとしてCLIコマンドを整備していく方針だったんだよ
ただ、その方向で進む限りWindows上でのコマンドラインシェルは特殊なラッパーに依存することになり、決してWindowsスタックにおける主流になり得ない
そこで当時Windowsの新たな中核技術として喧伝されていた.NETプラットフォームに乗ることで、
MS社内にサービスしつつ一気にWindowsでのコマンドラインシェルを主流に押し上げようとしたわけだね
で現状はというと、肝心の.NETが主流から外されちゃって、PowerShellは一般のアプリの一つになっちゃいました(いまここ
2025/07/28(月) 11:02:51.49ID:dloezDzP
あと、現状について周辺の情勢も踏まえると、CLIを使ってAPI指向のプラットフォームを管理するスタイルはPowerShell 初期開発の当時と比較して遥かに市民権を得ているといえる
それはひとえにクラウドによるもので、現在ではクラウドプラットフォームのAPIをCLIを使って操作することは普通に行われており、しかもその多くはJeffreyの懸念に反して旧来のUNIXシェルを使用している
この現状を踏まえて今Windowsのコマンドライン管理を再考するとすれば、PowerShellのようなものが生まれる可能性は低いといえる
2025/07/28(月) 17:29:52.01ID:CQsGHQXP
Windowsは(少なくともOLE〜.NET全盛期の頃のWindowsは)APIもオブジェクト指向する方向性だったので
それを操作するスクリプト言語もCOMオブジェクトや.NETオブジェクトを長期保持できなければいけない
単発で終了するCLIコマンドを揃えてもだめだろう
542デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:14:24.95ID:7Fge/X80
おっさんエンジニアが全然使わないから無理だわ
543デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:32:06.85ID:K95kqw+R
>>528
それだとVBScriptの二の舞
544デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:33:30.80ID:K95kqw+R
>>534
そこがマイクロソフトの変なところ
いろんなプログラミング言語を研究して最良のものを作ったというのが当初の売り文句だった
545デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:34:24.66ID:K95kqw+R
>>538
それはプライドが許さなかっただけ
546デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:35:04.74ID:K95kqw+R
>>538
グーグルおじさんじゃねえか
547デフォルトの名無しさん
垢版 |
2025/07/28(月) 19:37:29.63ID:K95kqw+R
>>541
WindowsはWindows SDK開発がC言語でもC++でもいいというところから始まったせいで、形だけオブジェクト指向のC++が基本になってしまった。
2025/07/28(月) 20:23:32.91ID:0zFGFjxD
後発だからいろんな言語を参考にできるという強みがある一方で
Windowsのシェルスクリプトという世界最大級のしがらみのもと
あらゆるステークホルダーが全方位から好き勝手なことを言い
無数の歴史的経緯を踏まえつつデザインしないといけない無理ゲーなプロジェクト
変なクセが多い言語だけど苦労が偲ばれるからあまり文句を言う気にはなれない
2025/07/28(月) 20:35:24.51ID:n+5V5/p3
CとB-Shellが混じったような半端な記法
2025/07/28(月) 21:11:45.32ID:s3rviGhL
今なら普通にTypeScriptになるだろうね
2025/07/28(月) 21:57:11.64ID:pEErs1kG
bat埋込み技法とAdd-Typeでcsスクリプト化したった
スクリプトのくせに起動が遅いのが不満
2025/07/29(火) 08:49:01.81ID:zbO0uIbs
パイプにバイナリが流せるようになったPowerShell 7.4 からは使える子になった
553デフォルトの名無しさん
垢版 |
2025/07/29(火) 12:01:37.45ID:0YhddUmf
VBSもなんやかんや生き続けると思ったけどOSとしてサポート終了となれば話しは別やな
2025/07/29(火) 14:11:31.33ID:/sYzcWbW
>>552
パイプにバイナリ通せるつって1バイトずつbyteで送られてきても困るんだが
実際のとこどうなっとんの
555デフォルトの名無しさん
垢版 |
2025/07/29(火) 17:07:26.34ID:HrDR44lc
コマンド間にControl-Streamかまして調整する
2025/07/29(火) 21:53:14.21ID:J2wyXy1Z
>>550
.NET対応のスクリプト言語なら静的型付けなJScript.NETが前からあるんだから
TypeScriptなんて中途半端な言語はいらない

Introducing JScript .NET
https://learn.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/scripting-articles/ms974588(v=msdn.10)
2025/07/31(木) 08:21:16.74ID:y/q8ihDv
Windows PowerShell って

python3 -c 'print("hoge")'

とか

curl なんちゃら | tar かんちゃら

すらできないのに cmd.ехе にとってかわろうなんて無理筋にもほどがある
この辺だけでも PowerShell から持ってくればいいのに
2025/07/31(木) 11:23:28.67ID:+PK2lVhx
もう諦めてWSLでbash使えばいい
2025/07/31(木) 13:18:34.83ID:cbQ+pPIq
>>557
互換性が無いのにデフォルトのAliasでcurlがInvoke-Webrequestになってるの酷い
2025/07/31(木) 22:32:58.67ID:H5u1AeiS
bashでは駄目だからわざわざPowerShellを作ったのにbash使えばいいとか意味不明すぎ
2025/08/01(金) 00:05:22.62ID:2FKaw99x
curlがエイリアスって件だけは俺も擁護できない
あの罠は誰もが一度は引っかかる
2025/08/01(金) 07:56:40.22ID:z02NetRk
>>560
PowerShellはWindowsの管理のために作られたもので、その用途においてbashは不向きだといっているのであり、
君が示したようなWindows管理と無関係なケースでbashより推奨されているわけではない
加えて現在ではWSLという完全なUNIX環境がWindows上でシームレスに使用できるのだから、もはやPowerShellの役割は上記の通り極めて限定的になっている
一点だけ汎用シェルとしてのPowerShellの特徴として構造化データに強いというのがあるが、それだけならNushellとかの方が遥かに使いやすいよ
2025/08/01(金) 08:52:42.59ID:TWGrPtc3
>>557 の二つの例は PowerShell では問題なく実行できる
・ Windows のデフォルトコマンドラインシェルは Windows PowerShell

過去のしがらみで PowerShell をデフォルトにできないなら
Windows PowwerShell に >>557 が実行できるように機能追加するべき
Experimental feature として必要に応じで Enable できるように

とにかく今の Windows PowerShell がデフォルトってのが最悪
2025/08/01(金) 09:31:11.55ID:ciUSYvyR
・一部の人は「PowerShell」と「Windows PowerShell」を分けて考えている
バックポートしろって話ならできるのでは
公式がやるかどうかはともかく
565デフォルトの名無しさん
垢版 |
2025/08/03(日) 20:29:44.07ID:kVKBj15M
C#と同じでWindowsだけのものはバージョンが古いものだけ

単にPowerShellと呼んでいるのは、WindowsとLinuxとMacOSで動く製品だからだ。
566デフォルトの名無しさん
垢版 |
2025/08/13(水) 10:09:50.25ID:lyLUlfa6
>>562
wslでpwsh使おうって方向性じゃないの?
chshするとwinとシームレスで快適だぞ
別にchshしなくてもホストのwin上リモートで繋げるしwslとの相性バツグン
2025/08/13(水) 14:33:52.76ID:BMYIv7Jv
PowerShell 2.0 removal from Windows
https://support.microsoft.com/en-us/help/5065506

PowerShell 2.0 will be removed in a later release starting in August 2025 for Windows 11, version 24H2 and a September 2025 release for Windows Server 2025. All later releases for Windows 11 and Windows Server 2025 will not include PowerShell 2.0.
2025/08/13(水) 16:04:08.55ID:VzGNLP/v
.NET 10では「dotnet run」で.csファイルをそのままスクリプトとして実行できるようになるっぽい(要.NET SDK)
実行時にビルトされる点はこれまでと変化ないけど、ビルド成果物が一時フォルダに吐かれる?のか、.csファイルの場所が散らかることがなくなってスクリプト的に扱えるように

実行時のオーバーヘッドは...PowerShellと大差ない模様
569デフォルトの名無しさん
垢版 |
2025/08/13(水) 18:30:43.34ID:vtzVqfUP
Pythonを検索してもファイルが見つかりませんとなります。
誰かどうすればいいか分かりますか?
2025/08/14(木) 00:36:43.33ID:9QEKXUa7
日本語でおk
2025/08/14(木) 07:06:36.79ID:jDrEWEUc
7をインストールしたけどエラー吐く時に黒背景に赤文字ってどうにかならん?くっそ見にくい
2025/08/14(木) 09:27:10.03ID:Do/BXbHP
じゃあそれ夏休みの宿題な
2025/08/14(木) 09:54:56.24ID:vhNMb463
$PSStyle.Formatting.Errorを変更する

about_ANSI_Terminals
https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_ansi_terminals
574デフォルトの名無しさん
垢版 |
2025/08/14(木) 18:59:18.68ID:eBuFE50k
厨二シェル
2025/08/15(金) 21:38:08.69ID:QOcfL0u7
UNIXシェルが?
2025/08/17(日) 04:08:48.96ID:TBSqwQ7N
powershellってコマンドがいちいち長ったらしくて打つのダルいんだよな
shellみたいに2文字3文字の略称で何の意味かわからんコマンドも学習するのに困るけど
2025/08/17(日) 05:22:57.26ID:X86RYV3a
それな
2025/08/17(日) 12:37:42.26ID:B434g2i0
PowerShellのAdd-Typeでc#が書けるとよろこんだもののpowershell.exeの起動がクソ遅くcscでコンパイルする方が速い
なにやってんのコレ
579デフォルトの名無しさん
垢版 |
2025/08/17(日) 13:12:08.30ID:jIhEo17k
エイリアス使え
580デフォルトの名無しさん
垢版 |
2025/08/17(日) 13:29:34.64ID:dA3TcCkL
ps1ファイルって暗号化とまでは行かなくとも難読化くらいはできねーの?
2025/08/17(日) 15:36:02.04ID:DpVlhT9Y
正規表現の検索パターン内で変数配列を使いたいが角括弧のせいで動かない
エスケープの方法を教えてほしい

行末に一致させたいとして
-Pattern "$aryr[5]$" #ng
-Pattern "$arry`[5`]$" #ng
-Pattern "$aryr\[5\]$" #ng
-Pattern ($arry[5] + "$") #ok 美しくない
2025/08/17(日) 16:37:39.55ID:CNACV2eM
コレじゃダメなんだっけ?

"$($arry[5])$"
2025/08/17(日) 20:58:20.47ID:DpVlhT9Y
>>582
動いた
ありがとう!
2025/08/17(日) 21:28:17.56ID:jRtquIfz
>>578
DLL化してPowerShelllで読み込む

PowerShell使わずに済むならC#だけでもいいと思うけど
585デフォルトの名無しさん
垢版 |
2025/08/18(月) 19:07:51.36ID:zdocw/KA
これが好み
'{0}$' -f $array[5]
2025/08/18(月) 20:04:20.41ID:Pa7e5Gs8
キモい記法だな
587デフォルトの名無しさん
垢版 |
2025/08/18(月) 21:29:02.39ID:Ydgj3IKT
-gt -ge -lt -leが覚えられないんだが
なんでこんなクソ記法にしたん?
2025/08/18(月) 21:38:20.35ID:FxxqvCUB
UNIXのshの記法だよ
どうせ非互換なんだからそんなとこだけ合わせんでもいいのにな

ちな実際に使われてるbashやzshでは拡張構文があるのでそんな書き方はしなくていい
2025/08/18(月) 21:49:57.69ID:1syDG9J2
gt → greater than
ge → greater than equal
lt → less than
le → less than equal
覚えられないことは無いだろ
2025/08/18(月) 22:27:56.29ID:KSZiSj98
shは条件判定が外部コマンド( /usr/bin/[ )になってるからリダイレクトで使う不等号を使えなかったんかな
2025/08/18(月) 23:44:31.03ID:a/rWUBXI
リダイレクト記号の > が大なりと判定されたらされたでキレる奴はたくさんいるし、文脈で判断すると難しいと不満を漏らす
gt や lt は天下のHTMLやXMLでもお馴染みだし ge も含めて ALGOL や Fortrun の時代からあるらしいから由緒ある演算子サマだ
2025/08/19(火) 00:24:31.91ID:Idn/vjK6
コマンドのワンライナーでも動かないとダメだしパイプやリダイレクトとも共存しないとダメってなると文法自体が分かりづらくなるのはやむなし
c#のスクリプト版みたいに思われてるけど本来そういうものじゃない
593デフォルトの名無しさん
垢版 |
2025/08/19(火) 19:46:40.89ID:0LMCTzzK
>>589
やめてやれよ!
2025/08/20(水) 07:51:25.99ID:M8TEndqZ
結論 コマンドプロンプトでいい
595デフォルトの名無しさん
垢版 |
2025/08/20(水) 09:46:38.94ID:fQ+KVP3R
コード書くにはメモ帳で十分みたいなこと言うね
2025/08/20(水) 11:21:33.79ID:wDjB3YqX
老人は新しいことを覚えるよりも古い道具のハック含めていろいろ知ってるからね
2025/08/20(水) 11:56:14.66ID:Xf/p3Qkz
こういう立ち止まってくれる人達がいるから相対的に新しい技術にキャッチアップする若者がひきたつんだよな
感謝です
2025/08/20(水) 13:09:09.63ID:eox7iA6W
立ち止まって深掘りするのもいいけど、立ち止まるなら立ち止まる土地を間違えないことが大事
10年前からWindows Serverの設定職人として立ち止まった人とAWS職人として立ち止まった人なら、同じ苦労をしても圧倒的に後者の方が現在の価値は高いわけで
2025/09/05(金) 00:20:11.88ID:MID+NCuc
同じプロジェクトで未だにスクリプトをbatで頑張るおじさんがいてキツイ
2025/09/05(金) 08:27:44.85ID:ci6Mzi4c
batなんかどうせ大して複雑なことできないんだから実害はほとんどない
むしろPowerShellで何でもやろうとするおじさんのほうが潜在的には問題になりやすい
というかbatおじさんが現役で活躍できるような職場でPowerShellやってんならお前も側から見りゃ大差ないから嫌ならさっさと転職しろ
2025/09/05(金) 12:35:07.92ID:Gl7iryF4
まあbatというかcmdのほうがド安定だよな
PowerShellはバージョンアップで動作が変わったりするので書いた本人がいなくなったあと困るんじゃないか
2025/09/05(金) 13:24:51.33ID:/aSZPCtW
AIがあるから困らない
2025/09/05(金) 15:17:33.01ID:D2PHAyAe
batおじさんワラワラ湧いてて草
2025/09/05(金) 22:20:18.61ID:Yt4Zwm1N
batの弱点は特殊文字のエスケープ処理がバラバラだったりそもそもエスケープできなかったり
605デフォルトの名無しさん
垢版 |
2025/09/05(金) 22:29:13.57ID:OEkVQg6g
>>604
昭和50年代のパソコン向けに作ったものに文句を言うな!
606デフォルトの名無しさん
垢版 |
2025/09/05(金) 23:27:31.40ID:5dsIw3pX
cmdの方が優れてるよ
2025/09/06(土) 04:14:29.73ID:ynW6i2Wh
batが現役なの?
ヤバw
2025/09/06(土) 08:28:06.76ID:aRqXD+gf
.batと.cmdの違いがいまだに分からん
わざわざ新しい拡張子を作るなら分かりやすい構文でも導入すればよかったのに
このスレで言う事じゃないけど
2025/09/06(土) 08:32:48.89ID:4EdO9DqN
>>470
今更だが、環境変数PSModulePathの並び順で旧ver用を下にしたら直った
2025/09/06(土) 13:36:28.33ID:5qDTqjrD
>>594で結論出てるじゃん
611デフォルトの名無しさん
垢版 |
2025/09/07(日) 09:38:44.50ID:lhUzQ3fL
HTMLのリンク先がリダイレクトされる場合、自動でそのリダイレクト先のURLを取得するにはどのような方法がいいでしょうか?
$response = Invoke-WebRequest -Uri 壊れたリンク -MaximumRedirection 5 -ErrorAction SilentlyContinue
$location = $response.Headers['Location']
を試しているのですが、リダイレクト先のURLは取得できませんでした。

HTMLのリンク先は下記のとおりに取得してます。
$srcHtml = Invoke-WebRequest $url -UseBasicParsing
$html = New-Object -ComObject "HTMLFile"
$img = $html.getElementById("img").getAttribute("src")
2025/09/07(日) 21:42:00.61ID:QSfkLFkm
-MaximumRedirection の値を5から0に変える

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/invoke-webrequest#-maximumredirection

-MaximumRedirection
接続が失敗するまでに、PowerShell が代替 Uniform Resource Identifier (URI) に接続をリダイレクトする回数を指定します。 既定値は 5 です。 値が 0 (ゼロ) の場合、すべてのリダイレクトが禁止されます。
613デフォルトの名無しさん
垢版 |
2025/09/11(木) 20:02:03.10ID:4eE1ZwVF
V7.4.12とV7.5.3が出ました。
2025/09/12(金) 08:06:46.54ID:tXxo6/Yo
マジカルちんぽの持ち主になりたい
615デフォルトの名無しさん
垢版 |
2025/09/13(土) 09:54:11.18ID:TD1k3ZCB
俺も!
2025/10/03(金) 00:50:10.33ID:cCuQP3el
transcriptってログ取るのにめちゃくちゃ便利ですね
今までログ出力ゴリゴリ書いちゃってたけどもっと早く知りたかった
617デフォルトの名無しさん
垢版 |
2025/10/03(金) 09:18:17.43ID:alJoLTal
bashだったらscriptコマンドで苦労しなかったのに
2025/10/04(土) 15:26:39.76ID:lUW04DD1
そう思う人が何でこのスレに来るの?
一人で勝手にbashでオナニーしてればいいだけでしょ
2025/10/04(土) 21:22:40.46ID:TzWBzZl4
まぁまぁそんないじめなさんな
620デフォルトの名無しさん
垢版 |
2025/10/12(日) 01:42:26.66ID:DKsy7+ZR
scriptとか使わんでも
たぶん標準、だったかな?
でpsのセッションはすべて保存されてるとおもうが…
621デフォルトの名無しさん
垢版 |
2025/10/12(日) 01:55:12.70ID:DKsy7+ZR
ごめん今$profileみたらStart-Transcriptを自動で呼ぶようにしてて、標準ではたぶんアクティベートはされてないわ
Start-Transcriptコマンドレットが>>617のいうtclのscript(b系shで代わりによく使われるヤツ)の上位互換だよ

tclのscriptやpwshのStart-Transcriptは普段から使っておくべき
ログが膨れ上がるから、無駄なタイプアウトを控える良い癖がつく、すなわち後から振り返り難くないよう、セッションのログを汚さないようにとslsやページャに頼るようになるということだ
622デフォルトの名無しさん
垢版 |
2025/10/12(日) 02:00:35.65ID:DKsy7+ZR
transcriptしてれば、脳死gci連打したりと恥ずかしい思いを避けるように、毎回熟慮したスマートなコマンドを構築しようとスキルアップへ向かえるわけですよ
オススメ
623デフォルトの名無しさん
垢版 |
2025/10/14(火) 10:05:34.66ID:wYGHc35C
困ってます。ps1をショートカットで簡単に開けなくなりました。
Powershellを楽に実行してもらうには
https://qiita.com/tomoko523/items/df8e384d32a377381ef9
↑これを参考にして、
ps1ファイルのショートカットを作って、プロパティのリンクに、
powershell -ExecutionPolicy RemoteSigned -File
という文字列を最初にをつけるというのをやりました。

powershell -ExecutionPolicy RemoteSigned -File C:\Users\User\Desktop\test.ps1
みたいな感じになる。
それでショートカットのダブルクリックでps1ファイルが開けてた。

でも、しばらくすると、新しくショートカット作ったらダブルクリックでできなくなった
というか、ショートカットのリンクに
powershell -ExecutionPolicy RemoteSigned -Fileの文字列を貼り付けたら、okを押せなくなった。
エラーメッセージが出て。
で、前に作ったやつはダブルクリックでできたので、それを開いて確認したら、
powershell -ExecutionPolicy RemoteSigned -Fileの
powershellの部分が
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
に勝手に書き換わってた。

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
-ExecutionPolicy RemoteSigned -File C:\Users\User\Desktop\test.ps1 みたいな感じ

たぶん、できなくなる前後くらいに、windows powershell v5.xしかなかった環境に
powershell v7.xをインストールしたからだと思う
powershellって文字列で、自動でwindows powershell v5と連携できてたのが、
powershell v7を入れたせいで、環境変数?とかが変わったのか、よくわからないけど
自動で連携できなくなったのかな。
で、前のやつは、いつのタイミングか、powershellの文字列が、windows p.s. v5へのパスに変わってたんだと思う。
powershell の文字列で、ショートカットのリンクに文字列入れてやる方法ないでしょうか?
624623
垢版 |
2025/10/14(火) 10:13:14.09ID:mzx6xthf
[Window Title]
ショートカット エラー

[Content]
受け側に指定されたパス名 'powershell' は無効です。パスとファイル名が正しいか確認してください。


エラーメッセージはこれです
でも、はじめはps1のショートカットで
リンクの文字列を追加するときは
powershell~だけで
powershellへのフルパスがなくてもok押せて、ダブルクリックで起動できてたんですよね

なにかpowershellの文字列だけで
v5やv7を自動で起動できるように設定する方法とかわからないでしょうか?
2025/10/14(火) 10:46:54.11ID:kTH6cc0X
powershell7を入れるとpowershell5とは違うパスにインストールされて
powershell => v5
pwsh => v7
という具合に使い分けができる
powershellが呼べないなら
そのパスにpowershell.exeが無いのかもしれない
> 受け側に指定されたパス名 'powershell' は無効です。
というエラーがそれを裏付けてると思う
まずはv5の本体があることを確認するべき
バージョンアップした感覚で
自分で「古いv5はいらないからアンインストールしちゃお」としてるかもねw
2025/10/18(土) 01:00:25.12ID:ziLvdPa/
>>623
>powershellの部分が
>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
>に勝手に書き換わってた。
これは正しい動作

現在、動くショートカットが有るならば、v5は消されていない
ps1ファイルのショートカットを作成した直後ののアイコンと
プロパティに「powershell以下略」を追記したショートカットでは
アイコンが変化する。変化してるならリンクは正しい

正常動作するショートカットのリンク先をコピーしてメモ帳に張り付けて
新しく作りたいリンク先を見比べながら書いたらどう?
627デフォルトの名無しさん
垢版 |
2025/10/20(月) 16:54:33.98ID:h3FEiN7d
ショートカットの文法はcmdともなんか違ってて謎が謎を呼ぶ闇
628デフォルトの名無しさん
垢版 |
2025/10/21(火) 05:46:20.22ID:P/yrOpCN
Z7.4.13とV7.5.4出ました。
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.1
https://github.com/PowerShell/PowerShell/releases/tag/v7.5.4
629デフォルトの名無しさん
垢版 |
2025/10/21(火) 05:46:43.72ID:P/yrOpCN
7.4.13
https://github.com/PowerShell/PowerShell/releases/tag/v7.4.13
630デフォルトの名無しさん
垢版 |
2025/10/21(火) 22:17:43.72ID:5krLOdY4
ショートカットの文法ってのがコマンドラインパラメータの事を言ってるなら
別プログラムなんだからcmdと違っても普通でしょ? 何が謎なの?
2025/10/27(月) 23:10:58.60ID:JqegERzu
自分も似たようなこと(カスタムURLスキーム経由で登録済みバイナリにメッセージを送信)をしてたけど、これはかなり丁寧にパッケージングされてる
GitHub - Fred-Vatin/run-yt-dlp-from-browser: Run yt-dlp commands from any browsers
https://github.com/Fred-Vatin/run-yt-dlp-from-browser
632デフォルトの名無しさん
垢版 |
2025/11/01(土) 07:47:46.11ID:f9BTIAf7
何もしてないけど PowerShell v7.5.4 が WindowsUpdate で降ってきた
履歴ちゃんとみたらいつまにか PowerShell って WindowsUpdate で降ってくるようになってたわ
633デフォルトの名無しさん
垢版 |
2025/11/02(日) 18:28:28.27ID:SCfEy8Hn
バナーで更新通知見かけてもwinget updateで更新できなくてそのうちWindows Updateで更新されてる
2025/11/02(日) 22:12:18.83ID:BJEeTNbw
ターミナルでタブを移動しようとしたら消しちゃって泣きを見たのでタブを縦に並べられるtabbyを使ってる
地味に便利
635デフォルトの名無しさん
垢版 |
2025/11/04(火) 22:05:10.67ID:s16lpjGn
Tver のサイトで特定のドラマのページを開いたときに右上に表示されている最新話のURLを取得したいんですが知識がなくてさっぱり・・・
例えばちょっとだけエスパーの
https://tver.jp/series/srm706pd6g
で右上に表示されているエピソードを再生のURLをとりたいのですがソースを表示するとどこにもない
2025/11/05(水) 00:15:01.45ID:R4zLjHDf
このスレで聞くことか?
2025/11/05(水) 00:19:16.72ID:bd8fkRgq
PowerShellの質問ではないわな
2025/11/05(水) 03:58:33.49ID:79mqo3N4
>>635
ソースで見ると表示されないのはJavaScriptで生成されてるからで、素のHTMLには書かれてないんだよ
ブラウザでエピソードを再生を右クリックして「検証」とか「調査」っていうメニューで確認できるよ
使っているブラウザのスレで開発ツールの使い方を教えてもらうか、ChatGPTに聞くのが分かりやすいと思う

ChatGPTにuserscriptを作ってもらうか、どうしてもPowershellでやりたいならapiを叩いたらどう?
ttps://pastebin.com/paBznTfW
これもChatGPTに教えてもらうと良いよ(↑のもChatGPTが作ってくれた)
639デフォルトの名無しさん
垢版 |
2025/11/05(水) 18:41:39.53ID:VnEpJmCQ
>>638
ありがとうございます!!!
もっと精進します
2025/11/06(木) 20:55:27.46ID:ra3gomFv
PowerShell に関するお問い合わせ時の留意事項
https://jpwinsup.github.io/blog/2025/11/06/UserInterfaceAndApps/PowerShell/PowerShell-SupportGuidlines/
2025/11/09(日) 01:50:45.56ID:/5rAS6BZ
>>640
>なお、 .NET Framework や Win32 API は、C#/VB#/C++/C といったプログラム言語からのご利用を目的として提供している機能になり、動作確認もこれらの言語で行っていただくことをお願いしております。
>また、これらの言語で正常に動作しながらも、PowerShell 上で期待通りの動作とならない場合は、プログラミング言語のご利用をお願いしておりますことをご留意ください。

あれれ?
PowerShellでたての頃って.netのオブジェクト使えるの売りにしてなかったかな?
2025/11/09(日) 09:43:41.33ID:9rrS+2ZK
最近の.NETは言語非依存を放棄してるからな
例えばSpanはPowerShellから使えない

Question about System.Span
https://github.com/PowerShell/PowerShell/issues/5897
2025/11/09(日) 10:23:37.05ID:VPZLG56/
.NET Frameworkって書いてあるからCore系の.NETは関係ないでしょ。Core系もサポートの方針は同じだろうけど。
PowerShell6以降のユーザーなんて5に比べりゃほとんどいないだろうし、
わざわざ6以降使ってる人はそんなに変な問い合わせしてこないだろうからサポート的にはあまり問題にならないんだろう
2025/11/18(火) 00:02:06.52ID:mC1Jcub0
c#14でファイルベースでスクリプトライクに書けるようになった
もうpowershellはオワコン!
645デフォルトの名無しさん
垢版 |
2025/11/18(火) 17:30:44.99ID:d9hs+rsN
それパイプは直感的に書けるか?
レスを投稿する

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

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