1 名前:デフォルトの名無しさん mailto:sage [2022/02/13(日) 18:36:12.07 ID:LaQ04ZoE.net] 前スレ PowerShell -Part 5 https://mevius.5ch.net/test/read.cgi/tech/1615994992/ 次スレは>>980 が立ててね!!
752 名前:デフォルトの名無しさん mailto:sage [2023/04/01(土) 22:58:19.34 ID:sdpm0Gxz.net] あ〜、 > コマンドプロンプトのstartコマンドのように > 新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか というか 新しいウィンドウを作成せず、 コマンドプロンプトのstartコマンドのように使うプロセッサを指定して起動するにはどうすれば良いですか という感じか。であればこれまでに出てた回答の方が正しいね。 ほぼ同じだけど自分なら $proc = Start-Process -FilePath 〜 -NoNewWindow -PassThru; $proc.ProcessorAffinity = 1; $proc.WaitForExit(); みたいにするかなぁ。(でもStart-Processじゃなく小回りのきくProcessStartInfoを使うかな?)
753 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 00:15:44.70 ID:l9+T+h5c.net] 質問です。 外部コマンドの標準出力やエラー出力を一緒に変数に入れたいのですが、 $result=外部コマンド.exe 2>&1 この式で一見動作はしてるようのですが、外部コマンドからエラー出力があった場合に赤い色が付き、powershell的なエラーメッセージも追加されてしまいます。 意図としては色とか追加メッセージとかは不要で、純粋に外部コマンドの標準出力やエラー出力を一緒に変数に取り込みたいだけなのですが、 そういう場合どう記述したら良いでしょうか。
754 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 00:47:59.12 ID:h0WbN+8B.net] 外部コマンドの引数が不要またはシンプルなら、 簡単で分かりやすいのはcmd上で標準出力にする方法 $result=cmd /c "外部コマンド.exe 2>&1"
755 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 01:46:53.77 ID:l9+T+h5c.net] >>741 cmd脱却を考えているので、できればpowershell流?の書き方があればお願いいたします
756 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 03:44:54.54 ID:byiZ93ic.net] >>742 Powershellでcmdを使いこなす技術を鍛えたほうが幸せになれると思うよ
757 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 11:17:09.81 ID:l9+T+h5c.net] ためしにChatGPTに質問してみたら以下の回答でした 質問「powershell上から外部コマンドを実行し、その標準出力とエラー出力を、powershellによる出力の加工を抑止した状態で1つの変数に入れたい」 $output = & <コマンド> 2>&1 | Out-String Out-Stringは盲点でした。一応文字列として取得できているのでこれでいいのかな
758 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 11:29:33.76 ID:yOzYb5by.net] PowerShellはあてにならないからcmdに頼ることも多いよな Write-Host Test 1 New-Item -Path target1 -ItemType Directory New-Item -Path junction1 -ItemType Junction -Value target1 Write-Host Test 2 New-Item -Path test2 -ItemType Directory Push-Location -Path test2 New-Item -Path target2 -ItemType Directory New-Item -Path junction2 -ItemType Junction -Value target2 これが失敗するなんて想像してなかった
759 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 15:23:02.64 ID:9IrG8+0n.net] >>745 PowerShell5.1だと失敗しないな 7.3は駄目だった ターゲットのパスを絶対パスにすれば作れる New-Item -ItemType Junction can't create relative link #18251 https://github.com/PowerShell/PowerShell/issues/18251
760 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 16:46:18.09 ID:yOzYb5by.net] ジャンクションなら絶対パス必須でもいいけど シンボリックリンクでは相対パスが使えないと不便 >>745 のテストをシンボリックリンクに変えてもやっぱりおかしい ターゲットがディレクトリなのにファイルのシンボリックリンクになる 条件次第で逆にすることもできる タイプ間違いだと補完や削除をするときに困るんだよな だから最初からcmd.exeでmklinkしてる
761 名前:デフォルトの名無しさん mailto:sage [2023/04/02(日) 21:47:00.28 ID:9IrG8+0n.net] Target type detection (file/directory) for relative symlinks is still broken, even on Windows #15235 https://github.com/PowerShell/PowerShell/issues/15235 これか? 2年前に立ったissueなのにまだ直ってないみたい
762 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 07:48:59.39 ID:Jr4h81FG.net] >>739 あの〜、コマンドプロンプトのstartだと1行の start /B /AFFINITY 1 cmd.exe のように「新しいウィンドウを作成せず、使うプロセッサを指定して起動する」には 小回りのきくProcessStartInfoを使うとどう書くの?
763 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 08:48:40.85 ID:hrmFy8ir.net] .NETでの普通のやり方ならググるれば出てくるよ
764 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:13:34.50 ID:d+sLTFCG.net] 例示ではプロセス起動・Process型オブジェクト取得にStart-Processを使ったけど >>739 は普段はProcessStartInfo使ってるってだけじゃないの。 私も引数あるときはStart-Process(-ArgumentList)避けてProcessクラス使う。
765 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:20:59.87 ID:9kyxsKiX.net] PowerShellってWebスクレイピングには向いてないですか? Pythonで作った方がいいですか? PowerShellは職場用のスクリプトを何個か作ったりして少し分かるのですが、Pythonはまったく不慣れなので迷ってます
766 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 21:35:29.28 ID:NHigh4Tg.net] Poweshellでちょっスクレイピング sloppy-content.blog.jp/archives/12057529.html 【PowerShell】SeleniumモジュールでWebスクレイピングしたい https://zenn.dev/hara_power/articles/815e3f3dc1e5655c4c22
767 名前:デフォルトの名無しさん mailto:sage [2023/04/03(月) 22:09:14.13 ID:FTaZkaBO.net] Windowsに限ればスクレイピング以外にもブラウザに直接細工する手段が充実してるからライブラリ頼みのpythonより向いてるとも言える
768 名前:752 mailto:sage [2023/04/04(火) 10:40:01.35 ID:4xPC11r9.net] >>753 >>754 ありがとうございます PowerShellでやってみようと思います
769 名前:デフォルトの名無しさん mailto:sage [2023/04/08(土) 22:48:22.89 ID:wqsbQ+QM.net] PowerShellでPersonal Communicationsを操作しようと思い 以下のサイトを参考にしようとしたのですが https://www.tekizai.net/entry/2021/10/04/063000 64bit版のPowershellでは出来ないようです 64bit版でも動かせるように変更はできないでしょうか?
770 名前:デフォルトの名無しさん mailto:sage [2023/04/08(土) 23:26:55.43 ID:ymsLMaB3.net] 64bit環境用のPersonal CommunicationsのOCXやらが無い場合は32bitのpowershellからCreateObjectするしかないとは思うけど そのサイトのVBA版では環境に関する言及がないね 32bit版Officeを使っているという前提で書いてるのかもしれないが試してみないと判らないね
771 名前:デフォルトの名無しさん [2023/04/10(月) 20:51:54.13 ID:4PCv5Fk3.net] すいません、当方SEで技術的な質問です administrator権限のユーザーでLinuxサーバーからパスワード認証でなく、秘密鍵と認証鍵の認証方式でwindowsサーバーにSSHを掛けたいのですが、administrator権限のユーザーですと、パスワードを聞かれてしまいます 他の権限のユーザーは問題無く認証されます administrator権限では認証方式のSSHは使えないのでしょうか?
772 名前:デフォルトの名無しさん mailto:sage [2023/04/10(月) 21:12:02.69 ID:bM8RH+P4.net] >>758 superuser.com/questions/1407020/ddg#1407042
773 名前:デフォルトの名無しさん [2023/04/10(月) 21:31:04.64 ID:4PCv5Fk3.net] >>759 ありがとうございます 明日、業務で試してみます
774 名前:デフォルトの名無しさん mailto:sage [2023/04/14(金) 21:40:03.65 ID:qiPEiEw+.net] Windowsのディスプレイ設定で拡大率を100%以外にしてると フォームの文字がぼやけるんだけど、なにか解決策はありますか? Add-Type -AssemblyName System.Windows.Forms Add-Type -AssemblyName System.Drawing $form = New-Object System.Windows.Forms.Form $form.text= "タイトルはぼやけない" $label = New-Object System.Windows.Forms.Label $label.Size = New-Object System.Drawing.Size(300,20) $label.Text = "ディスプレイ拡大率が100%以外だと文字がぼやける" $form.Controls.Add($label) $form.ShowDialog()
775 名前:デフォルトの名無しさん mailto:sage [2023/04/14(金) 21:40:32.33 ID:qiPEiEw+.net] ちなみにOSはWindows11です
776 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 13:51:30.62 ID:iq3ZlEDB.net] その辺て外人もあまり正解に辿り着いてない箇所だな 俺も辿り着いたとは言えんけど面倒だった
777 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 14:12:07.08 ID:ig+gwe+P.net] C#を使うのが最適解
778 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 15:02:15.83 ID:cOO792TH.net] powershellじゃなくてWindowsFormsの問題でしょ 「WindowsForms ぼやけ」で検索したらいくらでも出てきたけど
779 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 19:25:15.71 ID:erslMsE0.net] WPFで作れば違うのか?
780 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 20:21:51.02 ID:iq3ZlEDB.net] ちょっと意識して組めばできなくはないから環境を変える程でもないな
781 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 22:14:25.62 ID:raQFwlCG.net] c:\aaa\bbb\ccc\hhh c:\aaa\ddd\eee c:\aaa\fff\ggg(以下続く) というフォルダ構造があった場合、ccc(サブフォルダhhhも含む)、eee、gggのフォルダを別のフォルダにコピーしたいんですがうまくいきません。 chatGPTに聞いたところ ($rootFolder=c:\aaa、$targetFolderはコピー先) $targetFolders = Get-ChildItem $rootFolder -Recurse -Directory | Where-Object { $_.FullName -like "$rootFolder\*\*\[ceg]" } となり、少し変更して $targetFolders = Get-ChildItem $rootFolder -Recurse -Directory | Where-Object { $_.FullName -like "$rootFolder\*\*" } としてみたんですが、これだとcccフォルダがコピー先に存在していた場合hhhフォルダがcccフォルダとは別にコピーされてしまいます。 同じフォルダ名があった場合サブフォルダの処理を飛ばしてフォルダ構造したままコピーする方法はないでしょうか。
782 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 22:16:07.91 ID:raQFwlCG.net] フォルダ構造したまま→フォルダ構造を維持したまま 失礼しました。
783 名前:デフォルトの名無しさん mailto:sage [2023/04/15(土) 23:22:30.72 ID:iq3ZlEDB.net] ・同じフォルダ名があった場合サブフォルダの処理を飛ばしたい ってう制約を加えてchatGPTに聞いたらいいんじゃね
784 名前:768 mailto:sage [2023/04/16(日) 01:08:07.22 ID:i+x2SgN3.net] >>770 試してますがうまくいきませんね。aaaやbbbが例えであることをうまく理解してくれなくて、 全てのフォルダ名を手入力する必要があるコードしか作ってくれません。○や△みたいな記号に置き換えても同じ。 get-childitemで特定の深さ以下のフォルダ名を取得することができればうまく行きそうですが、 -depthは特定の深さ「まで」のフォルダを検索するオプションですよね? 特定の深さ以下のフォルダを検索する方法はありませんか?
785 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 11:56:14.63 ID:QYDIaDii.net] 一発でrecursiveでやるのを諦めて泥臭く2重なり3重なりの繰り返し処理にして 自分でフォルダを掘り下げていけばいいんじゃないの
786 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 11:57:11.68 ID:QYDIaDii.net] 深さが動的なら関数にして再帰呼び出し
787 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 12:07:35.90 ID:Gz6gIEIr.net] >>771 「特定の深さ以下」ではなく「特定の深さ直下」を対象としたいんだよね?
788 名前:デフォルトの名無しさん [2023/04/16(日) 12:38:10.68 ID:SPigkToS.net] >>771 相対パスの概念がないのか?
789 名前:デフォルトの名無しさん [2023/04/16(日) 12:47:20.03 ID:SPigkToS.net] >>768 はネタかもな コピー先に何があるのかチェックしないという発想は、まったく理解できない。 初心者なら前提条件という概念がないのはわかる。 先にあったらこうする、そうでなかったらこうするなどの条件分岐がないなら、強引にやればいい。 そもそもROBOCOPYコマンドでできることをやろうとしているのは、これ学校の課題なのかなと思いました。
790 名前:デフォルトの名無しさん mailto:sage [2023/04/16(日) 15:01:28.21 ID:EhcVUpdk.net] 深さ3のディレクトリをそのままコピーすりゃいいだけじゃないの?
791 名前:768 mailto:sage [2023/04/17(月) 01:51:03.87 ID:GaP+UugE.net] >>774 そうなんですが、>>768 だとd:\コピー先\ccc\hhhとしたいのにcccフォルダがすでにあると d:\コピー先\ccc d:\コピー先\hhhになっちゃうんですよね。 >>772 の方法か、もしくは>>776 robocopyとforeachで何とかできるか? とりあえず自分であがいてみます。
792 名前:デフォルトの名無しさん mailto:sage [2023/04/17(月) 02:46:16.45 ID:dBG5z/eM.net] 入出力をちゃんと定義できてないからおかしな事になる初心者あるあるだな
793 名前:デフォルトの名無しさん mailto:sage [2023/04/17(月) 11:31:05.75 ID:udj2SRYX.net] 特定の深度だけ処理してみた ※$Sourceはフルパス指定であること param( [string] $Source, # $Sourceからの相対深度 [int] $RelativityDepth ) # パスを\と/で区切って配列化 $SourceDirSplit = $Source.Split([System.IO.Path]::DirectorySeparatorChar).Split([System.IO.Path]::AltDirectorySeparatorChar) foreach ($TargetDir in @(Get-ChildItem -LiteralPath $Source -Recurse -Directory)) { # パスを\と/で区切って配列化 $TargetDirSplit = $TargetDir.FullName.Split([System.IO.Path]::DirectorySeparatorChar).Split([System.IO.Path]::AltDirectorySeparatorChar) # 指定深度にあるDirを処理 if ($TargetDirSplit.Count -eq ($SourceDirSplit.Count + $RelativityDepth)) { # 一致したディレクトリを返す $TargetDir } }
794 名前:デフォルトの名無しさん mailto:sage [2023/04/19(水) 22:39:13.81 ID:CpwHPFTk.net] Start-ThreadJob や Register-EngineEvent のスクリプトブロックの中で キャプチャされずにWrite-Output 相当の出力をする方法はないでしょうか パイプラインに流したいので Write-Host ではなく Write-Output したいです 別のプロセスを経由する方法は思いついたのですが残念過ぎますし ForEach-Object -Parallel のようにキャプチャされなければ良いのに function hogepiyo { begin { 処理本体はここで Start-ThreadJob しておく } process { … } end { … } clean { … } } なんちゃら | hogepiyo | ぽげむた のようにしたくて考えてます 要は入出力と処理を非同期にできれば他の方法でもありがたいです
795 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 22:12:24.17 ID:dJqrvGvM.net] キャプチャとか何言ってるのかわからない
796 名前:デフォルトの名無しさん mailto:sage [2023/04/20(木) 22:40:35.29 ID:fUuxiSJs.net] PowerShellでフォーム作るの割と苦痛なんだけど何かデザインモードとかないの?
797 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 05:21:56.20 ID:ZJfuu8vu.net] Where-object多様するスクリプトに数万行のcsv食わせたら処理に1時間くらいかかる… 大量のデータ処理はWhere-object使うなってみかけたけど使わん方がいいのか
798 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 07:34:50.39 ID:TBBX4m6H.net] 件数が少ないことが確実な時しか使わない。 スクリプトだとほとんど foreach(){} 使ってる。 パイプライン処理したい場合でも &{} や .{} や function の process{} あるいは filter。
799 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 09:17:07.60 ID:kA/+t8w0.net] >>783 PowerShell Pro Tools https://ironmansoftware.com/powershell-pro-tools
800 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 11:30:54.75 ID:c3fakvC2.net] >>784 PowerShell スクリプトのパフォーマンスに関する考慮事項 ttps://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/performance/script-authoring-considerations?view=powershell-7.3
801 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 17:50:40.46 ID:4gKwO2KA.net] >>782 出力がコレクションにためられて Receive-Job が必要になるのを回避したい Start-ThreadJob の -StreamingHost オプションの Write-Output 版な感じ そんなオプションはないから回避方法を知りたい Start-TheadJobだけでなくイベントハンドラから出力する場合も同じ イベント飛ばせばいいかと思ったらハンドラがジョブ扱いされて頭抱えた どうすれば Receive-Job を必要とせずに Write-Output 相当の出力ができるのだろう
802 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 18:06:57.94 ID:xAAOLjx6.net] >>785 >>787 40万行処理するのに3時間かかったから作りなおすわ…
803 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 19:56:34.84 ID:6pSKsEtx.net] >>788 Jobである必要がないならRunspacePoolでできるんじゃね
804 名前:デフォルトの名無しさん mailto:sage [2023/04/21(金) 21:03:30.48 ID:Vzmd1cD+.net] >>786 おお、あるのか来週会社で使ってみる ありがとう
805 名前:デフォルトの名無しさん mailto:sage [2023/04/22(土) 10:34:00.20 ID:iFkcYPBt.net] function target ・入力を読み続ける ・最後に読んだ入力を1秒間隔で出力し続ける ・入力が q なら終了 処理遅延を無視した理想的な使用例が . { $s = Get-Date; 1; sleep 3; 2; sleep 3; 'q' } | target | % { '{0} {1}' -f (Get-Date) - $s, $_ } 0:00:00.0000000 1 0:00:01.0000000 1 0:00:02.0000000 1 0:00:03.0000000 2 0:00:04.0000000 2 0:00:05.0000000 2 となるような function target はどうすれば実現できますか 処理時間でずれていくのはもちろんかまいませんが 入力待ちにも出力を続ける具体例が知りたいです
806 名前:デフォルトの名無しさん mailto:sage [2023/04/22(土) 10:36:10.71 ID:iFkcYPBt.net] おっと間違い (Get-Date) - $s でなく ((Get-Date) - $s) だ
807 名前:デフォルトの名無しさん mailto:sage [2023/04/22(土) 16:45:49.14 ID:3JkCsMe2.net] >>792 「qなら終了」が何を示すかによるが、powershellのパイプは途中で打ち切る事は原則できないと考えた方が良い。 (endブロックが呼ばれない不完全なハックならググれば見つかる) またパイプ処理の待機はpowershellのメインスレッドの待機という意味になるので、 そこに非同期イベントを介入させたい場合はそのイベント用の別スレッドを走らせておく必要がある。
808 名前:デフォルトの名無しさん [2023/04/22(土) 21:39:35.55 ID:81urZ/Lj.net] (New-Object -ComObject Shell.Application).NameSpace(10).MoveHere(ファイルパス) 上記の方法でファイルをごみ箱に移動する場合ファイルが1個なら問題ないんですが、 ファイルパスをを"z:\*"みたいにワイルドカードで指定するとなぜか ごみ箱でなくC:\Users\ユーザー名にファイルが送られてしまいます。 どうすればごみ箱に送れましょうか?
809 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 10:54:07.72 ID:ElcI27v7.net] >>794 q は出力スレッドの停止マークで、入力の最後も意味するつもりだった (その後の入力はない) という考えをくみ取って欲しくて例を付けたのだが伝わらなくて残念 パイプラインの中断にSelect-Object -First 1する話は知ってる ていうか本題から話をそらそうとしてません? 知りたいのはメインスレッド以外からプライマリパイプラインに出力する方法 パイプラインの次段に送るにはどうすればいいか具体例が欲しい
810 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 15:49:22.67 ID:fUzoPDLK.net] シェルスクリプトやPowerShell が遅いのは、 毎行、何かのプロセスを起動するからじゃないの? 多くはプロセスの起動時間だろう Ruby は、外部プロセスを起動しなければ、プロセスは1つのまま。 並行処理もあるけど grep は、1GB を1秒!
811 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:01:56.38 ID:vCOHFjdN.net] >>796 そもそもパイプは同期的にしか動かないので、次段でいくら細工しても上流が出力を起こしたタイミングに縛られる。 話を単純にするなら不規則な出力を受ける処理と一定間隔で出力する処理は分けるべきだろうね。
812 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:05:07.36 ID:fUzoPDLK.net] >>795 移動なら、robocopy のmov/move を使えば?
813 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:10:27.14 ID:n0NMvdBV.net] >>799 どうやればごみ箱に移動できましょうか?
814 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 16:33:01.94 ID:aISPDv4l.net] >>795 シェル名前空間はバグだか仕様だか判らない所があるから真面目に考えても無駄 もうそういう仕様と考えてファイルは1個1個送れば? ワイルドカードはgciで展開できるんだし
815 名前:デフォルトの名無しさん mailto:sage [2023/04/23(日) 17:57:33.46 ID:ElcI27v7.net] >>798 サブスレッドがパイプラインに書き込めば次段が動くんじゃないの?
816 名前:言い換えると >>792 のfunction targetは実現不可能ということ? [] [ここ壊れてます]
817 名前:デフォルトの名無しさん mailto:sage [2023/04/24(月) 17:53:43.44 ID:cODz6Qqq.net] >>801 どうもありがとうございます。そうします。
818 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 01:01:33.91 ID:q0KJktEO.net] 最近この言語で書くことあるけど関数の呼び出しを最初に書かないとエラー起こすなんて知らなくて問題解決に時間がかかった 多分ほとんどの人が関数はメインの後に書きたいと思うんだけどファイル分けて呼び出したりしてるの?
819 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 07:59:40.97 ID:0OU27daL.net] >>804 > 多分ほとんどの人が関数はメインの後に書きたいと思うんだけど んなことはない 呼び出される方を前に書かなきゃいけないのは他の言語でも多いぞ
820 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:14:10.57 ID:Q567y34W.net] >>805 定義を上書きできる言語なら呼び出し順序に意味があると思うけど、そうじゃないならただの手抜き仕様
821 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:17:30.73 ID:0OU27daL.net] >>806 実行速度が速くなる、スコープが明確になる、などのメリットがあって敢えて採用されてるんだよ JSとかも古くからあるfunction構文は順序関係ないが今推奨されてるアロー関数だと前に書かなきゃだめだ
822 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:19:33.10 ID:0OU27daL.net] あとスパゲティを防ぐ効果があるというメリットもあるな C言語だとそれを目的にプロトタイプを書かない人もいる
823 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:27:15.73 ID:h+X7r+oZ.net] 関数同士の依存関係が明確で前の関数が後の関数に依存しないなら初めてのコードを読みやすくなるというメリットもあるな
824 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 08:33:08.87 ID:TxIkuN+X.net] ホイスティングってJS以外であるの?
825 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 09:07:53.85 ID:qRrW+mkA.net] Java隆盛くらいの時代には関数はどこに書いても良いのが当たり前として定着したけど 関数型プログラミングでは関数宣言は変数や定数の宣言と同じようなものだからどうしても順序を意識せざるを得ない 順序の扱いを自動でやってくれる仕組みがホイスティングなんだけど、そのルールの分かりにくさやいやらしさが開発者に嫌われてJavaScriptのvarがletとconstに取って代わられた歴史がある
826 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 11:26:54.33 ID://VjHWfL.net] >>804 メインの部分をメイン関数として書いて実行時にメイン関数を呼び出すようにすればよいのでは?PowerShellはシェルとしても動くので実行時に先に関数が定義されていないといけないのは自然な動作のような気もする。
827 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 11:29:40.93 ID:Y1VsObgt.net] vbsは関数後書きでもokだよ よしvbs使おう
828 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 11:43:20.51 ID:Xlw1eETD.net] >>812 begin process endブロック使いたいときに発狂しそうだな
829 名前:デフォルトの名無しさん mailto:sage [2023/04/25(火) 21:27:41.00 ID:RtJhGNCC.net] powershellでもclass内なら順序関係なくなるよ
830 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 17:38:09.61 ID:spWJYsDj.net] 自分のコード見たら別に後から宣言してても実行できてるんだが コマンドレットの定義だとホイスティングされるとかある?
831 名前:デフォルトの名無しさん mailto:sage [2023/05/04(木) 17:56:23.79 ID:P088Z0u/.net] >>816 どういうコード書いてんのよ
832 名前:デフォルトの名無しさん [2023/05/04(木) 21:18:57.29 ID:FdNSNO1e.net] >>816 古臭いと言われても、前に書いた方が無駄な混乱をさけられる。
833 名前:デフォルトの名無しさん mailto:sage [2023/05/05(金) 18:03:31.01 ID:gmBJZ0Nw.net] 動的言語は第一級関数のクロージャが多いから、 関数外で宣言したローカル変数が、関数内へ持ち込まれるので、 スコープが広くて、ヤバイ さらに、JS はホイスティングされるから、超ヤバイ ただし、Ruby の関数だけは第一級関数のクロージャではなく、 関数外で宣言したローカル変数は、関数内へ持ち込まれない だから他の言語よりも、圧倒的にバグらないので、初心者向き
834 名前:デフォルトの名無しさん [2023/07/08(土) 13:16:16.25 ID:UoEVlKLQl] 他人の権利を強奪して私腹を肥やす強盗殺人政治やってる論理もクソもないロクに勉強してない議員た゛らけ無能外道集団公明党と違って維新 は最低限の知的能力を有してる奴が多いのは橋下徹の意向で容赦なく知的能カの足切りやってる成果なんた゛ろうけど、いい年して玉遊ひ゛とか してる無能を讃えてみたり,日本に原爆落とした世界最惡のならす゛者國家の覇権主義に利用されてるウクラヰナ状態になるリスクを無視して 軍拡推進してみたり,危險極まりない原發推進すれは゛電気料金は下がるた゛のほさ゛きか゛ら鉄道のЗ〇倍以上もの非効率クソ航空機によって莫大 な石油無駄に燃やしてヱネ価格暴騰させて温室効果カ゛ス倍増させて氣侯変動させて災害連發させて貿易赤字に.そんなバカの象徴萬博を誇っ てみたり.騒音によって知的産業に威力業務妨害して壞滅させて原發とか笑わせるレヘ゛儿にまで曰本の技術カ低下させて.勉強妨害して犯罪 惹起しながら動物虐待は罰則強化しろ、子の虐待には金くれてやれた゛の,いつの間にか憲法の下の平等に反しないヘ゛一シックインカムも言わ なくなって社会分断惹起して治安惡化とか,頭は回るか゛古い教育制度による時代遅れの固定観念による思慮のなさは直情的な橋下徹由来かな 創価学會員は.何百万人も殺傷して損害を与えて私腹を肥やし続けて逮捕者まで出てる世界最悪の殺人腐敗組織公明党を 池田センセ─が口をきけて容認するとか本気で思ってるとしたら侮辱にもほどか゛あるそ゛! https://i.imgur.com/hnli1ga.jpeg
835 名前:デフォルトの名無しさん mailto:sage [2023/06/29(木) 13:26:04.42 ID:GLUt9X10.net] get-childitem select-object Full name,でownerを追加する方法はありますか?ご存知の方、ご教示願います。
836 名前:デフォルトの名無しさん mailto:sage [2023/06/29(木) 17:48:28.46 ID:xt/PffdC.net] >821 Get-ChildItemだけではowner情報は取れない、Get-Aclで情報取得する必要がある 組み合わせで良ければ以下の様にSelect-Objectでプロパティ追加すれば出来る Get-ChildItem|Select-Object FullName,@{n="Owner";e={Get-Acl $_.fullname|% {$_.Owner}}}
837 名前:デフォルトの名無しさん mailto:sage [2023/07/07(金) 19:48:22.82 ID:5l+s6JZK.net] Outlook を起動してメールを送りたいのですが 本文のメールのフォントサイズや色の指定が一切無視されます。 Outlook 側の設定なのか、コードが悪いのかもよくわからず。。。 スレ違いならすいません =================== $outlook = New-Object -comObject Outlook.Application $mail = $outlook.CreateItem(0) $mail.Subject = "件名テスト" $mail.HTMLBody = "<html>&
838 名前:lt;head><style type='text/css'> body {font-size:11; font-family:Meiryo UI;} </style></head><body> ああああ<span style='text-decoration:underline; text-decoration-color:red;'>いいいい</span>ううう<br> </body></html>" $inspector = $mail.GetInspector $inspector.Display() #$mail.Send() =================== 上記のコードだとメイリオは設定されますが、フォントサイズは8.5になるし下線は黒色になります。 なにとぞご教示お願いします [] [ここ壊れてます]
839 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 00:01:29.03 ID:pvSg+WfU.net] font-sizeの値に単位が無いから無視されてんじゃね
840 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 03:13:05.95 ID:ixw20e1S.net] >>824 試したはず・・・と思いつつも確認したら普通に変更されました!!! 11px で確認したのかもしれません。11pt と書いたら普通に反映されました ありがとうございます ただ下線は相変わらず赤色にならず、黒色のままです。 #FF0000 も試したけど変わらず・・・ どうやら text-decoration-color がそもそも使えないようでした。 さささ<span style='text-decoration:underline; color:red;'>ししし</span>すすす<br> とやったら文字も赤くなりましたが下線も赤くなりました。 Outlook に使える html の仕様との戦いな気がしてきた これはどこで尋ねたら・・・
841 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 10:11:13.02 ID:CzqO5vr+.net] 後はstyle属性をシングルクォーテーションで括ってるのが気になった 全体の括りをシングルにして属性値をダブルに変更で動くと思うよ
842 名前:デフォルトの名無しさん mailto:sage [2023/07/10(月) 10:51:54.81 ID:ixw20e1S.net] シングルとダブルは変わりませんでした… 実際はPowerShellでメール本文内に変数を当てこむので シングルのままでいこうと思います あと下線だけ赤色は私の勘違いでした 赤下線の時は文字も赤くして問題なかったのでとりあえず解決しました お手数おかけしました ご助言くださった方ありがとうございました
843 名前:デフォルトの名無しさん mailto:sage [2023/07/13(木) 11:56:03.10 ID:cnmTEsiX.net] 二週間ほど前に自分で調べて書いたのに、どうやって書いて動かしたのか全く思い出せなくて困ってます 自分で自分が信じられないんですが、教えてください。 やりたいこと:Read-Hostで指定したフォルダに存在するフォルダを取得し、各フォルダに指定したファイルをコピーする 引っかかっている点: 1)$input = Read-Host "コピー先フォルダを指定" たとえばここでcopyと入力。規定のフォルダがC:\作業とする。 入力の結果、c:\作業\copyとして、ここにあるサブフォルダを取得したいので $inputをc:\作業\copyにしたい。 2)Get-ChildItem でディレクトリ名のみ取得するには? それでforeachでやってたと思うんですが・・・。
844 名前:デフォルトの名無しさん mailto:sage [2023/07/13(木) 13:50:42.52 ID:K8IsBXo8.net] Get-ChildItem -LiteralPath ([IO.Path]::Combine("C:\作業", (Read-Host "コピー先フォルダを指定"))) -Directory -Name
845 名前:デフォルトの名無しさん mailto:sage [2023/07/13(木) 17:51:09.66 ID:cnmTEsiX.net] >>829 わー初見のコード でもおかげでなんとかできました。ありがとう。
846 名前:デフォルトの名無しさん mailto:sage [2023/07/14(金) 04:02:22.77 ID:vOCFwCnb.net] 多分いままで書いてたコードはこれ # 規定のフォルダのパスを作成 $parent = join-path 'c:\作業' $input # 上記パスのサブフォルダ作成 $names = ls -pspath $parent -di | % name 下記はエイリアス(関数の別名) ls := get-childitem % := foreach-object
847 名前:デフォルトの名無しさん mailto:sage [2023/07/14(金) 04:02:59.81 ID:vOCFwCnb.net] # 上記パスのサブフォルダ作成 ↓ # 上記パスのサブフォルダ名を取得
848 名前:820 mailto:sage [2023/07/18(火) 17:12:35.63 ID:jBHsPJa3.net] >>822 遅くなりました。 set-location -pathで場所を指定したら、指定したフォルダのownerを取得できました。ありがとうございます。 get-Childitem -recruse -file ┃select-Object directoryName ,name ,extension ,Length Creationtime, lastACCESStime ,lastwriteTime, fullname ┃Export‐csv ‐Encodeing default xxx.csv と一緒にできなかったのが悔やまれます。
849 名前:デフォルトの名無しさん mailto:sage [2023/07/18(火) 18:02:52.05 ID:uMqw2ex7.net] そういう時はadd-memberするんだよ
850 名前:デフォルトの名無しさん mailto:sage [2023/07/18(火) 20:02:12.51 ID:x3+Ehzia.net] >>822 の何がだめで、あるいは何が分からなくて、そのコマンドに組み込めなかったのか分からんな。 起点ディレクトリ自体の情報もCSVに含めたい、って事なのかな。
851 名前:デフォルトの名無しさん mailto:sage [2023/07/18(火) 22:45:48.56 ID:BpIlHiPB.net] powershellの学習曲線は険しい 本人が納得したならもうそれでいいだろう
852 名前:820 mailto:sage [2023/07/19(水) 08:31:15.42 ID:wWAjwZqt.net] >>835 そうです。