PowerShell -Part 4

■ このスレッドは過去ログ倉庫に格納されています
2020/01/01(水) 16:08:31.66ID:4oQ1Kxot
前スレ
PowerShell -Part 3
https://mevius.5ch.net/test/read.cgi/tech/1539074808/

次スレは>>980が立ててね!!
2020/12/03(木) 20:44:02.20ID:gj1mOZdT
>>775
数字以外が出てきたらそこで区切ることで配列にする
配列要素のうち空文字列であるものを除外
配列をまるごとファイルにリダイレクトして改行された出力結果を得る

$utltrimfile = $(Get-Content (テキストファイルのパス)) -split '\D' | ?{$_ -ne '' }
$utltrimfile > (テキストファイルのパス)
777726
垢版 |
2020/12/03(木) 21:29:21.46ID:AP2X4U04
出来ました! ありがとうございました!
778デフォルトの名無しさん
垢版 |
2020/12/07(月) 00:00:56.83ID:8Ddysj0U
PowerShellにinterfaceありますか? 空のクラス定義するしかないですか?
2020/12/07(月) 00:09:24.05ID:rAKRPC/o
■Powershellコマンドを実行する
PS C:\Users\hoge> Get-NetIPConfiguration

InterfaceAlias : Wi-Fi
InterfaceIndex : 10
InterfaceDescription : TP-Link Wireless USB Adapter
NetProfile.Name : Buffalo-A-428D
(以下略)
なんかたくさん出る


■(Powershellコマンド).列の名前 を実行する
PS C:\Users\hoge> > (Get-NetIPConfiguration).NetProfile.Name
Buffalo-A-428D

.列の名前で指定したものしか出ない。


こういう(コマンド).列名っていうので、出力を絞る方法に名前ってありませんか?
2020/12/07(月) 00:52:35.54ID:fL+10lW/
grep
2020/12/07(月) 00:55:50.26ID://YuCj5S
interfaceってたぶんJava的な意味でのやつか
782デフォルトの名無しさん
垢版 |
2020/12/07(月) 00:57:24.19ID:8Ddysj0U
>>781
そうなのよ
2020/12/07(月) 01:07:36.68ID:nVLltyNc
:  
だね
2020/12/07(月) 07:14:39.74ID:Zb+BuNXc
>>779
. はプロパティ逆参照演算子だよ
Property dereference operator
2020/12/07(月) 07:24:15.67ID:Zb+BuNXc
. で出力を絞る方法、正確には対象を選ぶ方法は、一般的にはプロパティアクセスが該当するかな
2020/12/07(月) 08:49:51.37ID:Qq2AGx/W
メンバーアクセス演算子 .
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.core/about/about_operators#member-access-operator-

オブジェクトのプロパティおよびメソッドにアクセスします。 メンバー名は式にすることができます。

$myProcess.peakWorkingSet
(Get-Process PowerShell).kill()
'OS', 'Platform' | Foreach-Object { $PSVersionTable. $_ }
2020/12/07(月) 15:48:31.93ID:5uzreY+I
copy-itemでディレクトリを指定して、内部のファイルがパス260文字以上でエラーを出すとき、そのパスを取得する方法はあります?
2020/12/07(月) 16:04:01.41ID:8iO4bdx+
>>787
Set-ItemProperty "Registry::HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathEnabled -Value 1
2020/12/07(月) 18:20:51.52ID:5uzreY+I
>>788
ありがとう
ただそのやり方はwin10にしか出来ないようで、win8.1ではLongPathEnabledは存在しないようです
ググってもLongPathEnabledのwin8.1版は見つからないもので……
2020/12/07(月) 22:33:03.33ID:wvARFKZP
>>789
単に制限回避したいなら \\?\ 使えば良いんじゃないかな
https://stackoverflow.com/a/53099257
https://superuser.com/a/760601

そうじゃなくて、260文字以上のパスを探したいなら、そういうツールがいくつかあるよ
https://sourceforge.net/projects/tlpd/
2020/12/07(月) 23:37:26.80ID:5uzreY+I
>>790
試してみます
ありがとなす
2020/12/08(火) 15:51:45.96ID:CDSpQQd3
外部コマンド | PowerShellの関数って風にパイプでつないで処理するとき
出力側が終わるまで一旦全部バッファリングしてから、ようやくPowerShellに処理が移る感じになるんですが
並列で処理するようにするにはどうすればいいでしょうか?
2020/12/10(木) 21:12:35.73ID:6BQNLUy5
#1個めループ
for($i=0; $i -le 10; $i++) {

$hoge="ikkaime_"
Write-Output $hoge$i

}

#2個めループ
for($i=0; $i -le 10; $i++) {

$hoge="nikaime_"
Write-Output $hoge$i

}


これを1個のforにまとめる素敵なアイデアございませんでしょうか。

何がしたいかというと、1個めのループ(10回)が終わったら、$hogeをniakieme_にして、
もう10回ループさせて終わるようにしたいです。



  
2020/12/10(木) 21:25:03.78ID:3lwwmG32
$hoge="ikkaime_"

for($i=0; $i -le 20; $i++) {

if ($i -eq 10) {
$hoge="nikaime_"
}

Write-Output $hoge$i

}
795デフォルトの名無しさん
垢版 |
2020/12/10(木) 21:59:45.86ID:/iej8cKu
foreach ($hoge in 'ikkaime_', 'nikaime_') {
for ($i = 0; $i -lt 10; $i++) {
Write-Output $hoge$i
}
}
2020/12/10(木) 23:27:25.70ID:uqnVDABe
$ikkaime = @()
$nikaime = @()

for($i = 0; $i -le 10; $i++) {
$ikkaime += "ikkaime_$i"
$nikaime += "nikaime_$i"
}

Write-Output $ikkaime
Write-Output $nikaime
2020/12/11(金) 03:49:50.69ID:bpjP0VBu
"ikkaime_","nikaime_"|%{$hoge=$_;0..9|%{$hoge+$_}}
798793
垢版 |
2020/12/11(金) 23:44:28.19ID:YtFbF7ro
ありがとうございました。

書き方がいくつもあるんですね。
非常に脅されたました。

ありがとうございます。

ちなみに、>>795
で処理しました。
2020/12/11(金) 23:55:43.98ID:BGcESmPN
インクリメントのループはこう書いたほうがスッキリする
foreach ($i in 0..9) {
2020/12/13(日) 00:05:08.43ID:w0iK+TRN
>>797
こういうパイプがネストしてるのに違和感あるんだけど
多少効率悪くてもパイプ1本にできないかな
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_"+$_}}
}
}
2020/12/13(日) 07:32:06.23ID:5EW0FlRD
パイプは繋げてナンボ
UNIX文化からの流れで、シンプルなコマンド群からの組み合わせの可能性は無限大
長いパイプラインが違和感?
いやロシアからウクライナを経由してドイツまで延びてもいい…!ゴルビーもそう言ってるよ
2020/12/13(日) 08:18:38.20ID:6TpS+NE1
0..9 | % { "ikkaime_$_"; "nikaime_$_" } | sort
2020/12/13(日) 08:21:28.01ID:7zDtZqQK
function hoge($fuga) {
0..9 | ForEach-Object {Write-Output "$fuga$_"}
}
hoge 'ikkaime'
hoge 'nikaime'
2020/12/13(日) 08:23:17.62ID:7zDtZqQK
>>800
"ikkaime_","nikaime_" | %{$hoge=$_;0..9} | %{$hoge+$_}
2020/12/13(日) 10:24:56.32ID:aJyBOeQT
>>802
長いパイプじゃなく、パイプライン処理の名にそぐわない、
行って帰ってくるようなネストされてるのが気持ち悪い
2020/12/13(日) 20:15:51.92ID:w0iK+TRN
>>803 >>805
そうそうこういうのがいいね
2020/12/13(日) 22:17:37.96ID:aJyBOeQT
ゴルビーのパイプライン大作戦にだって行って帰ってくるようなパイプは無いだろ
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

}
810デフォルトの名無しさん
垢版 |
2020/12/14(月) 14:58:28.73ID:0uVb17k3
$mynameis = { "$watashi$fname$lname" }
$watashi = "私は"
$fname = "佐藤"
foreach ($lname in "一郎","二郎","三郎"){
#名を名乗る
Write-Output (mynameis)
}
811デフォルトの名無しさん
垢版 |
2020/12/14(月) 15:01:37.07ID:0uVb17k3
>Write-Output (mynameis)
Write-Output (&$mynameis)

こうかも、PowerShell難しすぎ
2020/12/14(月) 21:21:03.56ID:vj7TAroN
foreachはスコープ作らなかったと思うけど
何が問題なの?
2020/12/14(月) 21:31:50.90ID:vj7TAroN
ごめんようやく理解した

最初にNew-Variableなり空文字で宣言するだけじゃ納得いかんのかな
変数が自動で書き変わるのは正直気持ち悪い
2020/12/14(月) 21:43:34.54ID:MBsazS7x
$watashi = "私は"
$fname = "佐藤"
$mynameis = "$watashi$fname{0}"

foreach ($lname in "一郎","二郎","三郎"){

Write-Output ($mynameis -f $lname)

}
2020/12/14(月) 22:30:25.12ID:LFps+YXF
モダンな言語を使って書くレガシープログラミングだね
先頭宣言教から改宗してもらうのが一番丸く収まるとか言ったらダメなんだろうな
2020/12/14(月) 22:33:35.98ID:/tZ0PSGV
そこは鈴木にしようぜ
2020/12/14(月) 23:10:29.87ID:EXeKWskh
できないことはないってだけで、やめたほうがいい
他の人がコードを読む時にとても困惑させるし
半年後に自分が読んでも理解に苦しむかもしれない
2020/12/14(月) 23:57:40.98ID:CBAGo1je
意外とPerl的なスパゲッティの罠がある言語なのね
2020/12/15(火) 03:55:48.18ID:eKJAj5sp
>>810みたいにスクリプトブロックで評価順序制御するのは別におかしくないと思うけど
2020/12/15(火) 07:38:16.79ID:T2M/UCWI
変数宣言を冒頭に集めるという、昔の言語ではルールだったけどデメリットの方が多いとして廃れた風習
その実現にスクリプトブロックを多用するのは可読性を落とすからやめとけという話じゃないかな

古典言語には存在しなかった文字列補間は、宣言したスコープで即時解決されるものだから冒頭部でリテラルを宣言する風習と相性が悪い
記法が似ていて混同したのだろうけど、質問者が暗に期待していたであろうフォーマットパターン文字列としてはPowershellでは -f 演算子が用意されているのでそれを使えばいい
2020/12/15(火) 07:38:27.49ID:T2M/UCWI
この話をPowershellの罠とされてしまうのはさすがにかわいそう
2020/12/15(火) 13:15:17.29ID:HMGpB1Xp
$watashi = "私は"
$fname = "佐藤"
$lname = "一郎","二郎","三郎"
$lname.ForEach{Write-Output "$watashi$fname$_"}
2020/12/15(火) 13:34:51.98ID:/uFuBiiy
"私は"と"佐藤"を分ける意味がない
気持ちは分からなくもないけど
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 "〜 みたいに出来ればワンライナーで
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
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
2020/12/16(水) 20:03:25.26ID:kYgyiRJ/
(Invoke-WebRequest https://example.com/test.txt).Content | Out-File -Encoding default test.txt
2020/12/16(水) 20:37:34.73ID:VCJoAcsJ
>>827
出来ました!ありがとうございます!
なんかオリジナル(UTF-8 LF)に比べ変換した(Shift-JIS CRLF)では末尾に改行コード1つ余分に追加されてしまいますが。。
バッチで読み直して再保存すれば行けそうです
やりたいことが可能になりました。感謝!
2020/12/16(水) 21:11:10.07ID:CXRufgbD
>末尾に改行コード1つ余分に追加されてしまいます
こういうの気持ち悪い!
誰か助けてあげて!
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
2020/12/16(水) 23:38:36.87ID:VCJoAcsJ
>>829
ありがとうございます。私もモヤモヤしてたので調べて報告するつもりでした

>>830
ありがとうございます
-NoNewline で末尾改行追加されませんがLFのままになってしまうようです
たぶんLFをCRLFにreplaceしてからOut-File -NoNewline で行けそうかも、というところまで来ていたのですが、、
置換のコマンドレットが分からず苦戦しています
2020/12/17(木) 04:50:30.78ID:aeRfyZfG
>>831
.NETのString.Replace()
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とかも試してみたのですが基礎的な書き方も知らず当てずっぽうではダメなようです
基礎的な事から覚えないとちょっと自分には無理かもです^^;
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
2020/12/17(木) 11:14:10.52ID:aoellUFv
SurfacePro8の、一応待たれてはいるがあまり期待されてない感は異常
2020/12/17(木) 14:29:13.42ID:hxo0ZZXM
>>833-834
"`n", "`r`n" じゃねーの?
2020/12/17(木) 17:50:06.55ID:P27ySftq
>>836
ヒントありがとうございます
最終的に以下で出来ました
ren jane2ch.brd jane2ch.brd.bak &&copy 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"
アドバイス下さった方皆ありがとう
2020/12/18(金) 21:36:03.86ID:NKeMhQjy
Invoke-WebRequestはaliasで短くできるよ
(Get-Alias -Definition Invoke-WebRequest).Name
curl
iwr
wget
Out-Fileはaliasが無い
2021/01/01(金) 16:52:16.58ID:jgut+Hkv
関数とクラスメソッドでreturnまわりの振舞い全然違うのかよ
ほんまクソやな
2021/01/01(金) 17:32:29.13ID:iwrlPpxO
自分が言語を知らないだけなのに言語を叩くやつは技術力があれだって書込みをLinuxスレで見た
謙虚になって勉強もせずに自分の知ってる言語に固執するらしい
2021/01/01(金) 18:39:57.15ID:K4bi2CUk
詭弁だね
2021/01/02(土) 12:59:00.83ID:6NGWiCza
そんなウンコになるほど振る舞い違ったっけ
2021/01/02(土) 14:38:10.21ID:SsQKjWAu
関数のreturnは単に関数を抜けるだけ
出力はストリームを使う
クラスのメソッドはreturn文でのみ値を返す
多くの言語でよくみられるやつ
Write-Outputしても無視される
844デフォルトの名無しさん
垢版 |
2021/01/02(土) 14:45:10.44ID:o3T1iAcx
変数のスコープも違うよねー

function f() {
 echo $a
}

$a = "test"
f

関数はこれが気持ち悪すぎてメソッドしか使わなくなった
2021/01/03(日) 01:23:46.88ID:RCSnKIYE
>>843,844
なるほどありが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

以上、よろしくおねがいします。
2021/01/03(日) 04:03:05.06ID:leX2V3Ud
クラスごとにファイル分けてドットソースで読み込んで
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と表示されてほしい
2021/01/03(日) 04:29:20.63ID:ORVbOLX2
ごめん >>846 宛ね
>>847
まじですか
でもPSの運用的にクラス定義で複数ファイルに分けるとかありえないわ
コンソールからだと丸ごとコピペじゃなくて定義を1個ずつコピペするとエラーにならないし
なんなのかね
2021/01/03(日) 08:40:29.46ID:MW0NgZmT
PowerShellのclassってどの段階で解釈されるんだろう
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と表示されてほしい
853851
垢版 |
2021/01/03(日) 18:34:59.83ID:n1qZMfJK
ファイルA の中で、ファイルB を読み込むと、
依存ファイルであるファイルBが、先に実行される事が確定するのだろう

一方、同じファイルに、複数のクラスを書くと、依存関係が分からないのだろう
2021/01/07(木) 01:13:26.70ID:MvQgNxU+
すいません、Powershellって、変数が空だった場合の
デフォルト値を設定する方法ってありますか?

bashでいうところの、
${hoge:-fuga}

って方法です。
2021/01/07(木) 02:45:37.83ID:CsAW39lY
ねーよ
VBSで言うIsEmpty相当すらない
せいぜい$nullかどうか調べてちっ仕方ねーなってやるしかない
2021/01/07(木) 08:03:25.19ID:1A0NtNS9
($nullでなく)空って状態はないと思うから、しいてやるならGet-Variableで変数が存在するか調べるくらいかね
2021/01/07(木) 08:17:46.65ID:7KuEq4Kq
>>854
PowerShell 7の??演算子はいかがでしょうか
2021/01/07(木) 08:28:41.55ID:6ewH2FY0
>>854
変数が空の定義次第だけど$nullでよくてPowerShell 7以降なら$hoge ?? 'fuga' でいける
空の定義に空文字を含むとかPowerShell 6以下とかなら素直に if([string]::IsNullOrEmpty($hoge)){ 'fuga' } else { $hoge } とやればいい
2021/01/07(木) 08:34:36.49ID:6ewH2FY0
>>856
変数の存在確認ならTest-Path Variable:hogeの方が楽だと思う
2021/01/07(木) 13:21:05.91ID:ht1NLYQc
7って便利なんだな
2021/01/07(木) 21:21:38.47ID:R2rezzh3
>>854
>${hoge:-fuga

サザエさんかよw
2021/01/07(木) 21:59:07.15ID:o0FdcV6b
えっ?
2021/01/07(木) 22:43:44.97ID:IvTx7xdj
foo,barも知らない人でしょ
864デフォルトの名無しさん
垢版 |
2021/01/07(木) 22:50:20.03ID:iqGL0Mlk
ほげふがの語源ってサザエさんだったの!? マジで!
2021/01/08(金) 00:22:33.24ID:s1r0Khta
来週もまた観てくださいね
$hong -or $fouf
2021/01/08(金) 10:41:54.36ID:zUQduDYO
逆にメタ変数でhoge、fugaってそこまでマイナーか?
2021/01/08(金) 11:27:10.91ID:3ONG9Jp/
>>866
誰もマイナーとか言ってない
2021/01/08(金) 11:53:36.70ID:zUQduDYO
>>867
そうか、それはすまなかった。
早とちりでございました。
お詫び申し上げます。
869デフォルトの名無しさん
垢版 |
2021/01/08(金) 12:25:26.48ID:eXVg8SYp
>>868
詫びろとは言ってない

>>867
誰かがマイナーと言ったとは言ってない

>>865
今週観たとは言ってない

>>861
ご指摘にはあたらない
870デフォルトの名無しさん
垢版 |
2021/01/08(金) 12:25:53.52ID:eXVg8SYp
これ万能論法ですな
2021/01/08(金) 12:36:55.29ID:2lGGPyYq
そう思ってるのは言ってる本人だけだろう
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

この場合、マル括弧がどんな働きをして
結果が変わってしまうのか教えてください。
2021/01/09(土) 01:03:45.10ID:KQEfE/JM
ちなみにこうしても

$result=Get-NetConnectionProfile -InterfaceAlias Wi-Fi
エラーメッセージ
$?
False


$result=(Get-NetConnectionProfile -InterfaceAlias Wi-Fi)
エラーメッセージ
$?
True

という状態でした。
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にすれば解決するかと
2021/01/09(土) 09:13:27.43ID:iGxXP/Ic
5.1はメンテしないってことか?
OSにデフォで入ってるバージョンなんだから直せよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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