前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/
次スレは>>980が立ててね!!
探検
PowerShell -Part 6
レス数が1000を超えています。これ以上書き込みはできません。
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
943デフォルトの名無しさん
2023/11/16(木) 13:08:37.33ID:evZ76lXK 何言ってんだか
944デフォルトの名無しさん
2023/11/16(木) 13:38:46.26ID:WvJyjQhC >>940
とあるオブジェクトの初期設定にこんな感じで書いてたんですが無理そうですか
了解しました
class hoge:object{
[object]$o_a;
[object]$o_b;
hoge (){
[int] $cnt;
function object_a_init(){
$this.cnt = 1;
}
object_a_init;
}
}
とあるオブジェクトの初期設定にこんな感じで書いてたんですが無理そうですか
了解しました
class hoge:object{
[object]$o_a;
[object]$o_b;
hoge (){
[int] $cnt;
function object_a_init(){
$this.cnt = 1;
}
object_a_init;
}
}
945デフォルトの名無しさん
2023/11/16(木) 15:17:07.39ID:FRf+5dUd 親スコープにある変数の値を変えたいなら
Set-Variable -Name a -Value 1 -Scope 1
Set-Variable -Name a -Value 1 -Scope 1
946デフォルトの名無しさん
2023/11/16(木) 17:00:58.20ID:HndTNurg947デフォルトの名無しさん
2023/11/16(木) 17:15:32.66ID:JFk7nC9m 横からすいません
なんでこれはエラーになるんでしょうか
pwsh -nop -c "[System.Text.Encoding]::GetEncoding(932)"
-c を使わずに pwsh -nop と起動して
[System.Text.Encoding]::GetEncoding(932)
を入れると動くのもわからない・・・
なんでこれはエラーになるんでしょうか
pwsh -nop -c "[System.Text.Encoding]::GetEncoding(932)"
-c を使わずに pwsh -nop と起動して
[System.Text.Encoding]::GetEncoding(932)
を入れると動くのもわからない・・・
948デフォルトの名無しさん
2023/11/16(木) 18:13:00.55ID:vDdnsPkv エラーって何のエラーなの
949デフォルトの名無しさん
2023/11/16(木) 20:12:17.64ID:JFk7nC9m MethodInvocationException: Exception calling "GetEncoding" with "1" argument(s): "No data is available for encoding 932. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method."
だそうです
だそうです
950デフォルトの名無しさん
2023/11/16(木) 20:17:57.10ID:JFk7nC9m Encoding.RegisterProvider でぐぐったら解決しました
951デフォルトの名無しさん
2023/11/16(木) 22:05:45.00ID:wYK3pDi3 >>939を動くように直したげたよ
function hoge(){
[int]$a = "1" # $aを値で初期化しつつ型を強制。型宣言というよりキャストに相当。[int]に強制されるので値が文字列でも$aにはSystem.Int32に変換された値が入る
$a.GetType() | Write-Host # $aの値の型をコンソールに出力 System.Int32
function moge(){
([ref]$a).Value = 1 # >>941-942の言うブロックで変数を生成せず既存の変数を参照して値を代入する記法
}
moge
$a # 関数の打ち切りの意図を除きreturnキーワード不要。powershellのfuncitonは最後に限らず値を返す式は全部返そうとする
}
hoge
function hoge(){
[int]$a = "1" # $aを値で初期化しつつ型を強制。型宣言というよりキャストに相当。[int]に強制されるので値が文字列でも$aにはSystem.Int32に変換された値が入る
$a.GetType() | Write-Host # $aの値の型をコンソールに出力 System.Int32
function moge(){
([ref]$a).Value = 1 # >>941-942の言うブロックで変数を生成せず既存の変数を参照して値を代入する記法
}
moge
$a # 関数の打ち切りの意図を除きreturnキーワード不要。powershellのfuncitonは最後に限らず値を返す式は全部返そうとする
}
hoge
952デフォルトの名無しさん
2023/11/17(金) 11:55:26.61ID:i3gkpHOP >>939
参照渡しでやってみれば?
--------
function hoge
{
[int] $a = 1234
function moge
{
param (
[ref] $b
)
$b.Value = 5678
}
moge -b ([ref] $a)
return $a
}
hoge
--------
about_Ref
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_ref?view=powershell-7.3
参照渡しでやってみれば?
--------
function hoge
{
[int] $a = 1234
function moge
{
param (
[ref] $b
)
$b.Value = 5678
}
moge -b ([ref] $a)
return $a
}
hoge
--------
about_Ref
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_ref?view=powershell-7.3
953デフォルトの名無しさん
2023/11/17(金) 14:37:28.42ID:05VltA/O PowerShell 7.4 General Availability
https://devblogs.microsoft.com/powershell/powershell-7-4-general-availability/
PSNativeCommandPreserveBytePipe 待ってた!
https://devblogs.microsoft.com/powershell/powershell-7-4-general-availability/
PSNativeCommandPreserveBytePipe 待ってた!
954デフォルトの名無しさん
2023/11/17(金) 20:30:46.86ID:Wtzmq/3L リンク先読んでないけど、.exeにパイプしたときに早くなる(普通になる)のかな
955デフォルトの名無しさん
2023/11/20(月) 14:11:07.62ID:HI5+Omcp 文字列を8文字ごとに分割して配列に格納したいのですが
文字列が8文字以下だと1文字ずつ分割されてしまいます。
$nums = @()
$nums = $num -split '(.{1,8})' | Where-Object{$_}
上記を実行すると、
$num = 12345678 のとき、$num[0] は 1が格納されるのですが、
12345678が格納されるようにするには、どうすればよいでしょうか。
文字列が8文字以下だと1文字ずつ分割されてしまいます。
$nums = @()
$nums = $num -split '(.{1,8})' | Where-Object{$_}
上記を実行すると、
$num = 12345678 のとき、$num[0] は 1が格納されるのですが、
12345678が格納されるようにするには、どうすればよいでしょうか。
956デフォルトの名無しさん
2023/11/20(月) 14:50:35.31ID:HI5+Omcp957デフォルトの名無しさん
2023/11/20(月) 15:52:48.41ID:fHSnLnjq $numsには文字列の"12345678"が代入されてるから
$nums[0]だと"12345678"の1文字目の1が返る
1行目を [string[]]$nums = @() とするか
2行目を $nums = @(12345678 -split '(.{1,8})' | Where-Object{$_}) とすればOK
$nums[0]だと"12345678"の1文字目の1が返る
1行目を [string[]]$nums = @() とするか
2行目を $nums = @(12345678 -split '(.{1,8})' | Where-Object{$_}) とすればOK
958デフォルトの名無しさん
2023/11/20(月) 17:23:25.47ID:HI5+Omcp >>0957
ありがとうございます!
できました。
ありがとうございます!
できました。
959デフォルトの名無しさん
2023/11/21(火) 21:09:20.96ID:qJoihvDX PowerShell 7.4 だと
PS> python -c 'print("\\")'
\
と期待通りになるけど Windows PowerShell 5.1 だと
PS> python -c 'print("\\")'
File "<string>", line 1
print(\)
^
SyntaxError: unexpected character after line continuation character
となるのは何が起きてるの?
7.4 でも $PSNativeCommandArgumentPassing を Legacy にすると同じみたいだけど
具体的にどうなってるのか今更だけど知っておきたい
PS> python -c 'print("\\")'
\
と期待通りになるけど Windows PowerShell 5.1 だと
PS> python -c 'print("\\")'
File "<string>", line 1
print(\)
^
SyntaxError: unexpected character after line continuation character
となるのは何が起きてるの?
7.4 でも $PSNativeCommandArgumentPassing を Legacy にすると同じみたいだけど
具体的にどうなってるのか今更だけど知っておきたい
960デフォルトの名無しさん
2023/11/21(火) 21:20:45.10ID:CeBFd4j1961デフォルトの名無しさん
2023/11/21(火) 22:46:00.10ID:qJoihvDX 対処法が知りたいんじゃなくてどう解析されたかが知りたい
962デフォルトの名無しさん
2023/11/21(火) 22:57:00.47ID:wGZJ97Pn コマンドラインのパース内容をデバッグできるコマンドレットがあって
inactionで紹介されてた気がするけど何か思い出せない
inactionで紹介されてた気がするけど何か思い出せない
963デフォルトの名無しさん
2023/11/22(水) 00:52:11.84ID:z2bY/yQG $PSVersionTable
PSVersion 5.1
Ruby の1-liner では、%Q 記法があるから大丈夫
ruby -e 'print %Q(\\)'
\
ruby -e 'print %Q(あaい)'
あaい
PSVersion 5.1
Ruby の1-liner では、%Q 記法があるから大丈夫
ruby -e 'print %Q(\\)'
\
ruby -e 'print %Q(あaい)'
あaい
964デフォルトの名無しさん
2023/11/22(水) 04:23:14.63ID:nZzIGDLb >>962
Get-Command | sls "breakpoint|callstack"
デバッガーについて - PowerShell | Microsoft Learn
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_debuggers?view=powershell-5.1
Get-Command | sls "breakpoint|callstack"
デバッガーについて - PowerShell | Microsoft Learn
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_debuggers?view=powershell-5.1
965デフォルトの名無しさん
2023/11/22(水) 10:26:54.20ID:Yh77KGhz966デフォルトの名無しさん
2023/11/22(水) 10:52:24.03ID:Yh77KGhz 他に、形態素解析みたいに分解・解析できる機能もあった気がするが忘れた
967デフォルトの名無しさん
2023/11/22(水) 14:18:25.39ID:W8vcuvaF PowerShell 7.4 だと python -c 'print("\\")' ですむことを
Windows PowerShell 5.1 だとどう書けばいいんだ
--% を使っても使わなくても分からん
Windows PowerShell 5.1 だとどう書けばいいんだ
--% を使っても使わなくても分からん
968デフォルトの名無しさん
2023/11/22(水) 15:05:51.75ID:fKGlzN6D パラメータの干渉受けたくないなら普通にStart-Processでいいでしょ
969デフォルトの名無しさん
2023/11/22(水) 15:26:30.66ID:W8vcuvaF 対話シェルでStart-Processするのはつらい
970デフォルトの名無しさん
2023/11/22(水) 15:34:55.56ID:W8vcuvaF つらいのは我慢するとしてStart-Processを使ってどう書けばいいの
971デフォルトの名無しさん
2023/11/22(水) 20:54:48.61ID:5rDf7evN pythonの引用符はシングルもダブルもエスケープシーケンス展開されるからおかしな解釈になってるだけだな
pythonの仕様を呪うがいい
pythonの仕様を呪うがいい
972デフォルトの名無しさん
2023/11/22(水) 22:06:38.07ID:W8vcuvaF pythonは例として使っただけだしどうでもいいよ
あくまで興味の対象はPowerShellのコマンドラインのパース
やっぱ 7.4 すげぇで終わってもいいんだけど
なんか 7.4 の --% が腐ってる気がする
5.1 の想定通りの --% と違って勝手に引用符加えてぶっ壊してる感じ
はやいとこ直して欲しい
あくまで興味の対象はPowerShellのコマンドラインのパース
やっぱ 7.4 すげぇで終わってもいいんだけど
なんか 7.4 の --% が腐ってる気がする
5.1 の想定通りの --% と違って勝手に引用符加えてぶっ壊してる感じ
はやいとこ直して欲しい
973デフォルトの名無しさん
2023/11/22(水) 22:37:16.49ID:5rDf7evN うーんどうでもいい変なの相手しちゃった
974デフォルトの名無しさん
2023/11/23(木) 17:39:38.00ID:Rimm12ii いやわかんないなら別にいいけど一応書いとくわ
もちろん 7.4 を Windows で使う話
stop-parsing token (--%) は以後のパースをしないはずなのに
引用符無視して空白で引数を分割してコマンド起動してるっぽい
CreateProcessまでに引用符が変に補完されるから意図通り動かない
--% が出てきたら引数の分割はネイティブコマンドに任せないとあかん
$PSNativeCommandArgumentPassing が Legacy の時と同じ処理な
そういうわけで Legacy 扱いされる .cmd とかでは問題ない
おかしいのは Standard 扱いされる .exe なんかの場合だけ
PSNativeCommandArgumentPassing の説明
>この実験的な機能が有効になっていると、PowerShell は、ネイティブの実行可能
>ファイルを呼び出すときに、文字列を再構築する現在の機構ではなく、
>StartProcessInfo オブジェクトの ArgumentList プロパティを使用します。
にある、文字列を再構築するのが Legacy、Argumentlist を使うのが Standard
という違いがわかれば理解できる話なんだが期待はしてない
もちろん 7.4 を Windows で使う話
stop-parsing token (--%) は以後のパースをしないはずなのに
引用符無視して空白で引数を分割してコマンド起動してるっぽい
CreateProcessまでに引用符が変に補完されるから意図通り動かない
--% が出てきたら引数の分割はネイティブコマンドに任せないとあかん
$PSNativeCommandArgumentPassing が Legacy の時と同じ処理な
そういうわけで Legacy 扱いされる .cmd とかでは問題ない
おかしいのは Standard 扱いされる .exe なんかの場合だけ
PSNativeCommandArgumentPassing の説明
>この実験的な機能が有効になっていると、PowerShell は、ネイティブの実行可能
>ファイルを呼び出すときに、文字列を再構築する現在の機構ではなく、
>StartProcessInfo オブジェクトの ArgumentList プロパティを使用します。
にある、文字列を再構築するのが Legacy、Argumentlist を使うのが Standard
という違いがわかれば理解できる話なんだが期待はしてない
975デフォルトの名無しさん
2023/11/23(木) 22:03:41.74ID:KHOftQWe Powershellを体系的に学ぶにあたっておすすめの本ってありますか?
やりたいことをググってコードをコピペして使用してる状態で、コードの理解度が深まらないと思ったので体系的に学びたいと思いました。
自分のPowershellの用途は、日常的な作業の自動化(テキストファイルの読み書き、ファイルの起動やタスキル、アクティブウィンドウの切り替え、robocopyでのバックアップなど)で使っています。
やりたいことをググってコードをコピペして使用してる状態で、コードの理解度が深まらないと思ったので体系的に学びたいと思いました。
自分のPowershellの用途は、日常的な作業の自動化(テキストファイルの読み書き、ファイルの起動やタスキル、アクティブウィンドウの切り替え、robocopyでのバックアップなど)で使っています。
976デフォルトの名無しさん
2023/11/23(木) 22:45:32.85ID:38VIgpCL 馬鹿には無理
977デフォルトの名無しさん
2023/11/23(木) 23:00:45.15ID:09UkZirn Windows PowerShell in Action Third Editionは読んだかね
https://sd.blackball.lv/library/Windows_PowerShell_in_Action_3rd_Edition_(2017).pdf
ただしこの本は6年前の情報。英語PDFだけど今は色々と翻訳手段もあるから読めると思う
powershellならWindows上の事であれば大抵の事はできるけど
本当に便利に使うならC#や.NETの前提知識があった方がいいだろうね
C#関連で可能な事ならほぼpowershellに置き換え可能だから
https://sd.blackball.lv/library/Windows_PowerShell_in_Action_3rd_Edition_(2017).pdf
ただしこの本は6年前の情報。英語PDFだけど今は色々と翻訳手段もあるから読めると思う
powershellならWindows上の事であれば大抵の事はできるけど
本当に便利に使うならC#や.NETの前提知識があった方がいいだろうね
C#関連で可能な事ならほぼpowershellに置き換え可能だから
978デフォルトの名無しさん
2023/11/24(金) 00:12:01.77ID:kL+9jaCp Powershell で複雑なものは書けないから結局、Ruby になる。
WSL2, Linux側からなら、Windows側をいじれるし
WSL2, Linux側からなら、Windows側をいじれるし
979デフォルトの名無しさん
2023/11/24(金) 03:38:21.50ID:k2LHl+dn rubyガイジなんだろうけどそこでrubyになるのは贔屓目に見てもおかしいだろ
980デフォルトの名無しさん
2023/11/24(金) 05:42:11.56ID:IciYTcVm >>975
コードをコピーしてchatGPTかPerplexityで「PowerShellで"〜〜〜"はどういう意味?」を聞けばいい
コードをコピーしてchatGPTかPerplexityで「PowerShellで"〜〜〜"はどういう意味?」を聞けばいい
981デフォルトの名無しさん
2023/11/24(金) 13:14:03.37ID:4NGqTzL9982デフォルトの名無しさん
2023/11/25(土) 12:02:22.73ID:pLnatqec microsoft learn じゃダメなの?
ttps://learn.microsoft.com/ja-jp/powershell/scripting/how-to-use-docs?view=powershell-7.4
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about?view=powershell-7.4
ttps://learn.microsoft.com/ja-jp/powershell/scripting/how-to-use-docs?view=powershell-7.4
ttps://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about?view=powershell-7.4
983デフォルトの名無しさん
2023/11/25(土) 18:06:48.53ID:wD6fmxci MSの自動翻訳は5分と読んでられない
984デフォルトの名無しさん
2023/11/25(土) 18:41:01.39ID:444pwTGg 英語ページでOK
985デフォルトの名無しさん
2023/11/25(土) 18:53:18.66ID:Q+kYJTm7 975です。おすすめのドキュメント教えてくれた方ありがとうございます。
一つ気になったのですが、学習の順番としてはC#もしくは.NETから入ったほうが効率的ですか?
自分がPowershell始めたきっかけがグローバルホットキーをうまく使いたいというのが始まりで、
後述URLのコードをベースに継ぎ足しで書き加えている状態です。
PowerShellとC#でグローバルホットキーを登録する
https://qiita.com/minr/items/72b02d673727f9eb4c37
※自分のC#のレベルはHelloWorld出したぐらいまで、.NETについても知識としてほぼ白紙です。
一つ気になったのですが、学習の順番としてはC#もしくは.NETから入ったほうが効率的ですか?
自分がPowershell始めたきっかけがグローバルホットキーをうまく使いたいというのが始まりで、
後述URLのコードをベースに継ぎ足しで書き加えている状態です。
PowerShellとC#でグローバルホットキーを登録する
https://qiita.com/minr/items/72b02d673727f9eb4c37
※自分のC#のレベルはHelloWorld出したぐらいまで、.NETについても知識としてほぼ白紙です。
986デフォルトの名無しさん
2023/11/25(土) 19:23:35.12ID:c65Q6uO9 ダボゥクリッコゥで実行出来ない面倒臭いものを誰が使うんですか?
987デフォルトの名無しさん
2023/11/25(土) 21:21:00.31ID:2+5b9joX ダブルクリックで実行できたWSHはLOVELETTERワームやら何やらでセキュリティが低いとみなされて非推奨になりましたとさ
めでたしめでたし
めでたしめでたし
988デフォルトの名無しさん
2023/11/26(日) 00:07:05.46ID:tHVdGucZ 例えば、デスクトップにショートカットを作って、リンク先を以下のようにすると、
ダブルクリックでPowershell を起動して、Ruby でスクリプトを実行する
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe "ruby C:/Users/Owner/Documents/Ruby/a.rb"
初心者はRuby で始めるべき。
C# はRubyの10倍、時間が掛かるし難しい
ダブルクリックでPowershell を起動して、Ruby でスクリプトを実行する
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe "ruby C:/Users/Owner/Documents/Ruby/a.rb"
初心者はRuby で始めるべき。
C# はRubyの10倍、時間が掛かるし難しい
989デフォルトの名無しさん
2023/11/26(日) 04:20:48.27ID:xBck3nSS こんなんに粘着されちゃmatzが気の毒だわな
990デフォルトの名無しさん
2023/11/26(日) 07:10:42.58ID:forkl5ep 同じ民族同士、分断せずに仲良くしろよ
DevBlogs - Microsoft Developer Blogs
ttps://devblogs.microsoft.com/
DevBlogs - Microsoft Developer Blogs
ttps://devblogs.microsoft.com/
991デフォルトの名無しさん
2023/11/26(日) 10:47:01.19ID:d/KzVdDP MatzはWindowsやC++に興味無いから
よほどエゴサでもしないかぎり気の毒なことにはならないわ
知らぬが仏
よほどエゴサでもしないかぎり気の毒なことにはならないわ
知らぬが仏
992デフォルトの名無しさん
2023/11/26(日) 15:25:10.25ID:06WEnIxy う
993デフォルトの名無しさん
2023/11/26(日) 15:25:17.90ID:06WEnIxy め
994デフォルトの名無しさん
2023/11/26(日) 15:37:23.40ID:tLrTLV3h というか、Windowsの日本語localizationのデフォルトが未だにクゾだから、
「☑ベータ: ワールドワイド言語サポートを Unicode UTF-8 を使用」
を最初から標準にしていないかぎり、Windowsを日本語で使うこと自体、クソということになる
「☑ベータ: ワールドワイド言語サポートを Unicode UTF-8 を使用」
を最初から標準にしていないかぎり、Windowsを日本語で使うこと自体、クソということになる
995デフォルトの名無しさん
2023/11/29(水) 13:21:53.02ID:FINewHXp 外部コマンドを実行するときに外部コマンド自体は正常な戻り値を返してるのにpowershellで動かすとNativeCommandErrorって例外が出るんだけどなんでだかわかる人おる?
996デフォルトの名無しさん
2023/11/29(水) 15:06:21.22ID:UMPQWy8o そういうのはまず再現できるコードを貼ってね
997デフォルトの名無しさん
2023/11/29(水) 16:09:41.88ID:0g8RZ7sB ISE上で実行した場合に標準エラー出力があると
戻り値に関係なくNativeCommandErrorになるけど、このこと?
そうでなければ>>996にプラスしてバージョンなどの環境も示してね。
あと次スレ
https://mevius.5ch.net/test/read.cgi/tech/1701241669/
戻り値に関係なくNativeCommandErrorになるけど、このこと?
そうでなければ>>996にプラスしてバージョンなどの環境も示してね。
あと次スレ
https://mevius.5ch.net/test/read.cgi/tech/1701241669/
998デフォルトの名無しさん
2023/11/29(水) 17:02:28.41ID:FINewHXp >>997
多分それですありがとうございます
多分それですありがとうございます
999デフォルトの名無しさん
2023/11/29(水) 18:41:30.81ID:Emfdd1vJ 質問いいですか
1000デフォルトの名無しさん
2023/11/29(水) 19:21:40.65ID:0g8RZ7sB だめです
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 654日 0時間 45分 29秒
新しいスレッドを立ててください。
life time: 654日 0時間 45分 29秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【映画】『クレヨンしんちゃん』 中国で公開延期 対日報復、エンタメに波及 [冬月記者★]
- Xのネトウヨは大体高齢独身。40過ぎて独身だと例外なく狂うって本当だったんだなと思う [805596214]
- 生活保護だけど30万円のPCの椅子買おうか迷ってる
- 日経時間外、5万円割れ 垂直落下始まる [402859164]
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 女の子に生まれ変わったらやりたいこと🍓🍫💄❤ [856698234]
- ウッドデッキで調子こいてたやついたじゃん
