前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/
次スレは>>980が立ててね!!
探検
PowerShell -Part 6
■ このスレッドは過去ログ倉庫に格納されています
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
709デフォルトの名無しさん
2023/03/15(水) 15:33:19.80ID:IBd2LSQO そこ見てダメなら諦めたら
特にメリットないし
特にメリットないし
710デフォルトの名無しさん
2023/03/15(水) 21:33:00.90ID:e2aqyp6Z711デフォルトの名無しさん
2023/03/17(金) 11:52:05.75ID:1OmGmSd0 >>707
コパイロットとやらはインタラクティブシェルでも使える?興味あり
gnureadlineうんこpsreadline最強と思ってたら思わぬ伏兵が…
bingのchatgptが話題になってるし、標準で付いてもおかしくないけど
コパイロットとやらはインタラクティブシェルでも使える?興味あり
gnureadlineうんこpsreadline最強と思ってたら思わぬ伏兵が…
bingのchatgptが話題になってるし、標準で付いてもおかしくないけど
712デフォルトの名無しさん
2023/03/17(金) 14:15:57.93ID:piFUHGnm インタラクティブ(履歴)/スクリプトでもヒューリスティックにコンテキストを読んでくれるのは新しいね、もはや補完ではない気がするが
ところで-UseFussyが超便利
ところで-UseFussyが超便利
713デフォルトの名無しさん
2023/03/19(日) 10:19:36.25ID:+AVX1Caz714デフォルトの名無しさん
2023/03/27(月) 09:23:21.18ID:qNF02T37 f1で直近コマンドの、Alt-hで直近パラメータのヘルプがコマンドラインを汚さずにチラ見出来るけど
常時表示しておきたい
常時表示しておきたい
715デフォルトの名無しさん
2023/03/28(火) 15:38:45.60ID:vZrgWFuJ >>714
https://learn.microsoft.com/en-us/powershell/scripting/learn/shell/dynamic-help?view=powershell-7.4
フックされてるShowCommandHelpあたりを改造してみては
https://learn.microsoft.com/en-us/powershell/scripting/learn/shell/dynamic-help?view=powershell-7.4
フックされてるShowCommandHelpあたりを改造してみては
716デフォルトの名無しさん
2023/03/31(金) 09:29:33.35ID:Hum0KYCd コマンドプロンプトのstartコマンドのように
新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか
新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか
717デフォルトの名無しさん
2023/03/31(金) 10:04:55.21ID:oEDBXBHf Add-Type によって、自作のクラスを使う処理を書いて、一応ちゃんと動くのですが
同じことを 何度もやろうとすると 二度目以降は「The type 〜 already exists.」と出て止まってしまいます.
そこで「既に そのタイプが存在しているかどうか」をチェックしたいのですが、これってどう書くんでしょうか
同じことを 何度もやろうとすると 二度目以降は「The type 〜 already exists.」と出て止まってしまいます.
そこで「既に そのタイプが存在しているかどうか」をチェックしたいのですが、これってどう書くんでしょうか
718デフォルトの名無しさん
2023/03/31(金) 22:12:52.48ID:yFMegc6R >>717
こんなん
Add-Type @'
public class MyClass {
public void test() {
}
}
'@
if ("MyClass" -as [type]) {
"MyClass is exist"
}
こんなん
Add-Type @'
public class MyClass {
public void test() {
}
}
'@
if ("MyClass" -as [type]) {
"MyClass is exist"
}
719デフォルトの名無しさん
2023/03/31(金) 22:21:06.75ID:bSGiEzAG >>716
(Start-Process -PassThru foo.exe).ProcessorAffinity = xxx
xxxの所で使いたいプロセッサを指定する
Start-Process -PassThru
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/start-process#-passthru
Process.ProcessorAffinity プロパティ
https://learn.microsoft.com/ja-jp/dotnet/api/system.diagnostics.process.processoraffinity
(Start-Process -PassThru foo.exe).ProcessorAffinity = xxx
xxxの所で使いたいプロセッサを指定する
Start-Process -PassThru
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/start-process#-passthru
Process.ProcessorAffinity プロパティ
https://learn.microsoft.com/ja-jp/dotnet/api/system.diagnostics.process.processoraffinity
720デフォルトの名無しさん
2023/03/31(金) 22:35:53.19ID:yFMegc6R721716
2023/03/31(金) 22:58:55.98ID:Hum0KYCd722デフォルトの名無しさん
2023/03/31(金) 23:29:03.95ID:bSGiEzAG https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/start-process#-nonewwindow
-NoNewWindow
現在のコンソール ウィンドウで新しいプロセスを開始します。 Windows では、既定で PowerShell によって新しいウィンドウが開きます。
-NoNewWindow
現在のコンソール ウィンドウで新しいプロセスを開始します。 Windows では、既定で PowerShell によって新しいウィンドウが開きます。
723716
2023/03/31(金) 23:54:48.86ID:Hum0KYCd >>722
最初はそれでいいと思ったんですが、コンソールの取り合いになります
(Start-Process netsh.exe -NoNewWindow とかで試すとわかりますが、くれぐれもご注意を)
取り合いにならないように -Wait も指定して
(Start-Process netsh.exe -NoNewWindow -Wait -PassThuru).ProcessorAffinity = xxx
とすると、-Wait が効きすぎて ProcessorAffinity をセットできないという罠
最初はそれでいいと思ったんですが、コンソールの取り合いになります
(Start-Process netsh.exe -NoNewWindow とかで試すとわかりますが、くれぐれもご注意を)
取り合いにならないように -Wait も指定して
(Start-Process netsh.exe -NoNewWindow -Wait -PassThuru).ProcessorAffinity = xxx
とすると、-Wait が効きすぎて ProcessorAffinity をセットできないという罠
724デフォルトの名無しさん
2023/04/01(土) 00:12:16.16ID:rM0w1xSL つまり.NETのProcessorAffinityは存在するプロセスにしか適用できないから無理でいんじゃね
知らんけどWin32APIとかで別の方法を探った方がいいんじゃね
知らんけどWin32APIとかで別の方法を探った方がいいんじゃね
725デフォルトの名無しさん
2023/04/01(土) 00:25:58.89ID:rM0w1xSL たとえばWin32APIのCreateProcessにCREATE_SUSPENDEDというフラグがある
プロセスをサスペンド状態で作成してaffinity設定してからResumeThreadで開始
これでいけるんじゃね
プロセスをサスペンド状態で作成してaffinity設定してからResumeThreadで開始
これでいけるんじゃね
726デフォルトの名無しさん
2023/04/01(土) 03:49:24.51ID:tD9Ph5o/ Start-Jobの中で実行したら上手いこと裏でやってくれないだろうか
727デフォルトの名無しさん
2023/04/01(土) 09:42:35.62ID:nbrNF8T0 Start-Process -NoNewWindow cmd.exe "/c start /affinity xxx /b foo.exe"
これくらいしか思い浮かばなかった
これくらいしか思い浮かばなかった
728デフォルトの名無しさん
2023/04/01(土) 10:09:29.22ID:rM0w1xSL 定義が長くなったからこっちに貼り付けたよ
https://ideone.com/LOSuzD
使い方
bool [Win32API]::CreateProcessWithAffinity(appname, cmdline, affinity)
affinityはプロセスに直接設定するAPIが見つからなかったのでGet-ProcessをResumeThread前に呼び出して指定してる
サンプルはcmdを呼び出してpingをlocalhostに10回打ってる間にプロセス名とaffinity値を出してる
https://ideone.com/LOSuzD
使い方
bool [Win32API]::CreateProcessWithAffinity(appname, cmdline, affinity)
affinityはプロセスに直接設定するAPIが見つからなかったのでGet-ProcessをResumeThread前に呼び出して指定してる
サンプルはcmdを呼び出してpingをlocalhostに10回打ってる間にプロセス名とaffinity値を出してる
729727
2023/04/01(土) 10:22:16.44ID:nbrNF8T0 Start-Process -NoNewWindow -Wait cmd.exe "/c start /affinity xxx /b foo.exe"
こうだった
こうだった
730デフォルトの名無しさん
2023/04/01(土) 10:27:57.30ID:rM0w1xSL 寝ぼけてた。コールバックの部分下だけで良かったわ
System.Diagnostics.Process.GetProcessById(pInfo.dwProcessId).ProcessorAffinity = (IntPtr)affinity;
System.Diagnostics.Process.GetProcessById(pInfo.dwProcessId).ProcessorAffinity = (IntPtr)affinity;
731デフォルトの名無しさん
2023/04/01(土) 10:32:18.54ID:rM0w1xSL でもう一箇所、appnameに$nullを指定してもC#側型宣言で""に変換されてしまうので、CreateProcessの直前に下を追加しとくとcmdlineだけで動く
if (appname == "") { appname = null; }
if (appname == "") { appname = null; }
732デフォルトの名無しさん
2023/04/01(土) 10:52:36.56ID:NrUMzMDg これパイプすればいいんだよ
ポイントは () を使わないこと
(Start-Process).ProcessorAffinity = xxx は NG
Start-Process | ForEach-Object {} で OK
(Start-Process) | ForEach-Object {} は NG
& { Start-Process } | ForEach-Object {} でも OK
ポイントは () を使わないこと
(Start-Process).ProcessorAffinity = xxx は NG
Start-Process | ForEach-Object {} で OK
(Start-Process) | ForEach-Object {} は NG
& { Start-Process } | ForEach-Object {} でも OK
733デフォルトの名無しさん
2023/04/01(土) 11:09:34.29ID:rM0w1xSL734デフォルトの名無しさん
2023/04/01(土) 11:10:53.22ID:rM0w1xSL Start-Process cmd.exe -ArgumentList '/c echo hello world & ping 127.0.0.1 -n 10' -NoNewWindow -PassThru | %{ $_.ProcessorAffinity = 1; $_ | select Name, ProcessorAffinity }
735デフォルトの名無しさん
2023/04/01(土) 14:38:06.95ID:khXUWf7f Start-Process cmd.exe -NoNewWindow -PassThru | % { $_.ProcessorAffinity = 1 } だと困る
Start-Process cmd.exe -NoNewWindow -PassThru -Wait | % { $_.ProcessorAffinity = 1 } か
Start-Process cmd.exe -NoNewWindow -PassThru | % { $_.ProcessorAffinity = 1; Wait-Process -Id $_.Id }
Start-Process cmd.exe -NoNewWindow -PassThru -Wait | % { $_.ProcessorAffinity = 1 } か
Start-Process cmd.exe -NoNewWindow -PassThru | % { $_.ProcessorAffinity = 1; Wait-Process -Id $_.Id }
736デフォルトの名無しさん
2023/04/01(土) 16:54:32.28ID:SzOWT/hN 717です. 反応してくださったかた ありがとうございました
>>718
if ("MyClass" -as [type]) → なるほど!…これでした!
>>721
私も,とりあえずは
try{ [MyClass] >$null } catch{ Add-Type -Path "〜.cs" >$null }
で 済ませていたのですが
例外に たよる書き方は,なんとなくカッコ悪い感じがして(笑)
>>718
if ("MyClass" -as [type]) → なるほど!…これでした!
>>721
私も,とりあえずは
try{ [MyClass] >$null } catch{ Add-Type -Path "〜.cs" >$null }
で 済ませていたのですが
例外に たよる書き方は,なんとなくカッコ悪い感じがして(笑)
737デフォルトの名無しさん
2023/04/01(土) 21:56:00.86ID:sdpm0Gxz >>716
(Start-Process -FilePath 〜〜〜 -ArgumentList 〜〜〜 -WindowStyle Hidden -PassThru).ProcessorAffinity = 1
(Start-Process -FilePath 〜〜〜 -ArgumentList 〜〜〜 -WindowStyle Hidden -PassThru).ProcessorAffinity = 1
738デフォルトの名無しさん
2023/04/01(土) 22:32:49.48ID:khXUWf7f それでは Start-Process を使わない場合と違って入力も出力もできない
739デフォルトの名無しさん
2023/04/01(土) 22:58:19.34ID:sdpm0Gxz あ〜、
> コマンドプロンプトのstartコマンドのように
> 新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか
というか
新しいウィンドウを作成せず、
コマンドプロンプトのstartコマンドのように使うプロセッサを指定して起動するにはどうすれば良いですか
という感じか。であればこれまでに出てた回答の方が正しいね。
ほぼ同じだけど自分なら
$proc = Start-Process -FilePath 〜 -NoNewWindow -PassThru; $proc.ProcessorAffinity = 1; $proc.WaitForExit();
みたいにするかなぁ。(でもStart-Processじゃなく小回りのきくProcessStartInfoを使うかな?)
> コマンドプロンプトのstartコマンドのように
> 新しいウィンドウを作成せず、使うプロセッサを指定して起動するにはどうすれば良いですか
というか
新しいウィンドウを作成せず、
コマンドプロンプトのstartコマンドのように使うプロセッサを指定して起動するにはどうすれば良いですか
という感じか。であればこれまでに出てた回答の方が正しいね。
ほぼ同じだけど自分なら
$proc = Start-Process -FilePath 〜 -NoNewWindow -PassThru; $proc.ProcessorAffinity = 1; $proc.WaitForExit();
みたいにするかなぁ。(でもStart-Processじゃなく小回りのきくProcessStartInfoを使うかな?)
740デフォルトの名無しさん
2023/04/02(日) 00:15:44.70ID:l9+T+h5c 質問です。
外部コマンドの標準出力やエラー出力を一緒に変数に入れたいのですが、
$result=外部コマンド.exe 2>&1
この式で一見動作はしてるようのですが、外部コマンドからエラー出力があった場合に赤い色が付き、powershell的なエラーメッセージも追加されてしまいます。
意図としては色とか追加メッセージとかは不要で、純粋に外部コマンドの標準出力やエラー出力を一緒に変数に取り込みたいだけなのですが、
そういう場合どう記述したら良いでしょうか。
外部コマンドの標準出力やエラー出力を一緒に変数に入れたいのですが、
$result=外部コマンド.exe 2>&1
この式で一見動作はしてるようのですが、外部コマンドからエラー出力があった場合に赤い色が付き、powershell的なエラーメッセージも追加されてしまいます。
意図としては色とか追加メッセージとかは不要で、純粋に外部コマンドの標準出力やエラー出力を一緒に変数に取り込みたいだけなのですが、
そういう場合どう記述したら良いでしょうか。
741デフォルトの名無しさん
2023/04/02(日) 00:47:59.12ID:h0WbN+8B 外部コマンドの引数が不要またはシンプルなら、
簡単で分かりやすいのはcmd上で標準出力にする方法
$result=cmd /c "外部コマンド.exe 2>&1"
簡単で分かりやすいのはcmd上で標準出力にする方法
$result=cmd /c "外部コマンド.exe 2>&1"
742デフォルトの名無しさん
2023/04/02(日) 01:46:53.77ID:l9+T+h5c >>741
cmd脱却を考えているので、できればpowershell流?の書き方があればお願いいたします
cmd脱却を考えているので、できればpowershell流?の書き方があればお願いいたします
743デフォルトの名無しさん
2023/04/02(日) 03:44:54.54ID:byiZ93ic >>742
Powershellでcmdを使いこなす技術を鍛えたほうが幸せになれると思うよ
Powershellでcmdを使いこなす技術を鍛えたほうが幸せになれると思うよ
744デフォルトの名無しさん
2023/04/02(日) 11:17:09.81ID:l9+T+h5c ためしにChatGPTに質問してみたら以下の回答でした
質問「powershell上から外部コマンドを実行し、その標準出力とエラー出力を、powershellによる出力の加工を抑止した状態で1つの変数に入れたい」
$output = & <コマンド> 2>&1 | Out-String
Out-Stringは盲点でした。一応文字列として取得できているのでこれでいいのかな
質問「powershell上から外部コマンドを実行し、その標準出力とエラー出力を、powershellによる出力の加工を抑止した状態で1つの変数に入れたい」
$output = & <コマンド> 2>&1 | Out-String
Out-Stringは盲点でした。一応文字列として取得できているのでこれでいいのかな
745デフォルトの名無しさん
2023/04/02(日) 11:29:33.76ID:yOzYb5by 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
これが失敗するなんて想像してなかった
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
これが失敗するなんて想像してなかった
746デフォルトの名無しさん
2023/04/02(日) 15:23:02.64ID:9IrG8+0n >>745
PowerShell5.1だと失敗しないな
7.3は駄目だった ターゲットのパスを絶対パスにすれば作れる
New-Item -ItemType Junction can't create relative link #18251
https://github.com/PowerShell/PowerShell/issues/18251
PowerShell5.1だと失敗しないな
7.3は駄目だった ターゲットのパスを絶対パスにすれば作れる
New-Item -ItemType Junction can't create relative link #18251
https://github.com/PowerShell/PowerShell/issues/18251
747デフォルトの名無しさん
2023/04/02(日) 16:46:18.09ID:yOzYb5by ジャンクションなら絶対パス必須でもいいけど
シンボリックリンクでは相対パスが使えないと不便
>>745 のテストをシンボリックリンクに変えてもやっぱりおかしい
ターゲットがディレクトリなのにファイルのシンボリックリンクになる
条件次第で逆にすることもできる
タイプ間違いだと補完や削除をするときに困るんだよな
だから最初からcmd.exeでmklinkしてる
シンボリックリンクでは相対パスが使えないと不便
>>745 のテストをシンボリックリンクに変えてもやっぱりおかしい
ターゲットがディレクトリなのにファイルのシンボリックリンクになる
条件次第で逆にすることもできる
タイプ間違いだと補完や削除をするときに困るんだよな
だから最初からcmd.exeでmklinkしてる
748デフォルトの名無しさん
2023/04/02(日) 21:47:00.28ID:9IrG8+0n Target type detection (file/directory) for relative symlinks is still broken, even on Windows #15235
https://github.com/PowerShell/PowerShell/issues/15235
これか?
2年前に立ったissueなのにまだ直ってないみたい
https://github.com/PowerShell/PowerShell/issues/15235
これか?
2年前に立ったissueなのにまだ直ってないみたい
749デフォルトの名無しさん
2023/04/03(月) 07:48:59.39ID:Jr4h81FG >>739
あの〜、コマンドプロンプトのstartだと1行の
start /B /AFFINITY 1 cmd.exe
のように「新しいウィンドウを作成せず、使うプロセッサを指定して起動する」には
小回りのきくProcessStartInfoを使うとどう書くの?
あの〜、コマンドプロンプトのstartだと1行の
start /B /AFFINITY 1 cmd.exe
のように「新しいウィンドウを作成せず、使うプロセッサを指定して起動する」には
小回りのきくProcessStartInfoを使うとどう書くの?
750デフォルトの名無しさん
2023/04/03(月) 08:48:40.85ID:hrmFy8ir .NETでの普通のやり方ならググるれば出てくるよ
751デフォルトの名無しさん
2023/04/03(月) 21:13:34.50ID:d+sLTFCG 例示ではプロセス起動・Process型オブジェクト取得にStart-Processを使ったけど
>>739は普段はProcessStartInfo使ってるってだけじゃないの。
私も引数あるときはStart-Process(-ArgumentList)避けてProcessクラス使う。
>>739は普段はProcessStartInfo使ってるってだけじゃないの。
私も引数あるときはStart-Process(-ArgumentList)避けてProcessクラス使う。
752デフォルトの名無しさん
2023/04/03(月) 21:20:59.87ID:9kyxsKiX PowerShellってWebスクレイピングには向いてないですか?
Pythonで作った方がいいですか?
PowerShellは職場用のスクリプトを何個か作ったりして少し分かるのですが、Pythonはまったく不慣れなので迷ってます
Pythonで作った方がいいですか?
PowerShellは職場用のスクリプトを何個か作ったりして少し分かるのですが、Pythonはまったく不慣れなので迷ってます
753デフォルトの名無しさん
2023/04/03(月) 21:35:29.28ID:NHigh4Tg Poweshellでちょっスクレイピング
http://sloppy-content.blog.jp/archives/12057529.html
【PowerShell】SeleniumモジュールでWebスクレイピングしたい
https://zenn.dev/hara_power/articles/815e3f3dc1e5655c4c22
http://sloppy-content.blog.jp/archives/12057529.html
【PowerShell】SeleniumモジュールでWebスクレイピングしたい
https://zenn.dev/hara_power/articles/815e3f3dc1e5655c4c22
754デフォルトの名無しさん
2023/04/03(月) 22:09:14.13ID:FTaZkaBO Windowsに限ればスクレイピング以外にもブラウザに直接細工する手段が充実してるからライブラリ頼みのpythonより向いてるとも言える
756デフォルトの名無しさん
2023/04/08(土) 22:48:22.89ID:wqsbQ+QM PowerShellでPersonal Communicationsを操作しようと思い
以下のサイトを参考にしようとしたのですが
https://www.tekizai.net/entry/2021/10/04/063000
64bit版のPowershellでは出来ないようです
64bit版でも動かせるように変更はできないでしょうか?
以下のサイトを参考にしようとしたのですが
https://www.tekizai.net/entry/2021/10/04/063000
64bit版のPowershellでは出来ないようです
64bit版でも動かせるように変更はできないでしょうか?
757デフォルトの名無しさん
2023/04/08(土) 23:26:55.43ID:ymsLMaB3 64bit環境用のPersonal CommunicationsのOCXやらが無い場合は32bitのpowershellからCreateObjectするしかないとは思うけど
そのサイトのVBA版では環境に関する言及がないね
32bit版Officeを使っているという前提で書いてるのかもしれないが試してみないと判らないね
そのサイトのVBA版では環境に関する言及がないね
32bit版Officeを使っているという前提で書いてるのかもしれないが試してみないと判らないね
758デフォルトの名無しさん
2023/04/10(月) 20:51:54.13ID:4PCv5Fk3 すいません、当方SEで技術的な質問です
administrator権限のユーザーでLinuxサーバーからパスワード認証でなく、秘密鍵と認証鍵の認証方式でwindowsサーバーにSSHを掛けたいのですが、administrator権限のユーザーですと、パスワードを聞かれてしまいます
他の権限のユーザーは問題無く認証されます
administrator権限では認証方式のSSHは使えないのでしょうか?
administrator権限のユーザーでLinuxサーバーからパスワード認証でなく、秘密鍵と認証鍵の認証方式でwindowsサーバーにSSHを掛けたいのですが、administrator権限のユーザーですと、パスワードを聞かれてしまいます
他の権限のユーザーは問題無く認証されます
administrator権限では認証方式のSSHは使えないのでしょうか?
759デフォルトの名無しさん
2023/04/10(月) 21:12:02.69ID:bM8RH+P4760デフォルトの名無しさん
2023/04/10(月) 21:31:04.64ID:4PCv5Fk3761デフォルトの名無しさん
2023/04/14(金) 21:40:03.65ID:qiPEiEw+ 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()
フォームの文字がぼやけるんだけど、なにか解決策はありますか?
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()
762デフォルトの名無しさん
2023/04/14(金) 21:40:32.33ID:qiPEiEw+ ちなみにOSはWindows11です
763デフォルトの名無しさん
2023/04/15(土) 13:51:30.62ID:iq3ZlEDB その辺て外人もあまり正解に辿り着いてない箇所だな
俺も辿り着いたとは言えんけど面倒だった
俺も辿り着いたとは言えんけど面倒だった
764デフォルトの名無しさん
2023/04/15(土) 14:12:07.08ID:ig+gwe+P C#を使うのが最適解
765デフォルトの名無しさん
2023/04/15(土) 15:02:15.83ID:cOO792TH powershellじゃなくてWindowsFormsの問題でしょ
「WindowsForms ぼやけ」で検索したらいくらでも出てきたけど
「WindowsForms ぼやけ」で検索したらいくらでも出てきたけど
766デフォルトの名無しさん
2023/04/15(土) 19:25:15.71ID:erslMsE0 WPFで作れば違うのか?
767デフォルトの名無しさん
2023/04/15(土) 20:21:51.02ID:iq3ZlEDB ちょっと意識して組めばできなくはないから環境を変える程でもないな
768デフォルトの名無しさん
2023/04/15(土) 22:14:25.62ID:raQFwlCG 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フォルダとは別にコピーされてしまいます。
同じフォルダ名があった場合サブフォルダの処理を飛ばしてフォルダ構造したままコピーする方法はないでしょうか。
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フォルダとは別にコピーされてしまいます。
同じフォルダ名があった場合サブフォルダの処理を飛ばしてフォルダ構造したままコピーする方法はないでしょうか。
769デフォルトの名無しさん
2023/04/15(土) 22:16:07.91ID:raQFwlCG フォルダ構造したまま→フォルダ構造を維持したまま
失礼しました。
失礼しました。
770デフォルトの名無しさん
2023/04/15(土) 23:22:30.72ID:iq3ZlEDB ・同じフォルダ名があった場合サブフォルダの処理を飛ばしたい
ってう制約を加えてchatGPTに聞いたらいいんじゃね
ってう制約を加えてchatGPTに聞いたらいいんじゃね
771768
2023/04/16(日) 01:08:07.22ID:i+x2SgN3 >>770
試してますがうまくいきませんね。aaaやbbbが例えであることをうまく理解してくれなくて、
全てのフォルダ名を手入力する必要があるコードしか作ってくれません。○や△みたいな記号に置き換えても同じ。
get-childitemで特定の深さ以下のフォルダ名を取得することができればうまく行きそうですが、
-depthは特定の深さ「まで」のフォルダを検索するオプションですよね?
特定の深さ以下のフォルダを検索する方法はありませんか?
試してますがうまくいきませんね。aaaやbbbが例えであることをうまく理解してくれなくて、
全てのフォルダ名を手入力する必要があるコードしか作ってくれません。○や△みたいな記号に置き換えても同じ。
get-childitemで特定の深さ以下のフォルダ名を取得することができればうまく行きそうですが、
-depthは特定の深さ「まで」のフォルダを検索するオプションですよね?
特定の深さ以下のフォルダを検索する方法はありませんか?
772デフォルトの名無しさん
2023/04/16(日) 11:56:14.63ID:QYDIaDii 一発でrecursiveでやるのを諦めて泥臭く2重なり3重なりの繰り返し処理にして
自分でフォルダを掘り下げていけばいいんじゃないの
自分でフォルダを掘り下げていけばいいんじゃないの
773デフォルトの名無しさん
2023/04/16(日) 11:57:11.68ID:QYDIaDii 深さが動的なら関数にして再帰呼び出し
774デフォルトの名無しさん
2023/04/16(日) 12:07:35.90ID:Gz6gIEIr >>771
「特定の深さ以下」ではなく「特定の深さ直下」を対象としたいんだよね?
「特定の深さ以下」ではなく「特定の深さ直下」を対象としたいんだよね?
775デフォルトの名無しさん
2023/04/16(日) 12:38:10.68ID:SPigkToS >>771
相対パスの概念がないのか?
相対パスの概念がないのか?
776デフォルトの名無しさん
2023/04/16(日) 12:47:20.03ID:SPigkToS >>768 はネタかもな
コピー先に何があるのかチェックしないという発想は、まったく理解できない。
初心者なら前提条件という概念がないのはわかる。
先にあったらこうする、そうでなかったらこうするなどの条件分岐がないなら、強引にやればいい。
そもそもROBOCOPYコマンドでできることをやろうとしているのは、これ学校の課題なのかなと思いました。
コピー先に何があるのかチェックしないという発想は、まったく理解できない。
初心者なら前提条件という概念がないのはわかる。
先にあったらこうする、そうでなかったらこうするなどの条件分岐がないなら、強引にやればいい。
そもそもROBOCOPYコマンドでできることをやろうとしているのは、これ学校の課題なのかなと思いました。
777デフォルトの名無しさん
2023/04/16(日) 15:01:28.21ID:EhcVUpdk 深さ3のディレクトリをそのままコピーすりゃいいだけじゃないの?
778768
2023/04/17(月) 01:51:03.87ID:GaP+UugE779デフォルトの名無しさん
2023/04/17(月) 02:46:16.45ID:dBG5z/eM 入出力をちゃんと定義できてないからおかしな事になる初心者あるあるだな
780デフォルトの名無しさん
2023/04/17(月) 11:31:05.75ID:udj2SRYX 特定の深度だけ処理してみた
※$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
}
}
※$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
}
}
781デフォルトの名無しさん
2023/04/19(水) 22:39:13.81ID:CpwHPFTk Start-ThreadJob や Register-EngineEvent のスクリプトブロックの中で
キャプチャされずにWrite-Output 相当の出力をする方法はないでしょうか
パイプラインに流したいので Write-Host ではなく Write-Output したいです
別のプロセスを経由する方法は思いついたのですが残念過ぎますし
ForEach-Object -Parallel のようにキャプチャされなければ良いのに
function hogepiyo {
begin { 処理本体はここで Start-ThreadJob しておく }
process { … }
end { … }
clean { … }
}
なんちゃら | hogepiyo | ぽげむた
のようにしたくて考えてます
要は入出力と処理を非同期にできれば他の方法でもありがたいです
キャプチャされずにWrite-Output 相当の出力をする方法はないでしょうか
パイプラインに流したいので Write-Host ではなく Write-Output したいです
別のプロセスを経由する方法は思いついたのですが残念過ぎますし
ForEach-Object -Parallel のようにキャプチャされなければ良いのに
function hogepiyo {
begin { 処理本体はここで Start-ThreadJob しておく }
process { … }
end { … }
clean { … }
}
なんちゃら | hogepiyo | ぽげむた
のようにしたくて考えてます
要は入出力と処理を非同期にできれば他の方法でもありがたいです
782デフォルトの名無しさん
2023/04/20(木) 22:12:24.17ID:dJqrvGvM キャプチャとか何言ってるのかわからない
783デフォルトの名無しさん
2023/04/20(木) 22:40:35.29ID:fUuxiSJs PowerShellでフォーム作るの割と苦痛なんだけど何かデザインモードとかないの?
784デフォルトの名無しさん
2023/04/21(金) 05:21:56.20ID:ZJfuu8vu Where-object多様するスクリプトに数万行のcsv食わせたら処理に1時間くらいかかる…
大量のデータ処理はWhere-object使うなってみかけたけど使わん方がいいのか
大量のデータ処理はWhere-object使うなってみかけたけど使わん方がいいのか
785デフォルトの名無しさん
2023/04/21(金) 07:34:50.39ID:TBBX4m6H 件数が少ないことが確実な時しか使わない。
スクリプトだとほとんど foreach(){} 使ってる。
パイプライン処理したい場合でも &{} や .{} や function の process{} あるいは filter。
スクリプトだとほとんど foreach(){} 使ってる。
パイプライン処理したい場合でも &{} や .{} や function の process{} あるいは filter。
786デフォルトの名無しさん
2023/04/21(金) 09:17:07.60ID:kA/+t8w0787デフォルトの名無しさん
2023/04/21(金) 11:30:54.75ID:c3fakvC2 >>784
PowerShell スクリプトのパフォーマンスに関する考慮事項
ttps://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/performance/script-authoring-considerations?view=powershell-7.3
PowerShell スクリプトのパフォーマンスに関する考慮事項
ttps://learn.microsoft.com/ja-jp/powershell/scripting/dev-cross-plat/performance/script-authoring-considerations?view=powershell-7.3
788デフォルトの名無しさん
2023/04/21(金) 17:50:40.46ID:4gKwO2KA >>782
出力がコレクションにためられて Receive-Job が必要になるのを回避したい
Start-ThreadJob の -StreamingHost オプションの Write-Output 版な感じ
そんなオプションはないから回避方法を知りたい
Start-TheadJobだけでなくイベントハンドラから出力する場合も同じ
イベント飛ばせばいいかと思ったらハンドラがジョブ扱いされて頭抱えた
どうすれば Receive-Job を必要とせずに Write-Output 相当の出力ができるのだろう
出力がコレクションにためられて Receive-Job が必要になるのを回避したい
Start-ThreadJob の -StreamingHost オプションの Write-Output 版な感じ
そんなオプションはないから回避方法を知りたい
Start-TheadJobだけでなくイベントハンドラから出力する場合も同じ
イベント飛ばせばいいかと思ったらハンドラがジョブ扱いされて頭抱えた
どうすれば Receive-Job を必要とせずに Write-Output 相当の出力ができるのだろう
789デフォルトの名無しさん
2023/04/21(金) 18:06:57.94ID:xAAOLjx6790デフォルトの名無しさん
2023/04/21(金) 19:56:34.84ID:6pSKsEtx >>788
Jobである必要がないならRunspacePoolでできるんじゃね
Jobである必要がないならRunspacePoolでできるんじゃね
791デフォルトの名無しさん
2023/04/21(金) 21:03:30.48ID:Vzmd1cD+792デフォルトの名無しさん
2023/04/22(土) 10:34:00.20ID:iFkcYPBt 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 はどうすれば実現できますか
処理時間でずれていくのはもちろんかまいませんが
入力待ちにも出力を続ける具体例が知りたいです
・入力を読み続ける
・最後に読んだ入力を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 はどうすれば実現できますか
処理時間でずれていくのはもちろんかまいませんが
入力待ちにも出力を続ける具体例が知りたいです
793デフォルトの名無しさん
2023/04/22(土) 10:36:10.71ID:iFkcYPBt おっと間違い
(Get-Date) - $s でなく ((Get-Date) - $s) だ
(Get-Date) - $s でなく ((Get-Date) - $s) だ
794デフォルトの名無しさん
2023/04/22(土) 16:45:49.14ID:3JkCsMe2 >>792
「qなら終了」が何を示すかによるが、powershellのパイプは途中で打ち切る事は原則できないと考えた方が良い。
(endブロックが呼ばれない不完全なハックならググれば見つかる)
またパイプ処理の待機はpowershellのメインスレッドの待機という意味になるので、
そこに非同期イベントを介入させたい場合はそのイベント用の別スレッドを走らせておく必要がある。
「qなら終了」が何を示すかによるが、powershellのパイプは途中で打ち切る事は原則できないと考えた方が良い。
(endブロックが呼ばれない不完全なハックならググれば見つかる)
またパイプ処理の待機はpowershellのメインスレッドの待機という意味になるので、
そこに非同期イベントを介入させたい場合はそのイベント用の別スレッドを走らせておく必要がある。
795デフォルトの名無しさん
2023/04/22(土) 21:39:35.55ID:81urZ/Lj (New-Object -ComObject Shell.Application).NameSpace(10).MoveHere(ファイルパス)
上記の方法でファイルをごみ箱に移動する場合ファイルが1個なら問題ないんですが、
ファイルパスをを"z:\*"みたいにワイルドカードで指定するとなぜか
ごみ箱でなくC:\Users\ユーザー名にファイルが送られてしまいます。
どうすればごみ箱に送れましょうか?
上記の方法でファイルをごみ箱に移動する場合ファイルが1個なら問題ないんですが、
ファイルパスをを"z:\*"みたいにワイルドカードで指定するとなぜか
ごみ箱でなくC:\Users\ユーザー名にファイルが送られてしまいます。
どうすればごみ箱に送れましょうか?
796デフォルトの名無しさん
2023/04/23(日) 10:54:07.72ID:ElcI27v7 >>794
q は出力スレッドの停止マークで、入力の最後も意味するつもりだった (その後の入力はない)
という考えをくみ取って欲しくて例を付けたのだが伝わらなくて残念
パイプラインの中断にSelect-Object -First 1する話は知ってる
ていうか本題から話をそらそうとしてません?
知りたいのはメインスレッド以外からプライマリパイプラインに出力する方法
パイプラインの次段に送るにはどうすればいいか具体例が欲しい
q は出力スレッドの停止マークで、入力の最後も意味するつもりだった (その後の入力はない)
という考えをくみ取って欲しくて例を付けたのだが伝わらなくて残念
パイプラインの中断にSelect-Object -First 1する話は知ってる
ていうか本題から話をそらそうとしてません?
知りたいのはメインスレッド以外からプライマリパイプラインに出力する方法
パイプラインの次段に送るにはどうすればいいか具体例が欲しい
797デフォルトの名無しさん
2023/04/23(日) 15:49:22.67ID:fUzoPDLK シェルスクリプトやPowerShell が遅いのは、
毎行、何かのプロセスを起動するからじゃないの?
多くはプロセスの起動時間だろう
Ruby は、外部プロセスを起動しなければ、プロセスは1つのまま。
並行処理もあるけど
grep は、1GB を1秒!
毎行、何かのプロセスを起動するからじゃないの?
多くはプロセスの起動時間だろう
Ruby は、外部プロセスを起動しなければ、プロセスは1つのまま。
並行処理もあるけど
grep は、1GB を1秒!
798デフォルトの名無しさん
2023/04/23(日) 16:01:56.38ID:vCOHFjdN >>796
そもそもパイプは同期的にしか動かないので、次段でいくら細工しても上流が出力を起こしたタイミングに縛られる。
話を単純にするなら不規則な出力を受ける処理と一定間隔で出力する処理は分けるべきだろうね。
そもそもパイプは同期的にしか動かないので、次段でいくら細工しても上流が出力を起こしたタイミングに縛られる。
話を単純にするなら不規則な出力を受ける処理と一定間隔で出力する処理は分けるべきだろうね。
799デフォルトの名無しさん
2023/04/23(日) 16:05:07.36ID:fUzoPDLK >>795
移動なら、robocopy のmov/move を使えば?
移動なら、robocopy のmov/move を使えば?
800デフォルトの名無しさん
2023/04/23(日) 16:10:27.14ID:n0NMvdBV >>799
どうやればごみ箱に移動できましょうか?
どうやればごみ箱に移動できましょうか?
801デフォルトの名無しさん
2023/04/23(日) 16:33:01.94ID:aISPDv4l802デフォルトの名無しさん
2023/04/23(日) 17:57:33.46ID:ElcI27v7803デフォルトの名無しさん
2023/04/24(月) 17:53:43.44ID:cODz6Qqq >>801
どうもありがとうございます。そうします。
どうもありがとうございます。そうします。
804デフォルトの名無しさん
2023/04/25(火) 01:01:33.91ID:q0KJktEO 最近この言語で書くことあるけど関数の呼び出しを最初に書かないとエラー起こすなんて知らなくて問題解決に時間がかかった
多分ほとんどの人が関数はメインの後に書きたいと思うんだけどファイル分けて呼び出したりしてるの?
多分ほとんどの人が関数はメインの後に書きたいと思うんだけどファイル分けて呼び出したりしてるの?
805デフォルトの名無しさん
2023/04/25(火) 07:59:40.97ID:0OU27daL806デフォルトの名無しさん
2023/04/25(火) 08:14:10.57ID:Q567y34W >>805
定義を上書きできる言語なら呼び出し順序に意味があると思うけど、そうじゃないならただの手抜き仕様
定義を上書きできる言語なら呼び出し順序に意味があると思うけど、そうじゃないならただの手抜き仕様
807デフォルトの名無しさん
2023/04/25(火) 08:17:30.73ID:0OU27daL >>806
実行速度が速くなる、スコープが明確になる、などのメリットがあって敢えて採用されてるんだよ
JSとかも古くからあるfunction構文は順序関係ないが今推奨されてるアロー関数だと前に書かなきゃだめだ
実行速度が速くなる、スコープが明確になる、などのメリットがあって敢えて採用されてるんだよ
JSとかも古くからあるfunction構文は順序関係ないが今推奨されてるアロー関数だと前に書かなきゃだめだ
808デフォルトの名無しさん
2023/04/25(火) 08:19:33.10ID:0OU27daL あとスパゲティを防ぐ効果があるというメリットもあるな
C言語だとそれを目的にプロトタイプを書かない人もいる
C言語だとそれを目的にプロトタイプを書かない人もいる
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 5:55:55.555
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 戦争は無くならないし殺人は起きるし女はレイプされるし子供は餓死するし
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 高市さんに土下座してもらったら一発解決なのに何でやらないんだろ??
- 【悲報】男性人気アイドルグループJO1、中国公演中止wwwwwwwwwwwwwwwwwwwwwwwwwww
