PowerShell -Part 6

■ このスレッドは過去ログ倉庫に格納されています
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/

次スレは>>980が立ててね!!
2022/09/21(水) 00:41:00.54ID:MPN5wMTP
同階層にフォルダツリーA~Zまであり、それぞれのツリーの中身はバラバラです。
それぞれのツリーのCSVを出力したいのですが、やり方がイマイチ分かりません。
CSVにはツリー名、ツリー毎の合計サイズと、ツリー毎に最新更新ファイル(ファイル1つだけ)の日時を抜き出したいです。
PSFolderSizeをインストールして色んなサイトから拝借してコピペの集合体でやってみたのですが、各ツリー内の更新日を取得する部分とフォルダサイズを取得する部分を同時に行う事が私の頭では無理でした。何方かお助け頂けないでしょうか
2022/09/21(水) 17:45:18.14ID:xipfHTvE
ツリーて何だ?
フォルダに階層があってその中全部見たいということならGet-ChildItem -Recurseだぞ
2022/09/21(水) 17:57:09.50ID:Wu29T3MH
・コード貼ってバカにされるの嫌
・具体例挙げるなど仕様詳細説明面倒臭いから文章から汲み取れ
・全部やれ

こういうことだろう
舐め腐ってるヤツはスルーしときなよ
2022/09/21(水) 18:12:43.86ID:6s8rSvAF
本人はいたって真面目なパターンだろ
ググった情報を組み合わせるスキルがないということは、悲しいかな往々にして他人に要件を一発で伝えるスキルも不足しがち

同時にやるのが無理めに感じるのはパイプを使おうとしてるからだろう
for文とローカル変数で書き変えれば簡単
2022/09/21(水) 18:29:01.13ID:757dNGj4
伝えるスキルうんぬんの前に
> PSFolderSizeをインストールして色んなサイトから拝借してコピペの集合体でやってみたのですが
って言うならそのコード上げろって話
ヘタに説明するより100倍早い
2022/09/21(水) 18:53:18.61ID:VZ2CqY7n
いやできなかったコード上げても何の説明にもならんから
現状と得たい結果の図示だな
2022/09/21(水) 19:02:42.62ID:6s8rSvAF
コードを上げたほうがいいんじゃないかとか図で伝えるべきなんじゃないかとかそういうの引っくるめての伝えるスキルだよ
コミュニケーションは言葉に限定されない
2022/09/21(水) 20:42:50.25ID:9IkSSHYa
>CSVにはツリー名、ツリー毎の合計サイズと、ツリー毎に最新更新ファイル(ファイル1つだけ)の日時を抜き出したい
変なモジュール入れんでも数行で書けるからがんばれ
549デフォルトの名無しさん
垢版 |
2022/09/21(水) 22:28:24.59ID:RTQsXz5w
パワー!
550デフォルトの名無しさん
垢版 |
2022/09/21(水) 22:31:28.97ID:RTQsXz5w
しっかしコマンドレットがコマンドライン実行時とスクリプト内呼び出しでパラメータ解釈が異なるって
どんなキチガイが仕様考えたのか気になるわw
switch型パラメータをスクリプト内で動的に外したり与える方法がないとか終わってる
2022/09/21(水) 23:16:07.40ID:9fmju/sW
>>550
何を言ってるんだ?
ちゃんと質問したらお前の間違いを教えてもらえるかもしれんぞ
2022/09/22(木) 00:48:03.74ID:XoRPEjFK
Ruby で、win32ole を使って、
フォルダ以下のサイズ(再帰的な子孫も含めて)は、

require 'win32ole'

fso = WIN32OLE.new( 'Scripting.FileSystemObject' )

folders = [ "C:/Users/Owner/Documents/test_1",
"C:/Users/Owner/Documents/test_2" ]

folders.each do |folder|
folder_obj = fso.GetFolder( folder )

puts File.expand_path( folder_obj.path ) # \ を、/ に変換する
puts "#{ folder_obj.name } : #{ folder_obj.size }"
end

出力
C:/Users/Owner/Documents/test_1
test_1 : 28803

C:/Users/Owner/Documents/test_2
test_2 : 4390
553552
垢版 |
2022/09/22(木) 01:41:34.82ID:XoRPEjFK
Ruby で、フォルダ以下のファイル(再帰的な子孫も含めて)で、
更新時刻が最も最近のものを求めた

folders = [ "C:/Users/Owner/Documents/test_1",
"C:/Users/Owner/Documents/test_2" ]

folders.each do |folder|
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = folder + "/**/*"

latest_file = Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ
.max_by { |full_path| File.mtime( full_path ) } # 更新時刻が最も最近のファイルパス

puts "#{ latest_file }\n#{ File.mtime( latest_file ) }"
end

出力
C:/Users/Owner/Documents/test_1/a.txt
2022-05-19 14:38:35 +0900

C:/Users/Owner/Documents/test_2/x/x.txt
2022-02-24 16:01:54 +0900
554552
垢版 |
2022/09/22(木) 05:06:16.90ID:XoRPEjFK
Ruby で、CSV 形式で出力する部分は、

require 'csv'

result_ary = [
[ "C:/Users/Owner/Documents/test_1", "28,803", "2022-05-19 14:38:35 +0900" ],
[ "C:/Users/Owner/Documents/test_2", "4,390", "2022-02-24 16:01:54 +0900" ]
]

# 2次元配列を、CSV 文字列に変換する
csv_str = result_ary.map( &:to_csv ).join
print csv_str

出力
C:/Users/Owner/Documents/test_1,"28,803",2022-05-19 14:38:35 +0900
C:/Users/Owner/Documents/test_2,"4,390",2022-02-24 16:01:54 +0900
2022/09/22(木) 09:18:39.47ID:5Z2vYjCC
>>541
@(
"C:\dir1"
"C:\dir2"
) | %{
  $prop = [Ordered] @{Path=$_}
  $file = @(Get-ChildItem -LiteralPath $_ -Force -Recurse -File)
  ([Ordered] @{LastWriteTime='Maximum'; Length='Sum';}).GetEnumerator() | %{
    $opt = @{'Property'=$_.Key; $_.Value=$true;}
    $prop += @{$_.Key = $file | measure @opt | select -exp $_.Value}
  }
  [PSCustomObject] $prop
} | ConvertTo-Csv -NoTypeInformation
2022/09/23(金) 00:05:04.72ID:r49iT1KO
>>555
おおー無駄がなくてすごい
これぐらい書けるようになりてぇ

開始は配列の変わりにコマンドレットでも良さそう
Get-ChildItem -LiteralPath <親フォルダ> -Directory | ...
2022/09/25(日) 13:45:46.35ID:5ly2Ski6
>>556
確かに。てか半端に汎用性意識せず、素直にこんなんでも良かったな。
@(Get-ChildItem -LiteralPath <親フォルダ> -Directory).FullName | %{
  $file = @(Get-ChildItem -LiteralPath $_ -Force -Recurse -File)
  [PSCustomObject] @{
    Path     = $_
    LastWriteTime = ($file | measure LastWriteTime -Maximum).Maximum
    Length    = ($file | measure Length -Sum).Sum
  }
} | ConvertTo-Csv -NoTypeInformation
2022/09/25(日) 14:01:26.72ID:5ly2Ski6
いや、こうか。
Get-ChildItem -LiteralPath <親フォルダ> -Directory | %{
  $file = @($_ | Get-ChildItem -Force -Recurse -File)
  [PSCustomObject] @{
    Path     = $_.FullName
    LastWriteTime = ($file | measure LastWriteTime -Maximum).Maximum
    Length    = ($file | measure Length -Sum).Sum
  }
} | ConvertTo-Csv -NoTypeInformation
2022/09/25(日) 14:13:19.66ID:76wlmrvm
試してないけどフォルダにファイルが1個も無い場合を考慮できてない気がする
2022/09/25(日) 14:48:45.69ID:5ly2Ski6
知らんかった。前者つもりだった。
(@() | measure -Sum).Sum → 0
(@() | measure Length -Sum).Sum → Null
2022/09/25(日) 15:45:18.22ID:76wlmrvm
powershellはgciはともかくmeasureが遅くてファイルが多くなると辛くなるね
結局C#に丸投げとかの手段になりそう
2022/09/25(日) 16:18:35.15ID:PDKGWlWe
試してないけど
Get-ChildItem -LiteralPath <親フォルダ> -Directory | %{
 $Stat = $_ | Get-ChildItem -Force -Recurse -File | Measure-Object LastWriteTimeLastWriteTime, Length -Sum -Maximum
 [PSCustomObject] @{
  Path     = $_.FullName
  LastWriteTime = $Stat[0].Maximum
  Length    = $Stat[1].Sum
 }
} | ConvertTo-Csv -NoTypeInformation
ってやると多少効率的かと
2022/09/25(日) 17:09:36.54ID:UvTk6pcp
>>561
まあC#でやった方が速いわな
2022/09/25(日) 19:58:47.42ID:5ly2Ski6
>>562
なるほどな〜、余分な集計をする事になるとしても
measureを1回で済ませられれば効率的な可能性があるのか、
さらにパイプラインで列挙と集計が同時進行になる可能性もあったり?
と思い試してみたけど、残念ながらLastWriteTimeの-Sumがダメらしい。
-ea:SilentlyContinueなら?と思ったがLengthのMaximumしか出ない。
でもこのアイデアは使えそう。
2022/09/25(日) 20:11:16.46ID:PDKGWlWe
>>564
ああなるほど、だから小細工してたのか、すまんかった
てか、初めからURL書いとけば良かったな

$Stat = $_ | Get-ChildItem -Force -Recurse -File | Measure-Object LastWriteTime.Ticks, Length -Sum -Maximum
[PSCustomObject] @{
 Path     = $_.FullName
 LastWriteTime = [DateTime][Int64]$Stat[0].Maximum
 Length    = $Stat[1].Sum
}

https://stackoverflow.com/questions/66697384/measure-multiple-properties
2022/09/25(日) 21:00:46.43ID:UvTk6pcp
>>565
さも自分で考えたかのように書いて劣化パクリかよ
2022/09/25(日) 21:03:35.79ID:PDKGWlWe
そりゃすまんな
2022/09/25(日) 21:18:28.66ID:5ly2Ski6
PSv7だとmeasureに集計プロパティ使えるのか。
PSv5なので試せないのが残念。

速度の話が出てたからmeasureの速度がどんなもんか>>558で計ってみたら
自環境だと普通の実装(最高水位線と足し算)より7〜8倍くらい遅いわ。
まあ、標準コマンドレットのよくある結果だな…。
2022/09/29(木) 21:06:47.50ID:OAAH5wr1
タスクマネージャの詳細タブからaudiodg.exeの関係の設定を変更する操作をスクリプトで書けますか?
2022/09/29(木) 21:46:11.19ID:NUiBz/8K
Get-Process "audiodg" | %{ $_.ProcessorAffinity = $コア数 }
$コア数は2のn乗で表したコア数の数
たとえば若い番号の3コアだけ割り当てたい場合は 0xf
2022/09/29(木) 21:47:29.47ID:NUiBz/8K
上の3は4の間違い
もちろんタスクマネージャーをいじろうと思えばできるけど面倒
2022/09/30(金) 01:54:30.65ID:Ls0wbInl
>>570
わからん・・・
2の4乗=16 != 0xf ?
4=2の2乗 だと 0x2 ?

コア数というよりフラグ?マスク?ってこと?
2022/09/30(金) 05:17:13.01ID:oHn8O8ll
マスクだね
https://learn.microsoft.com/ja-jp/dotnet/api/system.diagnostics.process.processoraffinity
2022/09/30(金) 09:21:08.41ID:ZYrZXJKF
皆さんありがとうございます!
2022/10/31(月) 09:21:34.51ID:fKpjF07r
comobjectでofficeを操作してるとき、
$xxx.Count() が 2なのに
$xxx[0] 範囲外
$xxx[1] 範囲内
$xxx[2] 範囲内
$xxx[3] 範囲外
みたいなアクセスになることがあるんやが
これはどう理解すればええんや?
2022/10/31(月) 09:37:52.98ID:jAJ0SKjr
Item使わないからじゃね
2022/10/31(月) 12:19:33.83ID:K5+OjW4X
Excelってたしか値も書式もないセルはオブジェクト自体が存在しない扱いになるので、インデックスが0から始まるとは限らなかったはず
データが取れる前提で処理するとうまく行かない
2022/10/31(月) 23:20:47.42ID:9ETwK7p6
>>576
これかも
明日試してみるわ!サンクス!

>>577
これは怖いな
今回は関係なさそうだけど、心に留めておくわ、サンクス
2022/11/01(火) 16:19:30.34ID:3yQnaOmT
Excelは1オリジンやで
2022/11/04(金) 21:25:18.64ID:HyYadl7b
誰かmtkclient教えてクレメンス
2022/11/06(日) 12:43:06.89ID:xY1K1bhL
>>566
>>555からの流れ、色んな書き方があるんだなー、と非常に為になった
582デフォルトの名無しさん
垢版 |
2022/11/06(日) 19:05:17.89ID:vSW2pkDA
$a = "abc::de/f/ghi/123jk"
$b = $a.TrimEnd("/")
をしても$bの出力が「abc::de/f/ghi/」にならないのですが、どこが間違っているのでしょうか?
2022/11/06(日) 19:19:37.21ID:NZll9bPy
>>582
同じ勘違いしたことある
指定文字「を」末尾からtrimするのがTrimEnd

$a.TrimEnd("jk123")

Trimメソッドは正規表現使えないからreplaceステートメントをつかう

$a -replace "\w*$",''
584デフォルトの名無しさん
垢版 |
2022/11/06(日) 23:51:09.18ID:vSW2pkDA
>>583
ありがとうございます!
今回はreplaceを使っていこうと思います
2022/11/10(木) 20:57:05.64ID:bawORDDu
PowerShell 7.3 General Availability
https://devblogs.microsoft.com/powershell/powershell-7-3-general-availability/
What's New in PowerShell 7.3
https://learn.microsoft.com/en-us/powershell/scripting/whats-new/what-s-new-in-powershell-73
2022/11/12(土) 14:51:35.07ID:p3H1JcgM
>>585 日本語訳

PowerShell 7.3 の新機能
https://learn.microsoft.com/ja-jp/powershell/scripting/whats-new/what-s-new-in-powershell-73
2022/11/12(土) 15:22:51.03ID:c/ILT9OL
11でもPowershell起動すると新しいのお試ししろとか表示されるけど5.1で十分だよなぁ
他の鯖系のベンダーのモジュールが5.1に対応しなくなったら考えるわ程度
2022/11/12(土) 19:04:11.88ID:lKqjLh4g
>>586
前からexperimentalで有ったのは知ってたし、オプションだから嫌なら切ればいいんだけども…

cmdから呼ばれる想定のコマンドは引数処理に癖があるからといって、特定のプログラムのみ特別扱いするワークアラウンド的挙動にはちょっと賛同できない
ワークアラウンドというのはユーザーがやるものだ

pwsh側で個別対応をするとしても、ユーザーが期待する形式の引数を取って、コマンドの期待する形式に変換するラッパースクリプトを用意すれば済むだけの話

普段linux/macでpwsh使ってるから、どれ程の癖なのかは図りかねるが、
2022/11/14(月) 01:13:06.37ID:zoPzNIvr
$obj.('行');

1. 上記を7.3で実行するとハングする。
2. 5.1や7.2ではハングしない。
3. $prop = '行'; $obj.$prop; でもハングする。
4. '行'が違う言葉だとハングしない。
5. $obj.行; だとハングしない。
バグ?バグなの?ゲイツに電凸していいの?
590589
垢版 |
2022/11/14(月) 01:23:18.32ID:zoPzNIvr
あ環境はWindows11とmacOS13で再現してます。連投スマソ
591589
垢版 |
2022/11/14(月) 21:56:16.00ID:zoPzNIvr
589の条件4についてだけど、
$obj.([System.Text.Encoding]::UTF8.GetString((0xE8, 0xA1, 0x8C)));
でもハングして、UTF-8での先頭バイトが0xE8だった場合にハングするっぽい。
毎回ハングするのであんまり回数試してないけど。
2022/11/15(火) 01:46:29.41ID:E2xRIJUz
まともにテストしてないか
変なメンテナが紛れてるか
2022/11/15(火) 11:09:43.75ID:ADWqgLY3
7.30-preview.2 Core win10(en-US)だけど大丈夫な感じ

$gyo =[System.Text.Encoding]::UTF8.GetString((0xE8, 0xA1, 0x8C)))
$gyo

$trans=@{$gyo="go"}
$trans.$gyo, $trans[$gyo]
go

(まだ日本語IME入れてない新品なので行が入力できないのはご愛嬌)
属性/キーはハッシュ可能な任意のビット列で構わないはずなので、単にエンコルーチンの問題のはず、7.30-preview-2以降のgitレポの差分みては
2022/11/15(火) 11:40:25.67ID:Xte85wf7
cx-fxは開始バイトだから安定リリースで出してたらマルチバイト圏壊滅してそうだが
595589
垢版 |
2022/11/16(水) 02:47:51.66ID:VVslFgtK
>>592-594 ども!
>>593 ありがとうございます。
preview.3 から preview.4の間でなんかあったとこまで突き止めましたが、
preview.3から5までのStart-PSBootstrapがバグっててビルドに予想以上に時間かかったからもう寝るお
596589
垢版 |
2022/11/18(金) 02:58:42.77ID:5YGh8aoa
お巡りさんこの人でつ38909f7ee
でそのコミットの中身がこちら
Update .NET SDK version from `7.0.100-preview.2.22153.17` to `7.0.100-preview.4.22252.9` (#17061)
おふぅ。PowerShellのバグを追っていて大変なものを見つけてしまったーどうしよう?
2022/11/29(火) 18:07:22.13ID:bVQqRFK0
以前は PowerShell の日本語ドキュメントのリポジトリが Github に置いてあったはずですが今は消えていますよね?
事情がよくわからないんですが、マイクロソフトとしてはコミュニティで日本語翻訳を運用しない (機械翻訳でやっていく?) ということなんでしょうか。

それはそれとして、諸事情でネットワーク接続できない場所で日本語ドキュメントを読みたいんですが
どこかでまとめてダウンロードする方法とかありませんかね?
598デフォルトの名無しさん
垢版 |
2022/11/29(火) 21:34:29.76ID:S4GKm+YH
>>597
マイクロソフトにかきらず、英語以外の言語に翻訳することをみんなやめてしまっただけ。

ソフトウェアの更新スピードが速すぎて、ドキュメントを人間が翻訳する時間がない。
2022/11/29(火) 21:48:53.54ID:noJ3pHan
日本マイクソロフトは何してんの
2022/11/29(火) 23:10:55.01ID:F0R68kvV
日本語にすると曖昧になっちゃうからな
英語で厳密に説明されたほうがいいだろうし、ソフトウェア技術者だったら英語は素養の一つだね
2022/11/30(水) 01:07:23.00ID:oNUduEv2
>>599
ちょまどはイベントに参加したり楽しくやってる
2022/11/30(水) 01:12:58.71ID:TaPBZKHt
文字列検索する時は、ラテン文字のキーワードが検索結果に埋もれない日本語ドキュメントのほうが便利
2022/11/30(水) 02:05:17.65ID:k8p89eha
>>597
Get-Helpで取れる情報ならUiCulture指定してSave-Help
https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_updatable_help
それ以外ならGitHubから英語ドキュメント落としてきて機械翻訳かな
オフライン環境でスクリプト書く気はしないから必要なドキュメントは限られるのでは
2022/11/30(水) 08:53:37.63ID:QfqHtuzd
どうしてもドキュメントを日本語化してほしいなら16ビット時代みたいに
日本語版がリリースされる頃には英語版の新バージョンがリリースされている
みたいな事になってもおま国とか文句言わないようにしないとね
英語版が完成してからじゃないと翻訳作業を始められないんだから
2022/11/30(水) 12:40:03.59ID:4G7kek1Y
Google, DeepL, みらい翻訳

「みんなの自動翻訳@TexTra®」は、
国立研究開発法人情報通信研究機構(NICT)が開発した自動翻訳サイトです。無料
mt-auto-minhon-mlt.ucri.jgn-x.jp/

翻訳したいサイトのURLを入力するだけで、自動翻訳結果をエディタ上に再現
2022/11/30(水) 13:17:37.01ID:Occ07s0g
機械が無料で一瞬でそれなりの翻訳をしてくれる時代になったのに
わざわざ多ヵ国の翻訳チームを雇って変わり続ける膨大なドキュメントへの人件費を出す判断なんてできんだろなあ
607597
垢版 |
2022/11/30(水) 17:21:56.68ID:zA9UzzGK
私は現時点では PowerShell について全く知識を持たず、
入門的な資料を移動中の合間にタブレットコンピュータで読みたいと考えています。
(通信は出来ないので事前に入れておく必要があります。)

基本理念をわかれば個々のコマンドの資料はたぶん英語でも理解できると思うんですが
新しい概念そのものを英語で読むのはしんどいです。

オフラインで読みたいと思うと ePub (などの電子書籍形式) になっているとやりやすくて
そうするには元が Markdown なら一発で出来ると思ったんですが、
機械翻訳を通してその形に持っていくとなると面倒ですね。
608605
垢版 |
2022/11/30(水) 17:40:14.72ID:4G7kek1Y
Markdown は、HTML になるから、
「みんなの自動翻訳@TexTra®」で翻訳できるのでは?

翻訳したいサイトのURLを入力するだけで、自動翻訳結果をエディタ上に再現と書いてあるから、
ローカルPC にある、HTMLへのパスを入力すれば?
609597
垢版 |
2022/11/30(水) 18:10:28.67ID:zA9UzzGK
>>608
翻訳できることにはなんの疑いも持ってないですよ。
コマンド一発で出来るツールはないので手間がかかると言ってます。
2022/11/30(水) 21:29:56.51ID:QfqHtuzd
適当な電子書籍の解説本でも買えば?
2022/11/30(水) 23:01:06.28ID:k8p89eha
過去の公式日本語訳が出てきたとして、基本理念を理解したい人の役に立つレベルとは思えない
電子書籍買って読むほうがいい
2022/12/01(木) 08:18:35.61ID:iTNwCGJv
インアクションの邦訳ぐらい?古いのしかないな
2022/12/01(木) 13:08:12.37ID:Qs+E1f1w
もしも古い翻訳テキストが手元にあるなら
それでいいんじゃね
新しい要素だけググって調べてブラウザ上でctrl+Sするなりして保存しておけば?
614デフォルトの名無しさん
垢版 |
2022/12/03(土) 12:28:32.79ID:Jt/U29yp
配列の要素を逆順にしたものを得たいのですが, …たとえば,
$a = @(10, 0, 5)
これに対して
$a[-1..-$a.Length] …とすれば,@(5, 0, 10) が得られて,
それで不満は無いのですが,何かもっとシンプルに書ける気がして.
(→ でもこれって $a[-1..0] とは書けないんですね.)

あるいは
[array]::Reverse($a)
とすることで,$a 自体が逆順の中身に変えられるのですが
でも $a自体は 変えたく無いのです

感覚的には
$a.Reverse() とか
$a | Reverse-Object みたいに書けたらいいのに
とは思うのですが(…そんなものは無い)

文字列だったら
[linq.enumerable]::Reverse("abcdef") で逆順を得られるのに
同じ場所に 数値の配列を書いて
[linq.enumerable]::Reverse(@(0,5,1,2))
…としても,何故かできない (なぜなのかはc#に勉強不足な私には分からず)

ってなわけで,別に困ってるわけでは無いのですが
もっと シンプルな書き方ってありますか
615デフォルトの名無しさん
垢版 |
2022/12/03(土) 14:39:08.81ID:H3EtATlx
$a[length - 1 - n]
2022/12/03(土) 15:49:40.73ID:h4dim/Vw
>>614
とりあえず、$a[-1..-$a.Length]だと-1,0,1で並ぶから@(5,10,0)になっちゃうはず。
$a[$a.length..0] が正。
個人的にはlengthじゃなくてcount使ってほしい。

後はsort-object使うか。
$a|sort -des でいける。
ただし遅いので巨大配列には向かない。
617デフォルトの名無しさん
垢版 |
2022/12/03(土) 18:40:22.74ID:Jt/U29yp
>>616
$a[$a.Count..0] 言われてみれば! …これ使わせていただきます
なお,sort を使うと,どうしても数値でsortされてしまうので うまくいかない感じです
何の意味も無い基準でsortして(何の順番も変えないで) -desだけしてくれたらいいのですが
2022/12/03(土) 19:09:31.97ID:K8Dj9wl7
>>614
[linq.enumerable]::Reverse([int[]]@(0,5,1,2))
LinqのReverseはこれで動く
619デフォルトの名無しさん
垢版 |
2022/12/03(土) 19:46:36.52ID:Jt/U29yp
>>618 intの配列にcastってことなのか…半分くらいしか理解してませんが
ありがとうございます.
LINQは powershellだと 無理やり感があって,かえって使いにくい感じは ありますね
2022/12/03(土) 22:02:33.57ID:vihcAie/
Ruby なら、

reverse -> Array
reverse! -> self 破壊的変更

a = ["a", 2, true]
p a.reverse #=> [true, 2, "a"]
p a #=> ["a", 2, true] (変化なし)

a = ["a", 2, true]
p a.reverse! #=> [true, 2, "a"]
p a #=> [true, 2, "a"] 破壊的変更
621デフォルトの名無しさん
垢版 |
2022/12/05(月) 15:26:18.97ID:9N6A06cG
きっと とても初歩的なことだとは思うのですが

$a = "abc"
$job = start-job { write-host $a }
receive-job -Job $job # → 何も出力されない

これって スコープの問題なんでしょうか
{ブロック}の中の $aの中身を "abc"にしたいのですが
2022/12/05(月) 17:43:14.26ID:sXIIIS0k
$using:a
About_Remote_Variables
623デフォルトの名無しさん
垢版 |
2022/12/05(月) 18:59:35.95ID:9N6A06cG
>>622 ありがとうございます
ブロックの中の $a を $Using:$a と書けば望む動作になりました
まぁ、何でusingって名前なんだろ?とか
Remote Variablesとは言うけれど別にリモートじゃないし(?)など
まだ不思議な感じは残りますが…もうちょっと調べたり勉強してみます
624デフォルトの名無しさん
垢版 |
2022/12/05(月) 19:22:50.61ID:9N6A06cG
$a = "abc"
$job = start-job { param($str); write-host $str } -Arg $a
でも 受け渡せるんですね。
2022/12/05(月) 21:14:48.29ID:Xw9Qnajp
Start-Jobでスクリプトブロック実行すると
別プロセスのpowershell.exeが起動してそっちで動く。(少なくともPSv5.1では。)
イメージとしてはコンソールや.ps1から「powershell.exe -f 他スクリプト.ps1」で
他プロセスを動かすくらいに別スコープだと思ってればいいと思う。
626デフォルトの名無しさん
垢版 |
2022/12/06(火) 03:20:51.26ID:PbeCdWM3
>>599
マイクロソフトのサポートにはとんでもない質問が大量に押し寄せる。

Windows Serverが起動しなくなった。電源が入ってないけど、Windowsのバグに違いないやら、しつこい嫌がらせやら、女に変なことを聞く変態やらと3万円も払って電話してくる。
627デフォルトの名無しさん
垢版 |
2022/12/06(火) 03:22:42.62ID:PbeCdWM3
PowerShellのバージョンがわかりませんのでどうすればいいですか?

こんなのを3万円も払って教えてもらうのが日本人
2022/12/06(火) 06:55:15.41ID:yvaEv+2c
一時片手間にカスタマサポートやってたことあるけど結構トンデモ問合せは多い
いろいろ聞いて行ったら他社の製品の問合せだったなんてオチすらあるし
629デフォルトの名無しさん
垢版 |
2022/12/06(火) 07:03:21.20ID:wGOv2qdu
>>625 そういうイメージ…ということでわりと納得.
同じことですが…では、ブロックの中で処理中に 変数に何かを入れても
それは、receiveするまでは 取り出せないってことか…
2022/12/19(月) 19:06:25.36ID:ayS530mj
functionの中でhashtable @{}を作成してその中にウィンドウと紐付いてるハンドルオブジェクトやらを入れて返して
functionの呼び出し側で使おうとしたら無効なオブジェクトやら何やらのエラーが出てまともに使えなかった
PSObjectに変換して返したらエラーは出なくなったがこれ何だろう
怖すぎなんだが
2022/12/21(水) 00:09:46.82ID:5pWmYDMC
参照型/値型とかその辺の理解は問題ない?
とエスパーしてみる
2022/12/23(金) 17:58:06.26ID:F84mgbO0
紐付けてるオブジェクトやらは.NETの参照型ね
値型だったら恐らくこの問題は起きてないだろうし
PSCustomObjectのプロパティとhashtableの値への紐付けでオブジェクトの生存期間に差異があるようにしか見えないから
functionから戻る時に何か想定外な事が起きてるんだろうなあ
2022/12/27(火) 14:24:53.22ID:r8IxISV7
コマンド・プロンプトも一切つかったことない状況から
powershellの勉強最近始めたけど難しいね

先ず参考書籍少なすぎ
何から手を付けたらいいのか全くわからん

先輩諸兄はどんな感じで習得していったの?
2022/12/27(火) 14:35:15.62ID:ZD0ehGa/
必要に迫られて色々とネットで調べて解決策を探し回る
そのコードから理解できない部分や言語の基本を調べる(変数や表示の仕方とか色々と)
という泥縄式だな
2022/12/27(火) 15:00:48.14ID:r8IxISV7
ネットしかないのか、仕方ないな、、、

しばらくは苦しみながら覚えるしかないかぁ
2022/12/27(火) 15:45:26.24ID:/tVTIbQ7
Get-Help about_
で出てくるのを一通り読んどきゃ何も苦しむことなんてないだろ
2022/12/27(火) 17:56:17.16ID:0E4juWNJ
ある程度使えるようになってから書籍買って読んだら
「大体全部知ってるわ」ってなったから
ネットだけでもいけるだろ
2022/12/27(火) 18:20:49.07ID:U6V4cNSL
他の言語と違って思い込みて書かれた間違った記事が多いから警戒すべし
2022/12/27(火) 20:24:26.94ID:jYPDn/gh
ほかの開発言語やシェルプログラミングにまったく疎い状況からPoweshellで入門してゴリゴリ使いこなしてやろうという路線は正直筋が悪いと思う
とはいえ勉強のためにPythonあたりの入門書をやれとも言いづらい
やはり泥縄式かな
2022/12/27(火) 21:27:46.01ID:T5RPj38W
>>639
一応VBAとGASが多少できるなったから他の言語も余裕かな、っておもって
PowerShellに手を出したら苦戦してる感じ

一通り基礎を覚えたら実践的に色々と試してみたいけど
powershellは色々覚えることが多すぎてメンドイ、、、
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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