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が立ててね!!
148デフォルトの名無しさん
垢版 |
2024/03/16(土) 23:37:28.12ID:5O1O3AvE
>>147
複式簿記というものを知らないのがバレているぞ
149140
垢版 |
2024/03/17(日) 01:43:19.61ID:02imyFwJ
複式簿記の自作なんて無理。
テーブル数も、100 ぐらい行きそう

総勘定元帳とか、複数のテーブルを紐付けしないといけないから、
プログラムがめちゃめちゃ複雑。
これは有料の会計ソフトを使うべき

自作では、単純な単式簿記しかできない

Ruby のCSV Table や、データベースを使うなら、Ruby on Rails とか。
Railsなら、3大データベースに対応している

参照、>>140
2024/03/17(日) 10:50:03.64ID:b6WSYS3s
Rubyガイジってどこにでもわくんだな
トコジラミ並み
2024/03/19(火) 02:21:32.51ID:ilfn8WqH
>>97
Ruby のCSV.Table で作ってみた

https://paiza.io/projects/7dyw8_lDWimUANwD5E5GSw?language=ruby
2024/03/19(火) 13:20:31.92ID:xCYlYIv4
このスレは

PowerShell -Part 7

です
2024/04/05(金) 00:59:22.85ID:VnIedoxP
Set-ExecutionPolicyとSudoって何が違うん?
とあるps1ファイルを実行する時にそのプロセスだけ実行ポリシーを変更するSet-ExecutionPolicy -ExecutionPolicy Bypass -Scope Processを実行後にxxx.ps1を実行してるんだが
Sudoが実装されたし楽ちんになるなとSudo xxx.ps1を入力するとエラーになる
どっちも一時的にパーミッションを変更してアクセス権限を付与するコマンドだと思うんだが何が違うんだ?
154デフォルトの名無しさん
垢版 |
2024/04/05(金) 01:03:46.96ID:Lw8p7kTG
窓の杜のニュース記事だけど、ここの情報参考になる?
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1579041.html
155デフォルトの名無しさん
垢版 |
2024/04/05(金) 01:55:57.21ID:3ECyzj96
>>153
そもそもいつからあなたのなかでは、ps1ファイルが実行形式ファイルになったのか?
2024/04/05(金) 20:13:09.22ID:Uri/y4c1
Powershell コンソールで、xxx.ps1 とするとエラーになる!

パス付きで、./xxx.ps1, .\xxx.ps1 か、
powershell ./xxx.ps1, powershell .\xxx.ps1 なら実行できる
157デフォルトの名無しさん
垢版 |
2024/04/06(土) 01:56:00.53ID:q9eV9Q7I
だいたい間違って実行してしまわないような仕様にしたのがわからない世代がいるのか

ダブルクリックのような感覚で簡単実行なんてUACすら邪魔だと思ってんのかな?

自分で作って自分かミスして自分だけの問題で終わるならかまわないが、そんな趣味でPowerShellを使っている人間なんてほとんどいないと思う。
158デフォルトの名無しさん
垢版 |
2024/04/06(土) 01:58:23.66ID:q9eV9Q7I
コマンドレベルまで作り込んでテストされつくされているものと、自作のスクリプトをPATHに設定してどこからでも実行できるものが同列とはおそろしいな
2024/04/06(土) 02:15:20.68ID:9cPJ1AnL
vscodeのターミナルと、windowsターミナルで同じpowershellでも認識できるコマンドが違うのなんでだろ
プロファイル見るとそれぞれ同じpowershellのexe参照してるのに
160デフォルトの名無しさん
垢版 |
2024/04/06(土) 02:50:42.29ID:q9eV9Q7I
>>159
VSCodeはWindowsの一部じゃないぞ?

VSCodeアプリケーションは、同じような動きと結果をマネているだけで、エミュレーションのようなことをしているのだから、完全に同じようにするのは困難。
2024/04/06(土) 02:58:46.88ID:Zc90rRma
大体ps1の1って何なのとか
vbsやcmdやらがそのまま実行できるのにps1だけ半端に縛るのもおかしな話だし
>間違って実行してしまわないような仕様
こんなのいつ決まったんだ
MSでポリシーが統一されてるようには全く思えないんだが
2024/04/06(土) 07:02:00.61ID:jPXaIytz
世を取り巻くセキュリティ事情が日々刻々と変わっているのにかなり先発のvbsやcmdと同じじゃないからおかしいとな
少なくともある程度シェアを占める見込みがあるのだし前例踏襲に固執して0か100か思考に陥るほうがまずい
そういう脊髄反射的な他責や論点ずらしの癖は周囲を白眼視させるだけじゃよ
2024/04/06(土) 07:25:25.77ID:6zl9Uxmg
>>161
>>間違って実行してしまわないような仕様
>こんなのいつ決まったんだ
powershellが出たばかりの頃に中の人が言ってたよ
2024/04/06(土) 08:19:52.54ID:NGHFFTyQ
>大体ps1の1って何なのとか

バージョン1の事
元々の計画ではPowerShell2向けのスクリプトファイルは.ps2にするつもりだった
2024/04/06(土) 15:04:28.66ID:M3AJuz+l
拡張子にバージョン含めるアホは初めて見たかも
Windowsの技術者の発想ではないね
Powershellはこの拡張子含めて起動周りだけ残念
2024/04/06(土) 20:16:29.68ID:qfnATLfz
まぁMSはOSも言語も開発環境も既に人気もなく寿命もつきようとしてるから
Windows最後の砦だったゲームもValveがProtonとSteam OS作ったからLinuxでほぼすべてのゲームが動いてパフォーマンスもWindowsより良い場合もある
ただしあくまでエミュレートだからカーネルモードで動くアンチチートだけは動かなくてフォトナやヴァロやApexなんかの人気FPSが動かなかったり永久BAN対象になる
まぁこれも時間の問題でWindowsが必要とされなくなるのは間近だな
2024/04/06(土) 20:56:33.00ID:9cPJ1AnL
いるよねこういう極論振り回す人
脳内で完結してるから聞く耳を持たない
2024/04/07(日) 09:15:27.80ID:nb2SxK5J
プログラマに限らずIT界隈はMS批判するのがカッコいいと勘違いしてる人多いからね
169デフォルトの名無しさん
垢版 |
2024/04/07(日) 10:22:00.29ID:K0Taf7XF
>>165
まあ、マイクロソフトだから、拡張子を3文字にする慣習が伝統的にあるせいかな。
170デフォルトの名無しさん
垢版 |
2024/04/07(日) 10:23:05.93ID:K0Taf7XF
>>167
いまでもシェアのほとんどがWindowsなのにね
2024/04/08(月) 21:40:31.39ID:bL5gAXu8
PowerShell の ps1 ファイルは 何故 1なのか
https://tech.guitarrapc.com/entry/2013/09/06/220944
2024/04/09(火) 00:15:02.63ID:32z8iBj9
powershell 7.xってどういう立ち位置なんだろ
windows標準では入ってないから、開発者向けなのかな
Rubookは7.2が標準だけど
2024/04/09(火) 03:22:25.95ID:Gy4/KbO3
PowerShell Core(6.0以降) では
・.NET Coreインストール可能なWindows以外のOSでも実行可能
・デフォルト文字コードがUTF8(BOMなし)、改行がLF
・WorkFlowなど機能の一部は使用不可

あと
WindowsPowerShell → PowerShell Coreで破壊的変更あり(PowerShell Core 破壊的変更でBingってください)

C#のソースを流用する場合ジェネリックが使える7.3が便利かなと思います

自分は未だPowerShell Coreに移行出来ていません
2024/04/09(火) 20:15:01.39ID:ru6IFaGR
>>172
解釈はまかせるけど技術ブログでは以下の記載がある
https://devblogs.microsoft.com/powershell/powershell-openssh-team-investments-for-2023/
> As a reminder, PowerShell 7 is built on the latest .NET which does not have the same support lifecycle as Windows. We can’t ship something as a feature in Windows that does not align with Windows’ support lifecycle.
2024/04/09(火) 21:52:45.57ID:yR8KPsJp
用がないなら関わる必要ないんじゃね
OSに標準で入ってる事しかメリット無いんだし
176デフォルトの名無しさん
垢版 |
2024/04/13(土) 22:49:21.10ID:7ey9vG0h
SJISで出力しようとするとエラーで怒られるのはなんでなんですか
仕方がないのでnkf -s --overwriteでしのいでるんですが

うまくいく
>dir | Out-File -Encoding 'utf8' output.txt

どちらもエラーが出る
>dir | Out-File -Encoding 'shift-jif' output.txt
>dir | Out-File -Encoding [System.Text.Encoding]::GetEncoding('shift-jis') output.txt

Out-File : パラメーター 'Encoding の引数を確認できません。引数 "[System.Text.Encoding]::GetEncoding
" は、ValidateSet 属性で指定されたセット "unknown,string,unicode,bigendianunicode,utf8,utf7,
utf32,ascii,default,oem" に属していません。このセットの引数を指定して、コマンドを再度実行してください。
2024/04/13(土) 22:51:19.83ID:7ey9vG0h
shift-jifになってますがjisでもちゃんとエラーになります
2024/04/13(土) 22:52:54.00ID:OrtqC7Lq
コマンドレットの引数と.NETのそれを混同してるのでは
-Encoding Defaultでしょ
2024/04/14(日) 08:27:07.05ID:JqEwLIX+
なんでなんですかと言われても自分で貼ったエラーメッセージに書いてある通りでしょ

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/out-file?view=powershell-5.1#-encoding

どうしてもShift-JISと書きたいならPowerShell6.2以降をご利用ください

https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/out-file?view=powershell-7.4#-encoding
180デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:56:57.87ID:PE3M1YJ/
よく知らんけど、UTF8もSHIFT-JISもMS932
ASCIIも、全部半角英数文字なら、
完全に互換性あるよな❓
BOM付UTF8はダメだろうが

ていうか、改行はLF CR LF+CR CR+LF
のどれが正しいの❓
181デフォルトの名無しさん
垢版 |
2024/04/15(月) 15:02:21.24ID:PE3M1YJ/
ていうか、拡張子mp3は音楽で音なのに、
でもてか、拡張子mp4は動画で映像だし、ま、音声も含まれてるけど
もしかして、拡張子mp5は匂いとかになるのかな❓ なんて訳ないよね
2024/04/15(月) 15:11:13.01ID:t9UnzSYj
mp3: MPEG-1 Audio Layer-3
mp4: MPEG-4 Part 14
2024/04/15(月) 22:02:24.55ID:uMyBIzHs
>>180
0x5Cと0x7Eが違うだろ
0x5CはASCIIやUTF-8だと逆スラッシュだけどShift-JISでは円記号
0x7EはASCIIやUTF-8ではチルダでShift-JISだとオーバーライン
184デフォルトの名無しさん
垢版 |
2024/04/29(月) 03:38:58.05ID:xgq67JZI
糞言語晒しハゲ
2024/04/29(月) 21:21:17.91ID:+v7UeRZb
確かにPowerShellには糞な所はあるが
UNIXシェルはもっと糞だからなぁ
2024/04/30(火) 00:48:39.65ID:DiJVRdjR
bashはもっと高級言語っぽく書かせてくれ
2024/04/30(火) 19:49:07.28ID:C0uaYXPq
プログラムスレ自体が
スレ立ての荒らしにあってる?
188デフォルトの名無しさん
垢版 |
2024/05/12(日) 19:06:56.30ID:vKcD+EjR
入力された値(小数点以下の桁数は不明)をそのままの値でコンソールに表示させる方法ありますでしょうか?


入力値 $nyuryoku = 0.0000001
出力 0.0000001

現状
1E-07
189デフォルトの名無しさん
垢版 |
2024/05/12(日) 19:07:09.73ID:vKcD+EjR
入力された値(小数点以下の桁数は不明)をそのままの値でコンソールに表示させる方法ありますでしょうか?


入力値 $nyuryoku = 0.0000001
出力 0.0000001

現状
1E-07
2024/05/12(日) 19:36:08.58ID:09MtL+BO
最初から文字列にしとけばOK
2024/05/12(日) 20:58:46.50ID:XuEaHJPQ
そうだね。逆にE表記の入力も受けるならそっちの対応も必要になる
$nyuryoku = "0.0000001"
[double]$nyuryoku_d = 0
if ([Double]::TryParse($nyuryoku, [ref]$nyuryoku_d)) { # 入力文字列をdouble値に変換できるか確認
$dotpos = $nyuryoku_s.IndexOf(".")
if ($dotpos -ge 0) { # ドット表記
$nyuryoku_d += 0.0000001
$nyuryoku_d.ToString("N" + $nyuryoku_s.substring($dotpos + 1).length) | Write-Host #double値を計算して同桁出力する場合
}
}
2024/05/12(日) 21:52:36.80ID:i2A3IV7D
"{0:f7}" -f $nyuryoku
2024/05/13(月) 11:39:01.69ID:/Hf+00qw
.NetのBigDecimal型を使えば演算も有効数字も期待通りにコントロールできて望むものに合致するかもしれない
194デフォルトの名無しさん
垢版 |
2024/05/14(火) 06:07:17.63ID:91RzY7pD
>>0190
確かにそうですね

>>0191
ありがとうございます。

>>0192
小数点以下桁数が計算できれば行けそうです

>>0193
ありがとうございます。試してみます
2024/05/15(水) 12:16:52.10ID:NKO3JxQw
[System.Covert]::ToDecimal($nyuryoku)
2024/05/15(水) 21:14:15.32ID:dKr+esCZ
[decimal]$nyuryoku
2024/05/15(水) 23:59:01.94ID:thm7xdMe
> $x = "1.00"
> [decimal]$x
1

> [decimal]$y = "1.00"
> $y
1

簡潔でいいなと思ったけど v7.4.2 ではダメだったわ
v5 なら通る
なんでや

> [decimal]::Parse("1.00")
1.00

これならどっちもいける
2024/05/19(日) 09:37:50.88ID:CqmosUS1
1.00.ToString("0.00")
2024/05/28(火) 21:30:03.57ID:3YD/oRc3
https://www.itmedia.co.jp/news/articles/2405/28/news172.html

こういうのがあるからPowerShellはスクリプト実行禁止がデフォルトになっている
2024/05/29(水) 13:49:53.60ID:uKjwQH9U
いやいやいや…ちょっと調べればPowerShellを禁止設定のまま実行なんて簡単なんですけお^^
2024/05/29(水) 20:30:24.77ID:fSXLC2MA
俺はバッチファイル経由で実行するようにしてる
同じフォルダ内のps1ファイルを全て羅列して、どれを実行しますか?みたいな感じのバッチファイル
2024/05/29(水) 21:41:38.25ID:02Fq4mGE
それ意味あんの
2024/05/29(水) 23:35:21.72ID:nyGT0uI2
実行ポリシーに依存しない
2024/05/30(木) 00:25:29.21ID:U4JaIgka
>>199
そのせいで使い勝手が悪く普及しない
ダブクリ実行可能なショートカットは一般ユーザーには作れない
さらにウインドウ非表示実行もできず、VBSを置き換えることもできない
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に書いてる仕様変更の影響かと。
レスを投稿する

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

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