前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/
次スレは>>980が立ててね!!
PowerShell -Part 4
レス数が900を超えています。1000を超えると表示できなくなるよ。
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
801デフォルトの名無しさん
2020/12/13(日) 01:22:24.35ID:cCJaeZ7C for ($i=1; $i -le 2; $i++){
Switch($i) {
1 {(1..10) | %{"ikkaime_"+$_}}
2 {(1..10) | %{"nikkaime_"+$_}}
}
}
Switch($i) {
1 {(1..10) | %{"ikkaime_"+$_}}
2 {(1..10) | %{"nikkaime_"+$_}}
}
}
802デフォルトの名無しさん
2020/12/13(日) 07:32:06.23ID:5EW0FlRD パイプは繋げてナンボ
UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大
長いパイプラインが違和感?
いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大
長いパイプラインが違和感?
いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
803デフォルトの名無しさん
2020/12/13(日) 08:18:38.20ID:6TpS+NE1 0..9 | % { "ikkaime_$_"; "nikaime_$_" } | sort
804デフォルトの名無しさん
2020/12/13(日) 08:21:28.01ID:7zDtZqQK function hoge($fuga) {
0..9 | ForEach-Object {Write-Output "$fuga$_"}
}
hoge 'ikkaime'
hoge 'nikaime'
0..9 | ForEach-Object {Write-Output "$fuga$_"}
}
hoge 'ikkaime'
hoge 'nikaime'
805デフォルトの名無しさん
2020/12/13(日) 08:23:17.62ID:7zDtZqQK >>800
"ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
"ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
806デフォルトの名無しさん
2020/12/13(日) 10:24:56.32ID:aJyBOeQT807デフォルトの名無しさん
2020/12/13(日) 20:15:51.92ID:w0iK+TRN808デフォルトの名無しさん
2020/12/13(日) 22:17:37.96ID:aJyBOeQT ゴルビーのパイプライン大作戦にだって行って帰ってくるようなパイプは無いだろ
809デフォルトの名無しさん
2020/12/14(月) 13:38:52.97ID:MCQs+fzK 変数を事前に全部固めた書いたほうがわかりやすいと思うのですが、
ループ前に定義した変数の値に、ループ時の変数を入れ込む方法がわかりません
$mynameis変数をループ中(コメントの位置)に持ってくると、問題ないんですが、
なんとか#変数ってしてあるところにもってきたいんです
定義したときには空で、あとから追加で変数に値をいれることってできないんでしょうか?
ソース
#変数
$watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname$lname"
foreach ($lname in "一郎","二郎","三郎"){
#$mynameis = "$watashi$fname$lname"
#名を名乗る
Write-Output $mynameis
}
ループ前に定義した変数の値に、ループ時の変数を入れ込む方法がわかりません
$mynameis変数をループ中(コメントの位置)に持ってくると、問題ないんですが、
なんとか#変数ってしてあるところにもってきたいんです
定義したときには空で、あとから追加で変数に値をいれることってできないんでしょうか?
ソース
#変数
$watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname$lname"
foreach ($lname in "一郎","二郎","三郎"){
#$mynameis = "$watashi$fname$lname"
#名を名乗る
Write-Output $mynameis
}
810デフォルトの名無しさん
2020/12/14(月) 14:58:28.73ID:0uVb17k3 $mynameis = { "$watashi$fname$lname" }
$watashi = "私は"
$fname = "佐藤"
foreach ($lname in "一郎","二郎","三郎"){
#名を名乗る
Write-Output (mynameis)
}
$watashi = "私は"
$fname = "佐藤"
foreach ($lname in "一郎","二郎","三郎"){
#名を名乗る
Write-Output (mynameis)
}
811デフォルトの名無しさん
2020/12/14(月) 15:01:37.07ID:0uVb17k3 >Write-Output (mynameis)
Write-Output (&$mynameis)
こうかも、PowerShell難しすぎ
Write-Output (&$mynameis)
こうかも、PowerShell難しすぎ
812デフォルトの名無しさん
2020/12/14(月) 21:21:03.56ID:vj7TAroN foreachはスコープ作らなかったと思うけど
何が問題なの?
何が問題なの?
813デフォルトの名無しさん
2020/12/14(月) 21:31:50.90ID:vj7TAroN ごめんようやく理解した
最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな
変数が自動で書き変わるのは正直気持ち悪い
最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな
変数が自動で書き変わるのは正直気持ち悪い
814デフォルトの名無しさん
2020/12/14(月) 21:43:34.54ID:MBsazS7x $watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname{0}"
foreach ($lname in "一郎","二郎","三郎"){
Write-Output ($mynameis -f $lname)
}
$fname = "佐藤"
$mynameis = "$watashi$fname{0}"
foreach ($lname in "一郎","二郎","三郎"){
Write-Output ($mynameis -f $lname)
}
815デフォルトの名無しさん
2020/12/14(月) 22:30:25.12ID:LFps+YXF モダンな言語を使って書くレガシープログラミングだね
先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
816デフォルトの名無しさん
2020/12/14(月) 22:33:35.98ID:/tZ0PSGV そこは鈴木にしようぜ
817デフォルトの名無しさん
2020/12/14(月) 23:10:29.87ID:EXeKWskh できないことはないってだけで、やめたほうがいい
他の人がコードを読む時にとても困惑させるし
半年後に自分が読んでも理解に苦しむかもしれない
他の人がコードを読む時にとても困惑させるし
半年後に自分が読んでも理解に苦しむかもしれない
818デフォルトの名無しさん
2020/12/14(月) 23:57:40.98ID:CBAGo1je 意外とPerl的なスパゲッティの罠がある言語なのね
819デフォルトの名無しさん
2020/12/15(火) 03:55:48.18ID:eKJAj5sp >>810みたいにスクリプトブロックで評価順序制御するのは別におかしくないと思うけど
820デフォルトの名無しさん
2020/12/15(火) 07:38:16.79ID:T2M/UCWI 変数宣言を冒頭に集めるという、昔の言語ではルールだったけどデメリットの方が多いとして廃れた風習
その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな
古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い
記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな
古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い
記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
821デフォルトの名無しさん
2020/12/15(火) 07:38:27.49ID:T2M/UCWI この話をPowershellの罠とされてしまうのはさすがにかわいそう
822デフォルトの名無しさん
2020/12/15(火) 13:15:17.29ID:HMGpB1Xp $watashi = "私は"
$fname = "佐藤"
$lname = "一郎","二郎","三郎"
$lname.ForEach{Write-Output "$watashi$fname$_"}
$fname = "佐藤"
$lname = "一郎","二郎","三郎"
$lname.ForEach{Write-Output "$watashi$fname$_"}
823デフォルトの名無しさん
2020/12/15(火) 13:34:51.98ID:/uFuBiiy "私は"と"佐藤"を分ける意味がない
気持ちは分からなくもないけど
気持ちは分からなくもないけど
824デフォルトの名無しさん
2020/12/16(水) 09:44:04.15ID:VCJoAcsJ 1. webからテキストをDLしてカレントディレクトリに Shift-JIS で保存したい。どう書けばいいですか?
https://example.com/test.txt
文字コード:UTF-8
コマンドプロンプトから以下でDL出来るのまでは調べて分かったんだけど文字コードを変えて保存するのが分かりません
powershell -Command "Invoke-WebRequest https://example.com/test.txt -OutFile test.txt"
コマンドプロンプトにコピペかバッチから使いたいのでワンライナーで出来ると嬉しいです
2. 1に似た処理でweb上のUTF-8のtest.txtをカレントディレクトリのShift-JISのabc.txtに追記したい
こちらもコマンドプロンプトから powershell -Command "〜 みたいに出来ればワンライナーで
https://example.com/test.txt
文字コード:UTF-8
コマンドプロンプトから以下でDL出来るのまでは調べて分かったんだけど文字コードを変えて保存するのが分かりません
powershell -Command "Invoke-WebRequest https://example.com/test.txt -OutFile test.txt"
コマンドプロンプトにコピペかバッチから使いたいのでワンライナーで出来ると嬉しいです
2. 1に似た処理でweb上のUTF-8のtest.txtをカレントディレクトリのShift-JISのabc.txtに追記したい
こちらもコマンドプロンプトから powershell -Command "〜 みたいに出来ればワンライナーで
825デフォルトの名無しさん
2020/12/16(水) 13:22:09.75ID:JHzHImy2 >>824
Invoke-WebRequestのOutFileオプションじゃなくて、EncodingオプションのあるOut-Fileコマンドレットの方を使ったら?
(cmdじゃなくてpowershellから実行すれば、powershell -Command ""の部分はいらないよ)
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default test.txt
追記するなら、Appendオプション
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default abc.txt -Append
Invoke-WebRequestのOutFileオプションじゃなくて、EncodingオプションのあるOut-Fileコマンドレットの方を使ったら?
(cmdじゃなくてpowershellから実行すれば、powershell -Command ""の部分はいらないよ)
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default test.txt
追記するなら、Appendオプション
Invoke-WebRequest https://example.com/test.txt | Out-File -Encoding default abc.txt -Append
826デフォルトの名無しさん
2020/12/16(水) 19:10:36.45ID:VCJoAcsJ >>825
レスありがとうございます。ですが出来ませんでした
Fileは作られるのですが内容が以下のようになります
StatusCode : 200
StatusDescription : OK
Content : ここに中身が複数行 尻切れ
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
x-robots-tag: noarchive, nofollow, noindex
なんか色々
Forms : {}
Headers : 諸々
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength :
中身、Content +尻切れ部分 で保存するにはどう書けばいいですか?
Win10.0.18363.1256 PSVersion 5.1.18362.1171
レスありがとうございます。ですが出来ませんでした
Fileは作られるのですが内容が以下のようになります
StatusCode : 200
StatusDescription : OK
Content : ここに中身が複数行 尻切れ
RawContent : HTTP/1.1 200 OK
Connection: keep-alive
x-robots-tag: noarchive, nofollow, noindex
なんか色々
Forms : {}
Headers : 諸々
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength :
中身、Content +尻切れ部分 で保存するにはどう書けばいいですか?
Win10.0.18363.1256 PSVersion 5.1.18362.1171
827デフォルトの名無しさん
2020/12/16(水) 20:03:25.26ID:kYgyiRJ/ (Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt
828デフォルトの名無しさん
2020/12/16(水) 20:37:34.73ID:VCJoAcsJ >>827
出来ました!ありがとうございます!
なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。
バッチで読み直して再保存すれば行けそうです
やりたいことが可能になりました。感謝!
出来ました!ありがとうございます!
なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。
バッチで読み直して再保存すれば行けそうです
やりたいことが可能になりました。感謝!
829デフォルトの名無しさん
2020/12/16(水) 21:11:10.07ID:CXRufgbD >末尾に改行コード1つ余分に追加されてしまいます
こういうの気持ち悪い!
誰か助けてあげて!
こういうの気持ち悪い!
誰か助けてあげて!
830デフォルトの名無しさん
2020/12/16(水) 23:24:39.55ID:kYgyiRJ/ ググって出てくるやつだとPowershellのVer5以上なら
(Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt -NoNewline
(Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt -NoNewline
831デフォルトの名無しさん
2020/12/16(水) 23:38:36.87ID:VCJoAcsJ832デフォルトの名無しさん
2020/12/17(木) 04:50:30.78ID:aeRfyZfG >>831
.NETのString.Replace()
.NETのString.Replace()
833デフォルトの名無しさん
2020/12/17(木) 05:23:59.73ID:P27ySftq powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -join '`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline"
powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -replace '`n,`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline"
リファレンスとにらめっこし何百回と色々試してこれに行き着いてこれなら行けそうと思ったのですがLFのまま。。
Get-ContentとかSet-Contentとかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです
基礎的な事から覚えないとちょっと自分には無理かもです^^;
powershell -Command "%{((Invoke-WebRequest https://example.com/test.txt).Content) -replace '`n,`r`n'}|Out-File abc.txt -Encoding default -Append -NoNewline"
リファレンスとにらめっこし何百回と色々試してこれに行き着いてこれなら行けそうと思ったのですがLFのまま。。
Get-ContentとかSet-Contentとかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです
基礎的な事から覚えないとちょっと自分には無理かもです^^;
834デフォルトの名無しさん
2020/12/17(木) 11:05:46.69ID:IMvwa6Jv >>833
-replace '`n,`r`n' のところは -replace '`n','`r`n' じゃない?
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1#replacement-operator
-replace '`n,`r`n' のところは -replace '`n','`r`n' じゃない?
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1#replacement-operator
835デフォルトの名無しさん
2020/12/17(木) 11:14:10.52ID:aoellUFv SurfacePro8の、一応待たれてはいるがあまり期待されてない感は異常
836デフォルトの名無しさん
2020/12/17(木) 14:29:13.42ID:hxo0ZZXM >>833-834
"`n", "`r`n" じゃねーの?
"`n", "`r`n" じゃねーの?
837デフォルトの名無しさん
2020/12/17(木) 17:50:06.55ID:P27ySftq >>836
ヒントありがとうございます
最終的に以下で出来ました
ren jane2ch.brd jane2ch.brd.bak &© jane2ch.brd.bak jane2ch.brd &&powershell -Command "(Invoke-WebRequest https://example.com/bbsmenu.brd).Content -replace \"`n\",\"`r`n\"|Out-File jane2ch.brd -Encoding default -Append -NoNewline"
アドバイス下さった方皆ありがとう
ヒントありがとうございます
最終的に以下で出来ました
ren jane2ch.brd jane2ch.brd.bak &© jane2ch.brd.bak jane2ch.brd &&powershell -Command "(Invoke-WebRequest https://example.com/bbsmenu.brd).Content -replace \"`n\",\"`r`n\"|Out-File jane2ch.brd -Encoding default -Append -NoNewline"
アドバイス下さった方皆ありがとう
838デフォルトの名無しさん
2020/12/18(金) 21:36:03.86ID:NKeMhQjy Invoke-WebRequestはaliasで短くできるよ
(Get-Alias -Definition Invoke-WebRequest).Name
curl
iwr
wget
Out-Fileはaliasが無い
(Get-Alias -Definition Invoke-WebRequest).Name
curl
iwr
wget
Out-Fileはaliasが無い
839デフォルトの名無しさん
2021/01/01(金) 16:52:16.58ID:jgut+Hkv 関数とクラスメソッドでreturnまわりの振舞い全然違うのかよ
ほんまクソやな
ほんまクソやな
840デフォルトの名無しさん
2021/01/01(金) 17:32:29.13ID:iwrlPpxO 自分が言語を知らないだけなのに言語を叩くやつは技術力があれだって書込みをLinuxスレで見た
謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
841デフォルトの名無しさん
2021/01/01(金) 18:39:57.15ID:K4bi2CUk 詭弁だね
842デフォルトの名無しさん
2021/01/02(土) 12:59:00.83ID:6NGWiCza そんなウンコになるほど振る舞い違ったっけ
843デフォルトの名無しさん
2021/01/02(土) 14:38:10.21ID:SsQKjWAu 関数のreturnは単に関数を抜けるだけ
出力はストリームを使う
クラスのメソッドはreturn文でのみ値を返す
多くの言語でよくみられるやつ
Write-Outputしても無視される
出力はストリームを使う
クラスのメソッドはreturn文でのみ値を返す
多くの言語でよくみられるやつ
Write-Outputしても無視される
844デフォルトの名無しさん
2021/01/02(土) 14:45:10.44ID:o3T1iAcx 変数のスコープも違うよねー
function f() {
echo $a
}
$a = "test"
f
関数はこれが気持ち悪すぎてメソッドしか使わなくなった
function f() {
echo $a
}
$a = "test"
f
関数はこれが気持ち悪すぎてメソッドしか使わなくなった
845デフォルトの名無しさん
2021/01/03(日) 01:23:46.88ID:RCSnKIYE >>843,844
なるほどありがd
なるほどありがd
846デフォルトの名無しさん
2021/01/03(日) 01:30:49.55ID:BT1KEPia 質問です。
.NETのKeyedCollectionクラスを使用したいのですが、
パイプラインに関するエラーメッセージが出てうまくいきません。
解決方法を教えていただけませんか。
環境はWindowsPowerShell 5.1をVSCode上で実行しています。
ソースコードとエラーメッセージは下記のとおりです。
◆ソースコード
class Record {
[string] $Key
[double] $Data
}
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
◆エラーメッセージ:
パイプラインの作成中にエラーが発生しました。
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RuntimeException
以上、よろしくおねがいします。
.NETのKeyedCollectionクラスを使用したいのですが、
パイプラインに関するエラーメッセージが出てうまくいきません。
解決方法を教えていただけませんか。
環境はWindowsPowerShell 5.1をVSCode上で実行しています。
ソースコードとエラーメッセージは下記のとおりです。
◆ソースコード
class Record {
[string] $Key
[double] $Data
}
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
◆エラーメッセージ:
パイプラインの作成中にエラーが発生しました。
+ CategoryInfo : NotSpecified: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : RuntimeException
以上、よろしくおねがいします。
847デフォルトの名無しさん
2021/01/03(日) 04:03:05.06ID:leX2V3Ud クラスごとにファイル分けてドットソースで読み込んで
848デフォルトの名無しさん
2021/01/03(日) 04:09:59.45ID:ORVbOLX2 >>847
うちでも再現したわ Win10 1909
一応定義をC#で書いたら動いたから載せておく
Add-Type @"
public class Record {
public string Key;
public double Data;
}
public class MyCollection : System.Collections.ObjectModel.KeyedCollection<string, Record> {
protected override string GetKeyForItem(Record item) {
return item.Key;
}
}
"@
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
うちでも再現したわ Win10 1909
一応定義をC#で書いたら動いたから載せておく
Add-Type @"
public class Record {
public string Key;
public double Data;
}
public class MyCollection : System.Collections.ObjectModel.KeyedCollection<string, Record> {
protected override string GetKeyForItem(Record item) {
return item.Key;
}
}
"@
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
849デフォルトの名無しさん
2021/01/03(日) 04:29:20.63ID:ORVbOLX2850デフォルトの名無しさん
2021/01/03(日) 08:40:29.46ID:MW0NgZmT PowerShellのclassってどの段階で解釈されるんだろう
851デフォルトの名無しさん
2021/01/03(日) 12:17:05.18ID:n1qZMfJK 実行文が入っていない
単にコンパイルされる文、型の宣言・定義しか入っていない。
インスタンスを作ったりする、実メモリの割り付けをされる文がない
単にコンパイルされる文、型の宣言・定義しか入っていない。
インスタンスを作ったりする、実メモリの割り付けをされる文がない
852846
2021/01/03(日) 17:02:17.09ID:BT1KEPia >>851
クラス定義のps1ファイルの中身はそうすべき、ということでしょうか?
>>849
確かにコンソールで全て定義すると動きますね。
クラス周りの動きが難しいです。。。
>>847
ありがとうございます。
下記のように書き直したところうまく動きました。
◆Record.ps1
class Record {
[string] $Key
[double] $Data
}
◆MyCollection.ps1
. .\Record.ps1 # ←これは無くても動く…??
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
◆Test.ps1
. .\Record.ps1
. .\MyCollection.ps1
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
クラス定義のps1ファイルの中身はそうすべき、ということでしょうか?
>>849
確かにコンソールで全て定義すると動きますね。
クラス周りの動きが難しいです。。。
>>847
ありがとうございます。
下記のように書き直したところうまく動きました。
◆Record.ps1
class Record {
[string] $Key
[double] $Data
}
◆MyCollection.ps1
. .\Record.ps1 # ←これは無くても動く…??
class MyCollection : System.Collections.ObjectModel.KeyedCollection[string, Record] {
[string] GetKeyForItem([Record] $item) {
return $item.Key
}
}
◆Test.ps1
. .\Record.ps1
. .\MyCollection.ps1
$r = [Record]@{ Key = "pi"; Data = 3.14 }
$c = [MyCollection]::new()
$c.Add($r)
$c["pi"].Data # 3.14と表示されてほしい
853851
2021/01/03(日) 18:34:59.83ID:n1qZMfJK ファイルA の中で、ファイルB を読み込むと、
依存ファイルであるファイルBが、先に実行される事が確定するのだろう
一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
依存ファイルであるファイルBが、先に実行される事が確定するのだろう
一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
854デフォルトの名無しさん
2021/01/07(木) 01:13:26.70ID:MvQgNxU+ すいません、Powershellって、変数が空だった場合の
デフォルト値を設定する方法ってありますか?
bashでいうところの、
${hoge:-fuga}
って方法です。
デフォルト値を設定する方法ってありますか?
bashでいうところの、
${hoge:-fuga}
って方法です。
855デフォルトの名無しさん
2021/01/07(木) 02:45:37.83ID:CsAW39lY ねーよ
VBSで言うIsEmpty相当すらない
せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
VBSで言うIsEmpty相当すらない
せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
856デフォルトの名無しさん
2021/01/07(木) 08:03:25.19ID:1A0NtNS9 ($nullでなく)空って状態はないと思うから、しいてやるならGet-Variableで変数が存在するか調べるくらいかね
857デフォルトの名無しさん
2021/01/07(木) 08:17:46.65ID:7KuEq4Kq >>854
PowerShell 7の??演算子はいかがでしょうか
PowerShell 7の??演算子はいかがでしょうか
858デフォルトの名無しさん
2021/01/07(木) 08:28:41.55ID:6ewH2FY0 >>854
変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける
空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける
空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
859デフォルトの名無しさん
2021/01/07(木) 08:34:36.49ID:6ewH2FY0 >>856
変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
860デフォルトの名無しさん
2021/01/07(木) 13:21:05.91ID:ht1NLYQc 7って便利なんだな
861デフォルトの名無しさん
2021/01/07(木) 21:21:38.47ID:R2rezzh3862デフォルトの名無しさん
2021/01/07(木) 21:59:07.15ID:o0FdcV6b えっ?
863デフォルトの名無しさん
2021/01/07(木) 22:43:44.97ID:IvTx7xdj foo,barも知らない人でしょ
864デフォルトの名無しさん
2021/01/07(木) 22:50:20.03ID:iqGL0Mlk ほげふがの語源ってサザエさんだったの!? マジで!
865デフォルトの名無しさん
2021/01/08(金) 00:22:33.24ID:s1r0Khta 来週もまた観てくださいね
$hong -or $fouf
$hong -or $fouf
866デフォルトの名無しさん
2021/01/08(金) 10:41:54.36ID:zUQduDYO 逆にメタ変数でhoge、fugaってそこまでマイナーか?
867デフォルトの名無しさん
2021/01/08(金) 11:27:10.91ID:3ONG9Jp/ >>866
誰もマイナーとか言ってない
誰もマイナーとか言ってない
868デフォルトの名無しさん
2021/01/08(金) 11:53:36.70ID:zUQduDYO869デフォルトの名無しさん
2021/01/08(金) 12:25:26.48ID:eXVg8SYp870デフォルトの名無しさん
2021/01/08(金) 12:25:53.52ID:eXVg8SYp これ万能論法ですな
871デフォルトの名無しさん
2021/01/08(金) 12:36:55.29ID:2lGGPyYq そう思ってるのは言ってる本人だけだろう
872デフォルトの名無しさん
2021/01/09(土) 01:01:42.83ID:KQEfE/JM ※すべてのネットワークアダプタを無効にして、
Get-NetConnectionProfileは必ずエラーになる状態で実行しています。
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null)
$?
True
この場合、マル括弧がどんな働きをして
結果が変わってしまうのか教えてください。
Get-NetConnectionProfileは必ずエラーになる状態で実行しています。
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi 2>$null)
$?
True
この場合、マル括弧がどんな働きをして
結果が変わってしまうのか教えてください。
873デフォルトの名無しさん
2021/01/09(土) 01:03:45.10ID:KQEfE/JM ちなみにこうしても
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi
エラーメッセージ
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi)
エラーメッセージ
$?
True
という状態でした。
$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi
エラーメッセージ
$?
False
$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi)
エラーメッセージ
$?
True
という状態でした。
874デフォルトの名無しさん
2021/01/09(土) 08:27:17.19ID:kPw1IBO3 >>872-873
まあバグ(MS的には仕様とも言う)みたいなもんやね
Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True.
This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions.
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description
なのでPowerShellを7にすれば解決するかと
まあバグ(MS的には仕様とも言う)みたいなもんやね
Until PowerShell 7, containing a statement within parentheses (...), subexpression syntax $(...) or array expression @(...) always reset $? to True , so that (Write-Error) shows $? as True.
This has been changed in PowerShell 7, so that $? will always reflect the actual success of the last command run in these expressions.
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_automatic_variables?view=powershell-7.1#short-description
なのでPowerShellを7にすれば解決するかと
875デフォルトの名無しさん
2021/01/09(土) 09:13:27.43ID:iGxXP/Ic 5.1はメンテしないってことか?
OSにデフォで入ってるバージョンなんだから直せよ
OSにデフォで入ってるバージョンなんだから直せよ
876デフォルトの名無しさん
2021/01/09(土) 09:49:28.96ID:kPw1IBO3 いきなり直したらユーザースクリプトのバグが顕在化したりするだろ
どうでもいいようなスクリプトなら7に上げろよ
どうでもいいようなスクリプトなら7に上げろよ
877デフォルトの名無しさん
2021/01/09(土) 10:38:48.10ID:amtktMoR どうでもいいスクリプトで問題回避できるなら7に上げなくてもいいんじゃね。
878デフォルトの名無しさん
2021/01/09(土) 11:36:00.49ID:KQEfE/JM879デフォルトの名無しさん
2021/01/09(土) 11:45:27.45ID:vKxQ0OMt880デフォルトの名無しさん
2021/01/09(土) 16:15:40.54ID:WaDdsN2m881デフォルトの名無しさん
2021/01/10(日) 04:54:33.84ID:3v4yt86U 以下の表記の意味を教えてください。
void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback)
メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。
$batch = New-Object Google.Apis.Requests.BatchRequst($service)
$batch.Queue
で表示される内容です。
void Queue[TResponse](Google.Apis.Requests.IClientServiceRequest request, Google.Apis.Requests.BatchRequest+OnResponse`1[TResponse] callback)
メソッドに角カッコ?や、型指定に+や`1[TResponse]の意味がわかりませんでした。
$batch = New-Object Google.Apis.Requests.BatchRequst($service)
$batch.Queue
で表示される内容です。
882デフォルトの名無しさん
2021/01/10(日) 08:11:25.80ID:a907yL+h クラスのメンバーにクラスがある時は+になるんじゃなかったか
System.Environment+SpecialFolder みたいな
[TResponse]はジェネリックの型引数
`1は型引数を1つ取るって意味
System.Environment+SpecialFolder みたいな
[TResponse]はジェネリックの型引数
`1は型引数を1つ取るって意味
883881
2021/01/10(日) 21:15:33.29ID:3v4yt86U884デフォルトの名無しさん
2021/01/12(火) 16:53:39.85ID:0UGYDHaB pythonに飲み込まれるってマジ?
885デフォルトの名無しさん
2021/01/12(火) 18:35:28.45ID:U7HouJQi pythonが吐血しちゃいますよ
886デフォルトの名無しさん
2021/01/13(水) 11:04:50.14ID:u12/DUzm >>884
え?Pythonから.NET Framework扱えるようになるの?
え?Pythonから.NET Framework扱えるようになるの?
887デフォルトの名無しさん
2021/01/13(水) 12:04:34.41ID:JJnXAm01 知らんけど今はまだ使えないの?
888デフォルトの名無しさん
2021/01/13(水) 12:35:42.75ID:u12/DUzm ironpythonなら
889デフォルトの名無しさん
2021/01/16(土) 08:03:53.11ID:4aouipyb890デフォルトの名無しさん
2021/01/18(月) 22:22:09.29ID:6Ncg8pZo 【D:\】の全てのフォルダやファイルに対して、作成日時や最終アクセス日時などを設定したいのですが、
PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" }
ではエラーが出ます。
何がいけないのでしょうか?
PS D:\> Get-ChildItem -Path "D:\" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2021/01/01 00:00:00" }
ではエラーが出ます。
何がいけないのでしょうか?
891デフォルトの名無しさん
2021/01/18(月) 22:59:36.90ID:Pb59NPOt 例えば特定の一つのファイルやフォルダなら上手く行くとか
パイプを分解してどこでエラーになってるのかを突き止めるとか
丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
パイプを分解してどこでエラーになってるのかを突き止めるとか
丸投げするにしてもエラーメッセージ位は出してあげると答える人も喜ぶと思いますよ
892デフォルトの名無しさん
2021/01/19(火) 02:44:39.14ID:m3MeBQ6p 1.D:\が存在していない
2.D:\へのアクセス権がない
3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる
どれかな?
Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは
フォルダへのアクセス時にエクスプローラー開いてると
”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても)
変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
2.D:\へのアクセス権がない
3.D:\にあるファイルに読み取り専用属性が設定されてるものが混ざってる
どれかな?
Where-Object { $_ -is [System.IO.FileInfo] }抜き、ファイルに限定しないで実行したときは
フォルダへのアクセス時にエクスプローラー開いてると
”別のプロセスで使用されているためアクセスできません”となった(たとえ操作対象のフォルダを開いていなくても)
変更された日時を確認するためにエクスプローラー開いたまま実行してたりする?
893デフォルトの名無しさん
2021/01/19(火) 21:02:07.64ID:qrtgnbPs # set the target folder path
$targetFolder = 'I:\';
# get all files including files in sub folders
$itemList = Get-ChildItem $targetFolder -Recurse;
foreach($item in $itemList){
$item.CreationTime = '2020/12/21 00:00:00'
}
なスクリプトで実行したらエラーなく出来ました。
お騒がせしてすみませんでした。
$targetFolder = 'I:\';
# get all files including files in sub folders
$itemList = Get-ChildItem $targetFolder -Recurse;
foreach($item in $itemList){
$item.CreationTime = '2020/12/21 00:00:00'
}
なスクリプトで実行したらエラーなく出来ました。
お騒がせしてすみませんでした。
894デフォルトの名無しさん
2021/01/19(火) 23:49:36.84ID:XQEllFmW895デフォルトの名無しさん
2021/01/20(水) 10:29:40.54ID:sOzWFlEJ エクスプローラーとか、バックグラウンドで動いているシステムなどが、
フォルダをロックしていたら、失敗する
だから、タイミングによって、成功したり失敗したりする
読み取りロックは、読み取り同士では共有できるけど、
書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
フォルダをロックしていたら、失敗する
だから、タイミングによって、成功したり失敗したりする
読み取りロックは、読み取り同士では共有できるけど、
書き込みロックは、その他すべてと共有できないから、失敗する確率が高い
896デフォルトの名無しさん
2021/01/25(月) 21:14:40.94ID:PMAucoEc897デフォルトの名無しさん
2021/01/27(水) 19:49:56.64ID:BJM8Dy5y テキストファイルに設定できるストリームって何に使うんすか?
898デフォルトの名無しさん
2021/01/27(水) 21:16:07.96ID:lPCF/h8Q テキストストリームの事なのかNTFSの代替データストリームの事なのか
どちらなんだ
どちらなんだ
899デフォルトの名無しさん
2021/01/27(水) 22:11:57.22ID:qq3K45Kg 代替データストリームはテキストに限った話じゃないのでは
900デフォルトの名無しさん
2021/01/27(水) 22:45:50.85ID:9akTDBYB テキストに限った話ではないけど、質問者が正確に把握してるともまた限らない
レス数が900を超えています。1000を超えると表示できなくなるよ。
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 [ぐれ★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★3 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 中国高官と話す外務省局長の表情、やばい ★2 [175344491]
- 高市早苗政権「経済的威圧をしてくる国はリスク」 トランプぴょんぴょん政権さん…… [175344491]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 偏差値35大臣「すぐに経済的威圧するところへの依存はリスク」 [834922174]
- 【高市朗報】『劇場版「鬼滅の刃」無限城篇』、ギリのタイミングで中国上映公開し5日間で4億元(87億円)突破!!! [126042664]
- 【朗報】高市、中国からの日本行き空路49万件キャンセルを達成🤩オーバーツーリズム対策の手腕が光る [359965264]
