前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/
次スレは>>980が立ててね!!
探検
PowerShell -Part 6
■ このスレッドは過去ログ倉庫に格納されています
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
365デフォルトの名無しさん
2022/06/01(水) 11:27:22.75ID:HV/k13ls powershell -NoProfile -ExecutionPolicy unrestricted -command "Start-Process -Verb runas -FilePath powershell.exe -ArgumentList ‘-command remove-item C:\Users\Public\Desktop\test'"
試してないけどこんな感じで出来ん?
不備とかエスケープ処理が必要だったりとかあるかも
powershellから昇格させたpowershell呼んでそこでdel
試してないけどこんな感じで出来ん?
不備とかエスケープ処理が必要だったりとかあるかも
powershellから昇格させたpowershell呼んでそこでdel
366デフォルトの名無しさん
2022/06/02(木) 00:03:43.97ID:B9Goniqn >>365
出来ました
出来ました
368デフォルトの名無しさん
2022/06/04(土) 17:47:37.42ID:TSmSPUgr 定義した変数のメモリ開放は$nullの代入でいいのでしょうか?
メモリリソースが足りませんとエラーがでるので。
メモリリソースが足りませんとエラーがでるので。
369デフォルトの名無しさん
2022/06/04(土) 18:56:11.76ID:IRaDT1CY Remove-Variable
まあ設計を見直した方がいいと思うけど
まあ設計を見直した方がいいと思うけど
370デフォルトの名無しさん
2022/06/04(土) 20:19:25.41ID:TSmSPUgr ありがとうございます!
371デフォルトの名無しさん
2022/06/18(土) 20:04:49.41ID:2rZBula1 フォルダ内にあるすべての画像ファイルにおいて、その画像のWidthが1280のものだけを削除するスクリプトを作成中ですが、ファイルはどうやって削除するのでしょうか?
Get-ChildItem "D:\Download\test" | Sort Name | % {
$img = [System.Drawing.Image]::FromFile($_.fullname)
if ($img.Width -eq 1280) {
Remove-Item $_
}
}
だと
Remove-Item : Cannot find path 'D:\Download\test_01.jpg' because it does not exist.
とエラーがでるのですが、パスの設定方法がいまいちわかりません。
Get-ChildItem "D:\Download\test" | Sort Name | % {
$img = [System.Drawing.Image]::FromFile($_.fullname)
if ($img.Width -eq 1280) {
Remove-Item $_
}
}
だと
Remove-Item : Cannot find path 'D:\Download\test_01.jpg' because it does not exist.
とエラーがでるのですが、パスの設定方法がいまいちわかりません。
372デフォルトの名無しさん
2022/06/18(土) 20:44:46.51ID:opzT6/bZ Remove-Item $_.FullName
か
$_ | Remove-Item
かな
か
$_ | Remove-Item
かな
373デフォルトの名無しさん
2022/06/18(土) 20:51:53.83ID:2rZBula1 ありがとうございます。やってみます!
374デフォルトの名無しさん
2022/06/19(日) 00:03:25.24ID:d/5y1flf VSCode でも、コマンドプロンプト・PowerShell を使うと、
ファイル・フォルダ操作のアクセス権限が無いから、
右下のトーストに、そういうエラー通知が来る
そこで、アプリに対して、操作を許可する
それと、Windows でもファイルパス区切りに、/ を使える。
C:/Users/Owner/Documents/a.txt
ファイル・フォルダ操作のアクセス権限が無いから、
右下のトーストに、そういうエラー通知が来る
そこで、アプリに対して、操作を許可する
それと、Windows でもファイルパス区切りに、/ を使える。
C:/Users/Owner/Documents/a.txt
375デフォルトの名無しさん
2022/06/19(日) 18:24:35.04ID:xfiYTNc0 今までこれをbatで起動させていました!
-------
sc stop DoSvc
@echo off
echo.
echo ====================
echo Enable_TaskScheduler
echo ====================
echo.
rem ----- win10_ServicePreparation_DoSvc -----
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f
exit
-------
特定サービスの作動強制停止およびスタートアップ強制置換です
しかしこれでは管理者権限を付与する場合、人間がコンテキストで管理者実行をその都度選んでやらねばならず、
反映の有無も再起動が必要だったり再起動なしで切り替わったり不安定です
PowerShellのps1はそれら管理者権限付与の自動化や再起動不要が可能と聞きました
ネットにはバッチのような記述解説サイトが乏しいので、コードの代替案、またはおすすめの参考書等があれば教えてください〜
-------
sc stop DoSvc
@echo off
echo.
echo ====================
echo Enable_TaskScheduler
echo ====================
echo.
rem ----- win10_ServicePreparation_DoSvc -----
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DoSvc" /v "Start" /t REG_DWORD /d "4" /f
exit
-------
特定サービスの作動強制停止およびスタートアップ強制置換です
しかしこれでは管理者権限を付与する場合、人間がコンテキストで管理者実行をその都度選んでやらねばならず、
反映の有無も再起動が必要だったり再起動なしで切り替わったり不安定です
PowerShellのps1はそれら管理者権限付与の自動化や再起動不要が可能と聞きました
ネットにはバッチのような記述解説サイトが乏しいので、コードの代替案、またはおすすめの参考書等があれば教えてください〜
376デフォルトの名無しさん
2022/06/19(日) 19:51:13.64ID:k543CSlC377デフォルトの名無しさん
2022/06/19(日) 22:46:16.09ID:WW6NzJIS サービスを削除でぐぐれ
378デフォルトの名無しさん
2022/06/20(月) 08:42:33.76ID:sIvuqcVm レジストリを直接編集するな
Windows 秘話: なぞのキー
https://docs.microsoft.com/ja-jp/previous-versions/technet-magazine/dn456530(v=msdn.10)
> 変更または操作されることがまったく意図されていない設定が存在します。そのような設定を見つけたときには、とにかくそっとしておいてください。
Windows 秘話: なぞのキー
https://docs.microsoft.com/ja-jp/previous-versions/technet-magazine/dn456530(v=msdn.10)
> 変更または操作されることがまったく意図されていない設定が存在します。そのような設定を見つけたときには、とにかくそっとしておいてください。
379デフォルトの名無しさん
2022/06/20(月) 08:48:02.21ID:3bt1t/j5 それはメーカーが分解すんなって言うのと同等の話
380デフォルトの名無しさん
2022/06/20(月) 10:58:01.21ID:4+IWkf9p 目的がテレメトリ関連の通信の遮断だしサービス削除しかないと思うけどな
381デフォルトの名無しさん
2022/06/20(月) 12:48:20.89ID:LhK9JJfo Stop-ServiceやSet-Serviceあたり使えばいいんじゃね
382デフォルトの名無しさん
2022/06/20(月) 12:50:56.18ID:E6UoKUAB ハード的家電において、メーカーの分解拒否声明は「簡単に直せる部分を民間でやられたら業績下がるやんけ」理論が殆どと、感電・火災防止が少しって感じ
同じくソフトにおいても、メーカーの調整拒否声明は「テレメトリを拒否されると情報転売が減って業績下がるやんけ」理論がほぼ全てで、僅かに不測の事態とその対応への危惧(面倒≒ユーザー側の心配はしていない)が含まれる感じ
大体、テレメトリの最終的な購入先は巡り巡ってそれらを利用したがっているガチ支那チョン露などの反社集団でしょうに
だから米国大手の支那癒着や制裁緩和の声が消えないわけで
例え吸われても、利用先が日本国内または米国のみであればそんなに問題視しませんわ
逆にDoSvcなんかは設定での表面上なOFFやグルポをしようと内部でMB単位のダウンロードをしっかりしていますし、
DoSvc動作用の基礎データか何かと期待したいものの時間経過で増大します→つまり120%ガチテレメトリなんですよ
そしてスタートアップを無効にしなければOS設定にかかわらず強制実行+勝手に通信+削除しようと復活増量し続ける
無効にしたスタートアップさえ手動(トリガー)へ勝手に戻される→高頻度自主改変がなければOSから「DoSvcの無い空間」を作り出せない
こんなソフトの癌とも言えるものを放置出来る方々の無神経さは平和の極みですな
安いからっつって支那産PCを大量購入し自衛隊へ配布した馬鹿で愚かな国賊官僚と同レベルに思う
同じくソフトにおいても、メーカーの調整拒否声明は「テレメトリを拒否されると情報転売が減って業績下がるやんけ」理論がほぼ全てで、僅かに不測の事態とその対応への危惧(面倒≒ユーザー側の心配はしていない)が含まれる感じ
大体、テレメトリの最終的な購入先は巡り巡ってそれらを利用したがっているガチ支那チョン露などの反社集団でしょうに
だから米国大手の支那癒着や制裁緩和の声が消えないわけで
例え吸われても、利用先が日本国内または米国のみであればそんなに問題視しませんわ
逆にDoSvcなんかは設定での表面上なOFFやグルポをしようと内部でMB単位のダウンロードをしっかりしていますし、
DoSvc動作用の基礎データか何かと期待したいものの時間経過で増大します→つまり120%ガチテレメトリなんですよ
そしてスタートアップを無効にしなければOS設定にかかわらず強制実行+勝手に通信+削除しようと復活増量し続ける
無効にしたスタートアップさえ手動(トリガー)へ勝手に戻される→高頻度自主改変がなければOSから「DoSvcの無い空間」を作り出せない
こんなソフトの癌とも言えるものを放置出来る方々の無神経さは平和の極みですな
安いからっつって支那産PCを大量購入し自衛隊へ配布した馬鹿で愚かな国賊官僚と同レベルに思う
383デフォルトの名無しさん
2022/06/20(月) 14:23:54.66ID:XSN9SiQv384デフォルトの名無しさん
2022/06/20(月) 14:47:00.73ID:YswTafv8 会社の物とかでなければレジストリくらい好きに弄ったらいいだろ
それで何かあっても自己責任ってだけで
それで何かあっても自己責任ってだけで
385デフォルトの名無しさん
2022/06/20(月) 14:58:58.89ID:h1SesB6c レジストリ編集では期待通りにいかないことを体験的に踏まえた上で上手くいく手順としてPSでやりたいって流れの質問なのにレジストリ編集するな!ってクソバイスやん
自己責任を理解せずに杓子定規で正しさを主張し続ける人にはアレな傾向を感じざるを得ない
自己責任を理解せずに杓子定規で正しさを主張し続ける人にはアレな傾向を感じざるを得ない
386デフォルトの名無しさん
2022/06/20(月) 15:20:32.49ID:4G+nodK/ batはレジストリの値を弄ってるのみにしか見えん
この後にPCを再起動でもさせるのか?
この後にPCを再起動でもさせるのか?
387デフォルトの名無しさん
2022/06/20(月) 15:32:06.62ID:JJsUxIz5 だいぶ前から色んなところで聞いているけど
タスクマネージャーで権限がないから書き込めないとか
黒窓が出るのが嫌だとか
原因を追求する気もないのに聞いて回るクソヤロウだよ
タスクマネージャーで権限がないから書き込めないとか
黒窓が出るのが嫌だとか
原因を追求する気もないのに聞いて回るクソヤロウだよ
388デフォルトの名無しさん
2022/06/20(月) 15:46:09.48ID:3ZXlTK7A389デフォルトの名無しさん
2022/06/20(月) 17:32:51.93ID:6RdOG7wm390デフォルトの名無しさん
2022/06/20(月) 18:28:34.00ID:E6UoKUAB バッチスレは論外ですな
batやスケジューラの挙動に関して最初から細かく説明していたのですが、どう考えてもガチ支那の五毛っぽいDQNが私の最後のレスを部分的にチラ見しただけで、答えている感じでしたね^^;
冷やかしがオナニーしている状態で、バッチスレの名が泣いていました
原因も提示し、それら打開策などの例や実施結果を挙げつつも、堂々巡りの、それもむっちゃ浅い既出内容をドヤ顔で書き込まれる感じ
バッチスレで唯一のプログラミングスレらしい収穫は「俺だったら.ps1で作る」という言葉、ただひとつのみでしたわorz
あとはなかなかまとまった時間が作れず、もう少ししたらps1版のサービス削除などもネット検索・吟味できそうです
最も盛んでしたwinXP時代にソフトを制作していた年代は今50前後?で開発・更新停止などが相次いでいますよね
そんで2022年現在、高校辺りでプログラミングを必修とする云々が出ている
間が20年くらいスッカラカンなのは日本の経済力低迷を表しているようで大変残念です
そりゃ今の官僚層が自衛隊へ支那産PC送ったりするはずですわ、そんなのが国を回しているんだから^^;
batやスケジューラの挙動に関して最初から細かく説明していたのですが、どう考えてもガチ支那の五毛っぽいDQNが私の最後のレスを部分的にチラ見しただけで、答えている感じでしたね^^;
冷やかしがオナニーしている状態で、バッチスレの名が泣いていました
原因も提示し、それら打開策などの例や実施結果を挙げつつも、堂々巡りの、それもむっちゃ浅い既出内容をドヤ顔で書き込まれる感じ
バッチスレで唯一のプログラミングスレらしい収穫は「俺だったら.ps1で作る」という言葉、ただひとつのみでしたわorz
あとはなかなかまとまった時間が作れず、もう少ししたらps1版のサービス削除などもネット検索・吟味できそうです
最も盛んでしたwinXP時代にソフトを制作していた年代は今50前後?で開発・更新停止などが相次いでいますよね
そんで2022年現在、高校辺りでプログラミングを必修とする云々が出ている
間が20年くらいスッカラカンなのは日本の経済力低迷を表しているようで大変残念です
そりゃ今の官僚層が自衛隊へ支那産PC送ったりするはずですわ、そんなのが国を回しているんだから^^;
391デフォルトの名無しさん
2022/06/20(月) 20:16:43.25ID:+SBlN13D 直接編集しちゃいけないなんてルールはないから好きにしな
無知が無学のまま弄った責任を負わされることを防ぐためのおまじないでしかないよ
無知が無学のまま弄った責任を負わされることを防ぐためのおまじないでしかないよ
392デフォルトの名無しさん
2022/06/20(月) 20:23:12.95ID:ItZjQb2L 行き着いた答えがレジストリ書き換えの定期実行だから頭悪いにも程がある
393デフォルトの名無しさん
2022/06/20(月) 21:31:17.15ID:yjTGWQu/ 俺はちゃんとバッチスレにサービスの設定を変えるコマンドの事書いたぞ
コマンドのドキュメントのリンク付きで
このスレでも他の人が設定変更用のコマンドレットのこと書いてるし
何をどう見てるのやら
コマンドのドキュメントのリンク付きで
このスレでも他の人が設定変更用のコマンドレットのこと書いてるし
何をどう見てるのやら
394デフォルトの名無しさん
2022/06/20(月) 22:24:09.27ID:4G+nodK/ レジストリなんて不整合があれば書き戻されることもあるのでレジストリ弄るだけで解決しない
395デフォルトの名無しさん
2022/06/21(火) 00:22:01.55ID:KK61fTqr てかバッチスレが余りにも低水準かつ五毛全開だったからこそ呆れ、唯一のまともなアドバイスに従ってパワシェへ切り替えようとしているのにさ
わざわざ別スレのリンク貼ったりパワシェスレへ出張(笑)してきたり、ほんま意味不明ですわw
ま、ストーカー云々の類いはリアルもネットも気色悪いですしバッチスレ関係者から得られるものが無いのも経験済み
似た主題なので両方のスレを高頻度で訪問しているのかな、そう思うことにして特定のレスは流し聞きしときますよwww
わざわざ別スレのリンク貼ったりパワシェスレへ出張(笑)してきたり、ほんま意味不明ですわw
ま、ストーカー云々の類いはリアルもネットも気色悪いですしバッチスレ関係者から得られるものが無いのも経験済み
似た主題なので両方のスレを高頻度で訪問しているのかな、そう思うことにして特定のレスは流し聞きしときますよwww
396デフォルトの名無しさん
2022/06/21(火) 00:36:09.32ID:xELEw2uC Linux なら、systemd とか
Windows の仕組みは知らないけど、
レジストリはその結果を収めたデータベースだから、
結果をいじっても問題解決にはならない
設定は各アプリ製作者が作っているものだから、
製作者以外の人間にできる事は、アプリをアンインストールする事だけ
設定にも様々な依存関係があるから、
アプリの内容も分からない人が、ある設定を変えても、どう作用するか分からない
例えば、アプリのメモリが解放されなくなって、
他のアプリも動かなくなるかも
それに設定を変えても、再起動しないと有効にならないかも知れないし、
再起動すると、設定が元に戻るかも知れない
OS 起動時の処理に、設定読み込みを登録しているかも知れない
Windows の仕組みは知らないけど、
レジストリはその結果を収めたデータベースだから、
結果をいじっても問題解決にはならない
設定は各アプリ製作者が作っているものだから、
製作者以外の人間にできる事は、アプリをアンインストールする事だけ
設定にも様々な依存関係があるから、
アプリの内容も分からない人が、ある設定を変えても、どう作用するか分からない
例えば、アプリのメモリが解放されなくなって、
他のアプリも動かなくなるかも
それに設定を変えても、再起動しないと有効にならないかも知れないし、
再起動すると、設定が元に戻るかも知れない
OS 起動時の処理に、設定読み込みを登録しているかも知れない
397デフォルトの名無しさん
2022/06/21(火) 09:15:38.14ID:lQ/zAxwG ウダウダと一体何の話をしてるんだ
いいからStop-ServiceとSet-Service使えよ
ただ老人がじゃれ合いたいだけなのか?
いいからStop-ServiceとSet-Service使えよ
ただ老人がじゃれ合いたいだけなのか?
398デフォルトの名無しさん
2022/06/21(火) 11:49:55.72ID:+f2eC/vV こんな辺境にまでやべーやつ | Out-Null
399デフォルトの名無しさん
2022/06/22(水) 20:51:18.50ID:At4JlVSH >>375
管理者やSYSTEMじゃなくてTrustedInstallerとして実行しても駄目か?
もちろんレジストリをいじるんじゃんなくてSet-Serviceを使うんだぞ
もう見てないかもしれんが
管理者やSYSTEMじゃなくてTrustedInstallerとして実行しても駄目か?
もちろんレジストリをいじるんじゃんなくてSet-Serviceを使うんだぞ
もう見てないかもしれんが
400デフォルトの名無しさん
2022/06/22(水) 22:28:41.71ID:OsaOMnRZ わざわざ召喚しようとする馬鹿発見伝
401デフォルトの名無しさん
2022/06/24(金) 13:29:04.40ID:VuoDyj+3 最近foreach文のコレクションの要素を受け取る変数の名前をつけるのが
めんどくさくって
for文のカウンター変数の名前に i を使うのはよくありますが
foreachにも同じような定石ってありますか?
めんどくさくって
for文のカウンター変数の名前に i を使うのはよくありますが
foreachにも同じような定石ってありますか?
402デフォルトの名無しさん
2022/06/24(金) 13:47:20.90ID:4Qrsm7mD aオブジェクト名
403デフォルトの名無しさん
2022/06/24(金) 14:25:06.98ID:K2we1Lar e
404デフォルトの名無しさん
2022/06/24(金) 20:56:03.77ID:EMaN3eAt Item
405デフォルトの名無しさん
2022/06/24(金) 23:55:58.07ID:/S8ogjuv item, element
406デフォルトの名無しさん
2022/06/26(日) 07:43:19.31ID:G39l7ngg 例えば$url = "https://yyyy.xxx/aaa/bbbb/2/"があり、最後の[2/]をカウンタを使ってアクセスしたいとおもいます。
その際、$nextUrl = ($url -replace ".{2}$") + $cnt + "`\"
で行けると思ったのですが、何か間違えていますでしょうか?
その際、$nextUrl = ($url -replace ".{2}$") + $cnt + "`\"
で行けると思ったのですが、何か間違えていますでしょうか?
407デフォルトの名無しさん
2022/06/26(日) 08:16:14.03ID:JGEtGMnz -replaceの使い方を間違えてる
408デフォルトの名無しさん
2022/06/26(日) 11:32:39.54ID:G39l7ngg replaceですか。ありがとうございます
409デフォルトの名無しさん
2022/06/29(水) 00:00:51.24ID:x2p/lm6W arrayListの使い方がわからない。
----------------------------
$arrayReturn = new-object system.collections.arrayList
$col = new-object PSObject | select "A", "B", "C"
foreach ($i in 1..3) {
$col."A" = $i
$col."B" = $i + 1
$col."C" = $i + 2
$nul = $arrayReturn.add($col)
}
$arrayReturn
----------------------------
上記のコードを実行すると以下のようになってしまう。
A B C
- - -
3 4 5
3 4 5
3 4 5
本当は以下のようにしたい
A B C
- - -
1 2 3
2 3 4
3 4 5
なぜうまくいかないのか謎。
----------------------------
$arrayReturn = new-object system.collections.arrayList
$col = new-object PSObject | select "A", "B", "C"
foreach ($i in 1..3) {
$col."A" = $i
$col."B" = $i + 1
$col."C" = $i + 2
$nul = $arrayReturn.add($col)
}
$arrayReturn
----------------------------
上記のコードを実行すると以下のようになってしまう。
A B C
- - -
3 4 5
3 4 5
3 4 5
本当は以下のようにしたい
A B C
- - -
1 2 3
2 3 4
3 4 5
なぜうまくいかないのか謎。
410デフォルトの名無しさん
2022/06/29(水) 00:51:19.50ID:cjQj2yfD $col のnew-object生成をforeach{}内に移動してみては
411デフォルトの名無しさん
2022/06/29(水) 07:19:16.62ID:x2p/lm6W412デフォルトの名無しさん
2022/06/29(水) 08:20:00.62ID:8GN1KOCk PSObjectは参照型
ArrayListに追加されるのはオブジェクトそのものじゃなくてオブジェクトの参照だけ
ArrayListに追加されるのはオブジェクトそのものじゃなくてオブジェクトの参照だけ
413デフォルトの名無しさん
2022/06/29(水) 09:10:01.99ID:ofsaM31D >>412
完全に理解しました。thx
完全に理解しました。thx
414デフォルトの名無しさん
2022/06/29(水) 14:16:08.11ID:SZ5j8L6g PSReadLine 2.2.6 enables Predictive Intellisense by default
https://devblogs.microsoft.com/powershell/psreadline-2-2-6-enables-predictive-intellisense-by-default/
入力しようとしているコマンドを予測 〜PowerShellで「Predictive IntelliSense」が既定有効に
履歴やプラグインなどを参考に推測できるIntelliSense機能
https://forest.watch.impress.co.jp/docs/news/1420812.html
https://devblogs.microsoft.com/powershell/psreadline-2-2-6-enables-predictive-intellisense-by-default/
入力しようとしているコマンドを予測 〜PowerShellで「Predictive IntelliSense」が既定有効に
履歴やプラグインなどを参考に推測できるIntelliSense機能
https://forest.watch.impress.co.jp/docs/news/1420812.html
415デフォルトの名無しさん
2022/06/29(水) 21:06:08.62ID:h+5hcb7e PSCustomObjectは積極的に使っていいものかどうか判断できない
結局C#でクラスや構造体宣言して使った方がいい気がするし
Powershellで作成したPSCustomObjectを、同ソースに埋め込んだC#コード側から参照する方法ってある?
結局C#でクラスや構造体宣言して使った方がいい気がするし
Powershellで作成したPSCustomObjectを、同ソースに埋め込んだC#コード側から参照する方法ってある?
416デフォルトの名無しさん
2022/06/29(水) 21:46:04.47ID:4kwBO65f >>415
dynamic
dynamic
417デフォルトの名無しさん
2022/06/30(木) 01:46:52.84ID:LVSNczoT >>415
New-Object PSCustomObject や [PSCustomObject]@{} は
Win10 の v5.1 なら Add-Type の C# でなくとも class があるからスクリプトでの使用頻度は下がった。
Win7 の v2 では function NewABC {} みたいなコンストラクタ的な関数用意して積極的に使ってた。
Win10 の今でも ConvertTo-Csv へ渡す前に日時や数値を書式指定して文字列化するために使ってる。
CSV に日本語カラム名が欲しい時に日本語プロパティ名の class 用意するのはなんか気が引けるけど
[PSCustomObject]@{} や Select-Object での誰が見ても短命なオブジェクトなら気にならない。
データだけでメソッドがなく複数作るなら System.Data.DataTable も有り。
.Columns.AddRange([string[]]) でプロパティ(DataColumn)定義して
.Rows.Add([Object[]]) でデータ(DataRow)追加する使い方なら意外と手軽に使える。
日本語カラム名の使用も問題ないし。
New-Object PSCustomObject や [PSCustomObject]@{} は
Win10 の v5.1 なら Add-Type の C# でなくとも class があるからスクリプトでの使用頻度は下がった。
Win7 の v2 では function NewABC {} みたいなコンストラクタ的な関数用意して積極的に使ってた。
Win10 の今でも ConvertTo-Csv へ渡す前に日時や数値を書式指定して文字列化するために使ってる。
CSV に日本語カラム名が欲しい時に日本語プロパティ名の class 用意するのはなんか気が引けるけど
[PSCustomObject]@{} や Select-Object での誰が見ても短命なオブジェクトなら気にならない。
データだけでメソッドがなく複数作るなら System.Data.DataTable も有り。
.Columns.AddRange([string[]]) でプロパティ(DataColumn)定義して
.Rows.Add([Object[]]) でデータ(DataRow)追加する使い方なら意外と手軽に使える。
日本語カラム名の使用も問題ないし。
418デフォルトの名無しさん
2022/07/06(水) 09:44:42.33ID:L+R7c7Gd -replaceと-ireplaceの違いって分かりますか?
まだ勉強中ですが、当然のように出てきて両方同じ説明しかされてないので気になって調べてみてもどこにも解説がなくて…
扱える値の範囲が違ったりとかするんでしょうか?
普通はどっちを使うものなんですか?
まだ勉強中ですが、当然のように出てきて両方同じ説明しかされてないので気になって調べてみてもどこにも解説がなくて…
扱える値の範囲が違ったりとかするんでしょうか?
普通はどっちを使うものなんですか?
419デフォルトの名無しさん
2022/07/06(水) 11:05:49.65ID:MXaUuSJv 1.完全に理解した←初心者
2.チョットワカル←中級者
3.全然判らん←上級者
2.チョットワカル←中級者
3.全然判らん←上級者
420デフォルトの名無しさん
2022/07/06(水) 11:41:17.81ID:HSp/EaB5 >>418
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7.2
既定では、 -replace 演算子では大文字と小文字が区別されません。
大文字と小文字を区別するには、次を使用します -creplace。
明示的に大文字と小文字を区別しないようにするには、次を使用します -ireplace。
replaceの既定動作を変更する方法は知りません。
大文字小文字を区別しようがしまいがどっちでもいいときは replace
そこんとこ間違ってもらっちゃ困るときは ireplace か creplace
普通がどっちかは分かりません。
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-7.2
既定では、 -replace 演算子では大文字と小文字が区別されません。
大文字と小文字を区別するには、次を使用します -creplace。
明示的に大文字と小文字を区別しないようにするには、次を使用します -ireplace。
replaceの既定動作を変更する方法は知りません。
大文字小文字を区別しようがしまいがどっちでもいいときは replace
そこんとこ間違ってもらっちゃ困るときは ireplace か creplace
普通がどっちかは分かりません。
421デフォルトの名無しさん
2022/07/06(水) 13:11:25.93ID:c6fRPAAn 例えば、Ruby のCSV 処理なら、
require 'csv'
input_csv = <<"CSV_TEXT"
id,果物
1,りんご
21,スイカ
33,みかん
CSV_TEXT
# 2次元配列
ary = CSV.parse( input_csv, headers: true ).each do |row|
row[ '果物' ] = "レモン" if row[ 'id' ].to_i == 21
end
p ary.to_a
#=> [ ["id", "果物"], ["1", "りんご"], ["21", "レモン"], ["33", "みかん"] ]
require 'csv'
input_csv = <<"CSV_TEXT"
id,果物
1,りんご
21,スイカ
33,みかん
CSV_TEXT
# 2次元配列
ary = CSV.parse( input_csv, headers: true ).each do |row|
row[ '果物' ] = "レモン" if row[ 'id' ].to_i == 21
end
p ary.to_a
#=> [ ["id", "果物"], ["1", "りんご"], ["21", "レモン"], ["33", "みかん"] ]
422デフォルトの名無しさん
2022/07/06(水) 13:16:19.97ID:iisDFTgh423デフォルトの名無しさん
2022/07/06(水) 20:34:21.87ID:428zggiP 迷ったら明示でいいと思う
424デフォルトの名無しさん
2022/07/06(水) 22:49:51.62ID:pVM7wVd2 パワシェルの-replaceは勝手に右辺を正規表現と解釈するから
それが必要ない場合は文字列.Replace()のがいいよ
それが必要ない場合は文字列.Replace()のがいいよ
425デフォルトの名無しさん
2022/07/07(木) 08:47:36.53ID:fDYvmpy4426デフォルトの名無しさん
2022/07/08(金) 13:33:50.89ID:EP1tRVB4 Windowsでコマンドラインシェルとして使う場合に
外部コマンド引数のクオーテーションの振る舞いをなんとかして欲しい
例えばpwshを外部コマンドとして使うとして
pwsh -nop -c "`$a = 'abc'; `$a | out-host"
は期待通り abc が出力されるのに
pwsh -nop -c '$a = "abc"; $a | out-host'
はエラーになるの不便過ぎる
外部コマンド引数のクオーテーションの振る舞いをなんとかして欲しい
例えばpwshを外部コマンドとして使うとして
pwsh -nop -c "`$a = 'abc'; `$a | out-host"
は期待通り abc が出力されるのに
pwsh -nop -c '$a = "abc"; $a | out-host'
はエラーになるの不便過ぎる
427デフォルトの名無しさん
2022/07/08(金) 20:51:35.26ID:Bjqd/A21 補完が有効になってやっとまともに使えるようになったなよくこんなクソ長くて覚え辛くて入力し辛いコマンドレットなんて使ってるよなお前ら
しかしMSって言語やフレームワークでもそうだが命名規則にセンスねーゎ
なんでnpmやgitみたいに使いやすく作れないのか壊滅的にセンスねーゎ
しかしMSって言語やフレームワークでもそうだが命名規則にセンスねーゎ
なんでnpmやgitみたいに使いやすく作れないのか壊滅的にセンスねーゎ
428デフォルトの名無しさん
2022/07/08(金) 21:48:06.89ID:SkLqj5eb429デフォルトの名無しさん
2022/07/08(金) 22:10:30.33ID:EP1tRVB4 PS> pwsh -nop -c "`$a = 'abc'; `$a | out-host"
abc
PS> pwsh -nop -c '$a = "abc"; $a | out-host'
abc: The term 'abc' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
これほんと何がどうしてこうなるの?
abc
PS> pwsh -nop -c '$a = "abc"; $a | out-host'
abc: The term 'abc' is not recognized as a name of a cmdlet, function, script file, or executable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
これほんと何がどうしてこうなるの?
430デフォルトの名無しさん
2022/07/08(金) 23:27:21.05ID:UIv0TQaX pwsh.exeへのコマンドラインとして解釈されるから、まずOSのルールに従って引数リストが次のように分解される
-nop
-c
'$a
=
abc
;
$a
|
out-host'
pwsh.exeの内側でコマンド文字列を再結合した時点では既にダブルクォートが失われているという寸法
-nop
-c
'$a
=
abc
;
$a
|
out-host'
pwsh.exeの内側でコマンド文字列を再結合した時点では既にダブルクォートが失われているという寸法
431デフォルトの名無しさん
2022/07/08(金) 23:35:00.16ID:v6YmQ/+d PS内で呼び出すならスクリプトブロックでよくね?
432デフォルトの名無しさん
2022/07/08(金) 23:40:56.26ID:UIv0TQaX 無茶言うなよ…
pwshの-cより右ならスクリプト扱いで、cmdやその他大勢の右ならOS解釈? pwshという同名のオレオレアプリの類だったときもスクリプト扱い?
言語仕様の一貫性的にあかんことになるだろ常考
pwshの-cより右ならスクリプト扱いで、cmdやその他大勢の右ならOS解釈? pwshという同名のオレオレアプリの類だったときもスクリプト扱い?
言語仕様の一貫性的にあかんことになるだろ常考
433デフォルトの名無しさん
2022/07/08(金) 23:49:47.55ID:cCHwpa3p もしかして
リモートコマンド
リモートコマンド
434デフォルトの名無しさん
2022/07/08(金) 23:52:42.34ID:PFPNTTsE >>429
「'$a = "abc"; $a | out-host'」の「'〜'」は
そのコマンドライン上の文字列リテラルである事をPowerShellに指示してる事になって
PowerShellは1つの文字列「$a = "abc"; $a | out-host」の事だと受け取る。
コマンドが実行ファイルの実行で、その引数の文字列にスペースがあると
その文字列全体が「"〜"」で括られて文字列「"$a = "abc"; $a | out-host"」になる。
↑Windows PowerShell v5.1のTrace-Commandで確認
↓自信なし
powershell実行時の引数パース時に「\"」とか「"""」とかではない
単独「"」は不正な(余分な)メタキャラとして取り除かれるもよう。
で-cには「$a = abc; $a | out-host」が渡る。
>>430
確か「OSのルール」だと、実行ファイルに渡される引数は単一の文字列で、
スペースで区切ったり「"」を特別扱いするのはpowershell(pwsh).exeの独自のただし非常に一般的な仕様。
(大抵は、exeにコンパイルした際のコンパイラの仕様。)
「'$a = "abc"; $a | out-host'」の「'〜'」は
そのコマンドライン上の文字列リテラルである事をPowerShellに指示してる事になって
PowerShellは1つの文字列「$a = "abc"; $a | out-host」の事だと受け取る。
コマンドが実行ファイルの実行で、その引数の文字列にスペースがあると
その文字列全体が「"〜"」で括られて文字列「"$a = "abc"; $a | out-host"」になる。
↑Windows PowerShell v5.1のTrace-Commandで確認
↓自信なし
powershell実行時の引数パース時に「\"」とか「"""」とかではない
単独「"」は不正な(余分な)メタキャラとして取り除かれるもよう。
で-cには「$a = abc; $a | out-host」が渡る。
>>430
確か「OSのルール」だと、実行ファイルに渡される引数は単一の文字列で、
スペースで区切ったり「"」を特別扱いするのはpowershell(pwsh).exeの独自のただし非常に一般的な仕様。
(大抵は、exeにコンパイルした際のコンパイラの仕様。)
435デフォルトの名無しさん
2022/07/09(土) 00:09:26.45ID:qWQ5DRIr Linuxのpowershellなら
PS> pwsh -nop -c '$a = "abc"; $a | out-host'
abc
になるんだろうな
PS> pwsh -nop -c '$a = "abc"; $a | out-host'
abc
になるんだろうな
436デフォルトの名無しさん
2022/07/09(土) 08:04:26.74ID:qWQ5DRIr コマンドプロンプトで
pwsh -nop -c "$a=\"abc\"; $a | out-host"
とするのは " 内部の " をエスケープするように見えて自然に納得できる
Windows版のPowerShellだけ
pwsh -nop -c '$a=\"abc\"; $a | out-host'
とするのは ' 内部の " をエスケープさせられて気持ち悪すぎる
おまけにLinux版でこう書くと動かないんでしょ
pwsh -nop -c "$a=\"abc\"; $a | out-host"
とするのは " 内部の " をエスケープするように見えて自然に納得できる
Windows版のPowerShellだけ
pwsh -nop -c '$a=\"abc\"; $a | out-host'
とするのは ' 内部の " をエスケープさせられて気持ち悪すぎる
おまけにLinux版でこう書くと動かないんでしょ
437デフォルトの名無しさん
2022/07/09(土) 10:32:21.09ID:d4+i07Ea >>436
コマンドプロンプト(cmd)だともっと高難易度の問題がある。
cmdのメタキャラ(&, |, <, >など)が偶数番目の「"」の後にあるとだめとか、
powershellコンソール以上に問題有り。
pwsh -nop -c "$a=\"&abc\"; $a | out-host"
同一のシェル名(pwsh)であっても、OSによって他プロセス起動の作法が違うのは仕方ないと思う。
国や地域で言葉や文化が違っても仕方ない感じ。
(POSIXとかに規定あればば別だが。)
例えば「ping」を動かすだけにしても結局オプションも挙動も違う訳だし、
現時点では他プロセス使う時点で、移植性考慮はプログラマの領分かな〜と思ってる。
コマンドプロンプト(cmd)だともっと高難易度の問題がある。
cmdのメタキャラ(&, |, <, >など)が偶数番目の「"」の後にあるとだめとか、
powershellコンソール以上に問題有り。
pwsh -nop -c "$a=\"&abc\"; $a | out-host"
同一のシェル名(pwsh)であっても、OSによって他プロセス起動の作法が違うのは仕方ないと思う。
国や地域で言葉や文化が違っても仕方ない感じ。
(POSIXとかに規定あればば別だが。)
例えば「ping」を動かすだけにしても結局オプションも挙動も違う訳だし、
現時点では他プロセス使う時点で、移植性考慮はプログラマの領分かな〜と思ってる。
438デフォルトの名無しさん
2022/07/09(土) 10:48:49.98ID:d4+i07Ea PowerShellのコンソールやスクリプト上で他プロセスを起動したい場合、
自分だとほぼ下記2通り。
(A) System.Diagnostics.ProcessStartInfoを使う。
(ちゃんと制御したい場合。スクリプトだと基本これ。)
$si = [Diagnostics.ProcessStartInfo]::new()
$si.FileName = 'powershell.exe'
$si.Arguments = '-nop -c "$a = \"abc\"; $a | out-host"'
$si.UseShellExecute = $false
$proc = [Diagnostics.Process]::Start($si)
$proc.WaitForExit()
(B) 引数を1つずつ@()に入れ、「"〜"」としたい場合は最初から値に含める。
(コマンドラインとかで手軽に。…手軽?)
& 'powershell' @('-nop', '-c', '"$a = \"abc\"; $a | out-host"')
自分だとほぼ下記2通り。
(A) System.Diagnostics.ProcessStartInfoを使う。
(ちゃんと制御したい場合。スクリプトだと基本これ。)
$si = [Diagnostics.ProcessStartInfo]::new()
$si.FileName = 'powershell.exe'
$si.Arguments = '-nop -c "$a = \"abc\"; $a | out-host"'
$si.UseShellExecute = $false
$proc = [Diagnostics.Process]::Start($si)
$proc.WaitForExit()
(B) 引数を1つずつ@()に入れ、「"〜"」としたい場合は最初から値に含める。
(コマンドラインとかで手軽に。…手軽?)
& 'powershell' @('-nop', '-c', '"$a = \"abc\"; $a | out-host"')
439デフォルトの名無しさん
2022/07/09(土) 10:59:09.60ID:qWQ5DRIr MSYS2のbashもWindows上のコマンドラインシェルだけど
pwsh -nop -c "\$a = 'abc'; \$a | out-host"
pwsh -nop -c '$a = "abc"; $a | out-host'
のどちらでも動くんだよね
PowerShellには頑張って欲しい
pwsh -nop -c "\$a = 'abc'; \$a | out-host"
pwsh -nop -c '$a = "abc"; $a | out-host'
のどちらでも動くんだよね
PowerShellには頑張って欲しい
440デフォルトの名無しさん
2022/07/09(土) 14:41:14.65ID:OGG0CV73 わざわざProcessStartInfo使うとかめんどくさいわ
Start-Processでいい
Start-Process -FilePath 'powershell.exe' -ArgumentList '-nop -c "$a = \"abc\"; $a | out-host"' -NoNewWindow -Wait
Start-Processでいい
Start-Process -FilePath 'powershell.exe' -ArgumentList '-nop -c "$a = \"abc\"; $a | out-host"' -NoNewWindow -Wait
441デフォルトの名無しさん
2022/07/09(土) 21:16:37.86ID:d4+i07Ea ProcessStartInfoが面倒なのは同意。
Start-Processで済む時は使う事もあって
大体はUseShellExecute = $trueの時かな。
Start-Processを使わない一番の理由は-Redirect*がファイルパス指定な事。
出力を無加工でファイル出力したい事がまずないので使いづらい。
なんで-PassThruのProcessオブジェクトの出力制御変更のスイッチじゃないのか。
標準出力・エラーを同時に制御するとデッドロックしやすいからかな。
Start-Processがその辺うまい事制御してくれたらスクリプトでも使うんだけど。
Start-Processで済む時は使う事もあって
大体はUseShellExecute = $trueの時かな。
Start-Processを使わない一番の理由は-Redirect*がファイルパス指定な事。
出力を無加工でファイル出力したい事がまずないので使いづらい。
なんで-PassThruのProcessオブジェクトの出力制御変更のスイッチじゃないのか。
標準出力・エラーを同時に制御するとデッドロックしやすいからかな。
Start-Processがその辺うまい事制御してくれたらスクリプトでも使うんだけど。
442デフォルトの名無しさん
2022/07/09(土) 21:55:59.58ID:0vXUA52p コマンドラインパラメーターの処理はexeをビルドした処理系のスタートアップコードに依存するのだ
MSのC/C++やMingwとかで微妙に変わってくるのだガハハ
WindowsでC/C++/C#の場合argvとかではなくWin32APIのGetCommandLineで取得するのが一番正解に近い
MSのC/C++やMingwとかで微妙に変わってくるのだガハハ
WindowsでC/C++/C#の場合argvとかではなくWin32APIのGetCommandLineで取得するのが一番正解に近い
443デフォルトの名無しさん
2022/07/09(土) 22:06:03.52ID:qWQ5DRIr444デフォルトの名無しさん
2022/07/09(土) 22:40:11.92ID:GKrnmeJx 引数のワイルドカードを展開するかしないかみたいなやつね
445デフォルトの名無しさん
2022/07/09(土) 23:17:22.46ID:d4+i07Ea MSもこの辺の気持ち悪さ・分かりづらさは分かってるみたいで
core v7とかだと環境変数かなんかで、パースルール変更できるんじゃなかったっけ。
Win10のv5.1しか使わないから知らんけど。
core v7とかだと環境変数かなんかで、パースルール変更できるんじゃなかったっけ。
Win10のv5.1しか使わないから知らんけど。
446デフォルトの名無しさん
2022/07/10(日) 00:25:59.02ID:qiFT6lHF 実行順がわかりにくい
447デフォルトの名無しさん
2022/07/10(日) 00:55:31.74ID:KsOikrPY 何言いたいかがわかりにくい
448デフォルトの名無しさん
2022/07/10(日) 01:17:57.68ID:KsOikrPY449デフォルトの名無しさん
2022/07/10(日) 04:27:28.58ID:qiFT6lHF UNIXのシェルスクリプトのマネにならないようにした結果がこれ
450デフォルトの名無しさん
2022/07/10(日) 04:30:45.24ID:qiFT6lHF PowerShellは、記号に独自の意味を持たせているから、PowerShell職人を養成しないと使いこなせない。
451デフォルトの名無しさん
2022/07/10(日) 09:49:01.94ID:os7PFybL PowerShell in ActionにはUNIXシェルを参考にしたっていろんな所に書いてあるけど
たとえば比較演算子とか
たとえば比較演算子とか
452デフォルトの名無しさん
2022/07/10(日) 10:20:51.27ID:j6DdFbos powershellはPerlの匂いがする
俺が好きになった理由はここ
俺が好きになった理由はここ
453デフォルトの名無しさん
2022/07/10(日) 20:59:21.65ID:KsOikrPY454デフォルトの名無しさん
2022/07/10(日) 21:53:38.94ID:bG/pnkmn powershellの記号が特殊とかはあまり思わないな
それより配列の扱いがトリッキーとかの方が職人の養成が必要と思う
それより配列の扱いがトリッキーとかの方が職人の養成が必要と思う
455デフォルトの名無しさん
2022/07/10(日) 22:11:42.01ID:PiYySnCe ファイル名に[]が含まれてて苦労した人なのかなと思った
456デフォルトの名無しさん
2022/07/10(日) 22:53:56.17ID:qiFT6lHF >>453
バッチファイルとの相性が最悪なのに気づかないとは情けないよ、あんた。
バッチファイルとの相性が最悪なのに気づかないとは情けないよ、あんた。
457デフォルトの名無しさん
2022/07/10(日) 22:55:51.37ID:qiFT6lHF >>451
あらゆる言語を参考にして、いろいろ混ぜ込んで、奇妙奇天烈なものになってしまった。
あらゆる言語を参考にして、いろいろ混ぜ込んで、奇妙奇天烈なものになってしまった。
458デフォルトの名無しさん
2022/07/10(日) 23:58:19.25ID:RTsqHO1/ まあ最大の問題は、空白をトークンの区切り、改行を入力に終わりとしたことだな
459デフォルトの名無しさん
2022/07/11(月) 00:03:16.90ID:bX2QAhdS 変数のスコープが他と違うPowershellには何も期待してない
グローバル変数を更新したつもりがローカル変数と見なされたりして使い難すぎる
グローバルデータを全部.NETのコンテナに逃がしてようやく使えるようになった
グローバル変数を更新したつもりがローカル変数と見なされたりして使い難すぎる
グローバルデータを全部.NETのコンテナに逃がしてようやく使えるようになった
460デフォルトの名無しさん
2022/07/11(月) 00:04:59.61ID:vt1vW9IA ファイルや文字列の操作の構文がヘンテコすぎる
461デフォルトの名無しさん
2022/07/11(月) 01:41:49.71ID:4UtqkfgJ 超ヘンテコなJavaScriptだって一世を風靡したんだからPowershellだっていけるし(震え声
462デフォルトの名無しさん
2022/07/11(月) 03:32:17.37ID:vt1vW9IA >>461
あんたPowerShellをほどんど知らないでしょ?
あんたPowerShellをほどんど知らないでしょ?
463デフォルトの名無しさん
2022/07/11(月) 07:53:28.56ID:3aArSxtS464デフォルトの名無しさん
2022/07/11(月) 09:42:24.64ID:zwDcIdQY■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 習政権、高市首相への態度硬化 台湾有事発言で連日非難 中国 ★11 [ぐれ★]
- 日本損失1.7兆円に修正 中国渡航自粛の影響試算 [蚤の市★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 「アベノミクス」で投資対象と化したマンション ローンの低金利続き「年収の12倍」借りる20代出現 [蚤の市★]
- 決め手は地名「西彼杵」を読めず…とっさの判断でニセ電話詐欺だと見抜いた女性に感謝状 [蚤の市★]
- 高市「台湾総統がバチーンと中国に言ってくれるでぇ!」台湾総統「中国は大国にふさわしい行動を…」 高市「えっ!?それだけ?」 [271912485]
- 【実況】博衣こよりのえちえち朝こよ🧪 ★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- お前らってよく仮想の敵作って叩いてるけどこれって実は素晴らしいことだよな
