X



Windows PowerShell Part5 [無断転載禁止]©2ch.net
0001名無し~3.EXE
垢版 |
2016/09/18(日) 14:06:24.15ID:aFEI7ykR
Windows PowerShell
http://technet.microsoft.com/ja-JP/scriptcenter/dd742419.aspx
オンラインヘルプ
https://technet.microsoft.com/ja-jp/library/bb978526.aspx

■パッケージのダウンロード
PowerShell 3.0 (Windows 7以降)
http://www.microsoft.com/en-us/download/details.aspx?id=34595

PowerShell 2.0 (Vista以前は3.0非対応)
http://support.microsoft.com/?kbid=926140

■参考
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
http://oka326.blogspot.com/search/label/PowerShell
http://d.hatena.ne.jp/newpops/
http://blogs.msdn.com/PowerShell

■過去スレ
Windows PowerShell Part4
http://echo.2ch.net/test/read.cgi/win/1359719778/
0101名無し~3.EXE
垢版 |
2017/02/05(日) 22:32:07.68ID:IblkV01m
自身(powershell)の優先度を下げちまえば良いんでね
0103名無し~3.EXE
垢版 |
2017/02/06(月) 20:24:24.83ID:ld7UKPot
ちょっとググったけど CreateProcess( ) を直接呼び出す以外の解決策は見つからなかった
0104名無し~3.EXE
垢版 |
2017/02/06(月) 21:42:11.52ID:fPVU2Lh4
ちょっと今試せる環境がないけど、Startコマンドを/LOWつけて実行するのは
なんか問題起きるっけ?
0105名無し~3.EXE
垢版 |
2017/02/10(金) 17:10:57.83ID:7rsuGpnu
二重引用符の中で変数に格納したオブジェクトのプロパティを
展開する方法を誰か教えてくださいませんか

例えば
test.txtがあるディレクトリで下を実行
> $test = Get-ChildItem -Filter "test.txt"

$test.FullNameで絶対パスが見れる状態になると思うんだけど
Write-Hostで文字列の中に、このフルパスを埋め込もうとすると
上手くいきません

Write-Host "xxxx$test.FullNameyyyy"
とやると
xxxx$test.txt.FullNameyyyy
と表示されてしまいます
0108名無し~3.EXE
垢版 |
2017/02/10(金) 22:43:57.14ID:WTLOMM7d
>>105
> Write-Host "xxxx$($test.FullName)yyyy"

$( ) の中には文字列を返す式も書けるから結構便利
0109名無し~3.EXE
垢版 |
2017/02/11(土) 20:32:06.26ID:DPGFySO4
>>107,108
なるほど!
$()で囲めばいいんですね
ありがとうございました
0110名無し~3.EXE
垢版 |
2017/02/21(火) 22:54:02.20ID:F7HMkyeb
a.ps1とb.ps1という2つのスクリプトファイルがあって、b.ps1は1.pa1から
ドット演算子で呼び出しています。

----- a.ps1 ------

function main
{
. \b.ps1
}

こんな感じです
でもこれだとa.ps1で(mainで)定義した変数は全部b.ps1からも丸見えというのを
今日勉強しました。b.ps1から見えないようにするには変数をprivateで定義して

[String]$private:foo

こうすればいいというのは分かったんですがすべての変数にいちいちprivateを
つけるのはさすがに面倒というか億劫です

スクリプトファイルの先頭で "option private" みたいな感じで宣言したら
暗黙のデフォルトがlocalじゃなくてprivateになる、みたいな技はありません
でぢょうか?
0111名無し~3.EXE
垢版 |
2017/02/21(火) 23:23:58.64ID:gV4WNByK
例えば、変数の先頭にv_を付けるルールにしてスクリプトの最後で
Set-Variable v_* -Visibility private
てやるとか
0112名無し~3.EXE
垢版 |
2017/02/22(水) 23:42:35.27ID:n8ZG8t0H
別のファイルをインクルードするときにドットにした場合とアンドにした場合の
違いが分かりません。ドットにした場合は分かるんですが(単純にその場所に
展開されるだけ、という認識です)アンドにした場合は何が違うんでしょうか

MSDNの説明を見ても「現在のスコープを引き継ぎません」というなんともよく
分からない説明しか見つかりませんでした
0113名無し~3.EXE
垢版 |
2017/02/23(木) 07:32:02.44ID:x4/Mux3A
いずれもインクルードではなく、別のスクリプトの実行
通常は&も.も要らない
もしパスを変数や文字列に入れた場合、パスが入っているので実行してくれとPowershellに伝えるために書くのが&演算子
&を書かないと文字列が画面出力されるだけで実行してもらえないから書くだけ
ドットソース演算子は、呼び出すスクリプトのスコープを拡大する記法
その意図がないなら使う必要ない
スコープへの具体的な影響は次を読めばわかるはず
https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner05.aspx
これでわからないならプログラミング一般のスコープについて学ぶべき

ドットソース演算子がインクルードでないことはこの辺読めばわかると思う
http://mtgpowershell.blogspot.jp/2010/11/blog-post_28.html?m=1
0114名無し~3.EXE
垢版 |
2017/02/23(木) 11:07:27.89ID:BfJWJa/3
>>113
> ドットソース演算子は、呼び出すスクリプトのスコープを拡大する記法
訳のわからん説明するなよ w
ドットソース記法は新しいスコープを作らないだけだぞ
0115名無し~3.EXE
垢版 |
2017/02/23(木) 13:49:20.44ID:U9YyrTO+
>>113
黙っていた方がマシなレベルの酷い説明だなw
0116名無し~3.EXE
垢版 |
2017/03/04(土) 12:52:26.51ID:XhJPawch
最近C#を15年ぶりくらいに触りはじめたんだけど、
LINQのメソッド構文ってPowerShellのパイプラインみたいで面白いな。
どっちかが真似たのかな?それともループの直列化が時代の流れだったのか
0118名無し~3.EXE
垢版 |
2017/03/05(日) 12:33:38.08ID:rVLkagwG
最近になって必要にかられてパワーシェルしてるんですが、C#オブジェクトを
生成してC#と同じように使えるのでいろいろ出来てなかなか楽しいです

ところで漠然と質問で申し訳ないんですが、C#ネーティブで書いたバッチ処理に
比べてパワーシェルで「出来ない事」って何があるんでしょうか
無論どっちも.NETフレームワークは同じバージョンのものを使うという前提です

グラッヒックスやサウンド、ダイレクトXを使うようなアプリではなくいわゆる
業務用のバッチ(ファイルを読み書きしたりDBを読み書きしたり、といった)
ならパワーシェルに出来ない事はないようにも思えるんですが
MFCのメソッド呼ぶのに構造体渡しが必要な場合にパワーシェルだと構造体が
定義出来ないから呼べない位ですか?
0119名無し~3.EXE
垢版 |
2017/03/05(日) 14:22:48.88ID:OacyyHV9
win32は本来管轄外だしSystem.Net.WebSocketsなんかも厳しいかな

言語仕様上出来ない設計は結構あると思うけど、
add-typeで諸所のコード資産を統合的に活用出来るのがPSの本旨だと思う
0120名無し~3.EXE
垢版 |
2017/04/11(火) 04:04:29.63ID:HYkG1Dlo
>>116
PowerShellはgst-launch-1.0(GStreamer)がモロそんな感じだったよ
DISM /Online /Get-ProvisionedAppxPackages | select-string Packagename
みたいなのやん

gst-launch-1.0のは
gst-launch-1.0 filesrc location=music.ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! osssink
で、一番似てる気がしたのはコレ

WinAPI呼ぶときの魔法の文言が長すぎて鬱りそう、なんか短いのないのアレ orz
0121名無し~3.EXE
垢版 |
2017/04/19(水) 02:01:07.19ID:YJQ97aeg
次スレからはソフトウェア板に移動しない?
MacとLinuxに対応したので
0122名無し~3.EXE
垢版 |
2017/04/19(水) 07:21:29.68ID:XbPwupdH
クリエにアップしたので、スタートボタン右クリックのメニューに入るのが
コマプロからPowerShellに変わったわけだが、エラーで開かないw
クラシック・シェル入れてたせいだろうな
0123名無し~3.EXE
垢版 |
2017/04/20(木) 22:18:07.02ID:D7ri9Iiw
すみません、どなたか教えてください。

管理者権限でpowershell実行
write-eventlog -logname 'Microsoft-Windows-TaskScheduler/Operational'
(-Source -entrytype -eventID -messageも指定)
でイベントログに出力したいのですが、
ログ名 "Microsoft-Windows-TaskScheduler/Operational" はコンピュータ localhostに存在しません
とエラーが出てしまいます。
Get-WinEvent -logname 'Microsoft-Windows-TaskScheduler/Operational'
ではちゃんと出力するので、ログ名を間違えていることはないと思うのですが・・・
原因を教えてくれませんでしょうか?
0124名無し~3.EXE
垢版 |
2017/04/22(土) 18:54:20.03ID:eMmE0Ns/
WMIはWindows固有だからなあ
PowerShellの文法的な話なら、プログラミング板が妥当では
0125名無し~3.EXE
垢版 |
2017/05/06(土) 03:50:31.48ID:OUvA+b29
これからWindowsCUIコマンド関連勉強していきたいんだけど
PowerShellの前にコマンドプロンプトも勉強した方がいい?
それとももう必要ない?
0126名無し~3.EXE
垢版 |
2017/05/06(土) 05:18:23.97ID:nYExUkjv
というかコマンドプロンプトとかいちいち時間割いて勉強するようなもんじゃない
0127名無し~3.EXE
垢版 |
2017/05/06(土) 08:53:01.80ID:0+z+Gap+
>>125
> PowerShellの前にコマンドプロンプトも勉強した方がいい?
要らない
単にコマンドを連続して流すだけならずらずら書くだけだし
ちょっと凝ったことしようとしたらバッドノウハウ使いまくりになる
PowerShell も色々癖が強いけど後発だけに思想は遥かにまとも
0128名無し~3.EXE
垢版 |
2017/05/06(土) 12:24:42.60ID:7sOAYNki
Powershellを使ってWindows7マシンからWindows10マシンを遠隔シャットダウンしようと思っています。

Windows7マシン名: PC1
Windows10マシン名: PC2

どちらのマシンにも同じユーザー名・パスワードの管理者権限のユーザーが作ってあります。

Windows7マシンからPowershellを管理者権限で起動し次のコマンドを打ってみました。

> Stop-Computer -ComputerName PC2 -Credential (ユーザー名)

すると以下の様なエラーが返ってきてシャットダウンできませんでした。

Stop-Computer : アクセスが拒否されました。 (HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))
発生場所 行:1 文字:14
+ Stop-Computer <<<< -ComputerName PC2 -Credential (ユーザー名)
+ CategoryInfo : NotSpecified: (:) [Stop-Computer]、UnauthorizedAccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.StopComputerCommand

どちらのマシンもUACはデフォの状態から変えていませんし、
セキュリティのことを考えると変えたくもありません。
なにかいい解決方法は無いでしょうか?
0130名無し~3.EXE
垢版 |
2017/05/06(土) 20:49:27.85ID:2p9xnQ6e
>>125
オレも必要無いに一票
2つ勉強したいってならbashに一票
覚えた頃にBoWこなれてきてるかも
0131名無し~3.EXE
垢版 |
2017/05/07(日) 11:17:32.20ID:ahbtq0bI
>>129
挑戦してみましたがやはりエラーが返ってきました

Stop-Computer : RPC サーバーを利用できません。 (HRESULT からの例外: 0x800706BA)
発生場所 行:1 文字:14
+ Stop-Computer <<<< -ComputerName PC2 -Credential (ユーザー名)
+ CategoryInfo : InvalidOperation: (PC2:String) [Stop-Computer]、COMException
+ FullyQualifiedErrorId : StopComputerException,Microsoft.PowerShell.Commands.StopComputerCommand

ただエラーの内容がちょっと変わった気はします
0132名無し~3.EXE
垢版 |
2017/05/07(日) 14:16:18.70ID:Vey7mJwy
そのエラーコードならファイアウォール設定でWMI RPCを解放すれば行けそう
0133名無し~3.EXE
垢版 |
2017/05/07(日) 19:12:52.74ID:8QqaJEcs
>>125
コマンドプロンプトなんか使ってるうちに覚えるもんだろ。
こんなところで聞くようなモノではない。
0134名無し~3.EXE
垢版 |
2017/05/07(日) 22:54:51.28ID:ahbtq0bI
>>132
PC2のファイアーウォールを無効にしてみましたが結果は同じでした・・・
うーん、難しい・・・
0135名無し~3.EXE
垢版 |
2017/05/08(月) 19:33:25.10ID:i5Njb2+p
>>128
ユーザー名の前に コンピュータ名\つけてる?
つまり、pc2\ユーザー名
0136名無し~3.EXE
垢版 |
2017/05/09(火) 10:11:17.07ID:UEW2JH/V
>>135
はい、ユーザー認証のダイアログが表示される方式もチャレンジして
そこでコンピューター名付のユーザ名も試しましたがダメでした・・・
0137名無し~3.EXE
垢版 |
2017/05/09(火) 11:41:59.83ID:BFgOlLU8
shutdown.exeでは出来てるの?
0138名無し~3.EXE
垢版 |
2017/05/09(火) 12:56:53.27ID:UEW2JH/V
shutdownコマンドによるリモートシャットダウンはまだ試したことがありませんでした
一度チャレンジしてみようと思います

余談ですがリモートシャットダウンさせるさい、リモートレジストリ制御はオンにする
必要はありますか?Windows10ではデフォルトでオフにされているようですが。
0139名無し~3.EXE
垢版 |
2017/05/09(火) 13:12:40.95ID:4ctJrZXO
0x800706BAで検索すると割と多くの原因が考えられるみたい
互いのPCで関連サービスが全部起動してるかとか、パッチが当たってるかとか
0140名無し~3.EXE
垢版 |
2017/05/11(木) 12:53:23.28ID:PofOtdpB
てす
0141名無し~3.EXE
垢版 |
2017/05/11(木) 12:54:28.09ID:PofOtdpB
Function set-oepic{
[CmdletBinding()]
param(
[Parameter(Mandatory=$True,
ValueFromPipeline=$True)]
[string]$picpath
)

PROCESS {
$bin = Get-Content $picpath -Encoding Byte
$base64 = [System.Convert]::ToBase64String( $bin )
$pics =@"
var canvas = document.getElementsByClassName( "wPaint-canvas" );
var ctx = canvas[0].getContext("2d");
ctx.fillStyle = "white";
ctx.fillRect(0, 0, 500, 250);
var img = new Image();
img.onload = function() {
ctx.drawImage(img, 0, 0);
}
img.src = "data:image/png;base64,$base64";

"@
Set-Clipboard -Value $pics

}
END {}
}
0142名無し~3.EXE
垢版 |
2017/05/11(木) 13:01:48.02ID:PofOtdpB
>>141>>140の貼り付けスクリプトねたぶんクロム系で動くはず
説明する必要はないと思うが 引数に500X250の128k以下の画像のファイルのパスを入れて
実行するとクリップボードにソースが貼り付けられるから

今度はスレッドのお絵描きロードを押してフォームを出した後でf12でコンソールをだして張り付けて一回リターンを押せば
フォームに画像が貼り付けられてると思う
個人的にアクセス規制見たいの食らってるのか知らんが 上の5.7kの画像でようやくアップロードできた
興味のある人は100k程度のを張ってみてくれ 3日前ぐらいまでは貼れたんだが

何時も使ってるサイトが使えんのでpsで書いてみた
0143名無し~3.EXE
垢版 |
2017/05/11(木) 13:04:27.78ID:PofOtdpB
そういやbase64にエンコとかするコマンドレットってあるの?
0145名無し~3.EXE
垢版 |
2017/05/30(火) 10:47:43.35ID:8tEQwhie
会社のwin7ノートでstaticとDHCPをダブルクリックで切り替えたくてバッチファイルを作ったんです
しかし世間はPOWER SHELLに移行すると知り、この際書き直そうと思い早速get-netadapterを叩いてみました
が、出鼻を挫かれました
操作可能なプログラムとして認識されません。が返ってくるだけで受付てくれません
ポリシーでブロックされているんでしょうか
0146名無し~3.EXE
垢版 |
2017/05/30(火) 11:05:10.51ID:5SmB/lgX
>>145
ちゃんとPowerShellのプロンプト画面で叩いているんですか?
>操作可能なプログラムとして認識されません。
PowerShellのコマンドですから、プログラムを起動しに行くはずはないのですがね
0148名無し~3.EXE
垢版 |
2017/05/30(火) 12:00:24.81ID:5SmB/lgX
>>147
それ、タスクスケジューラからOffice関連の更新の何かが起動されていそうですよ
0150名無し~3.EXE
垢版 |
2017/05/30(火) 18:43:56.29ID:9+CwB6Qw
>>145
get-netadapter は PowerShell Version 3 以上でないと使えない
Windows 7 の PowerShell は Version 2 なので PowerShell をバージョンアップするなり Windows 10 に行くなりしてくれ
あとエラーメッセージはコピペでいいので正確に書いてくれ
0151名無し~3.EXE
垢版 |
2017/05/30(火) 22:36:10.11ID:5SmB/lgX
>>145
Win7でやったらこんなん出ました

PS C:\Windows\system32> get-netadapter
get-netadapter : 用語 'get-netadapter' は、コマンドレット、関数、スクリプト フ
ァイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述
されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認して
から、再試行してください。
発生場所 行:1 文字:1
+ get-netadapter
+ ~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (get-netadapter:String) [], Comm
andNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
0152名無し~3.EXE
垢版 |
2017/05/31(水) 04:47:30.15ID:rqqJ/KOf
Windows10 セーフモードでネットワーク有効
正常動作しないWindows10をセーフモードで起動 http://www.ikt-s.com/win10-force-safemode-boot/  
画面が真っ黒で何もできないとか、デスクトップまで立ち上がったが そこから何も操作できないという事が実際に起こっています。
http://i1.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode3.jpg http://i2.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode4.jpg http://i0.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode5.jpg
http://i2.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode6.jpg http://i1.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode7.jpg http://i2.wp.com/www.ikt-s.com/wp-content/uploads/2016/06/win10-safemode9.jpg
正常動作しないWindows10をセーフモードで起動した後に『完全自動で通常起動へ移行する』には?
http://i.imgur.com/hzHr8ax.jpg http://i.imgur.com/hzHr8ax.jpg http://i.imgur.com/hzHr8ax.jpg        
0153名無し~3.EXE
垢版 |
2017/05/31(水) 05:49:58.18ID:jXEzIEcm
そろそろうぜぇ
セーフモードの入り方の解説なんかググれば出てくるものをそこら中に貼らんで良い
0155名無し~3.EXE
垢版 |
2017/06/02(金) 18:28:53.69ID:OwNBxqni
コマンドプロンプトってWindows7と10で劇的な違いとかってあった?
技術評論社のポケットリファレンスを買おうと思ってるんだけど、7の時に出たのは1000円程で10対応の最新版は3000円超えなんだよね
仕事でゴリゴリ使う訳じゃないから確認用に持っときたい程度
0156名無し~3.EXE
垢版 |
2017/06/02(金) 20:00:06.28ID:qg9TuXM1
コマンドプロントからできる程度の作業ならもう全部pshell使ってるなあ
つまりもうコマンドを使う機械自体が絶無
0158名無し~3.EXE
垢版 |
2017/06/10(土) 20:45:05.52ID:QlI4de7L
>>156
でも結局パワーシェルなんかだれも使わんでしょ
ぼくら見たいな大して役にも立たないものに労力を費やしてくれるいい人以外はw

unityでlinqを使いましょうとか声を張り上げてたあふぉを思い出したww
0159名無し~3.EXE
垢版 |
2017/06/10(土) 20:57:50.67ID:War3fYBc
>>158
おまそうwwwwww
とくれさwwwwww
0160名無し~3.EXE
垢版 |
2017/06/10(土) 22:38:31.64ID:qp8Fp5m3
PowerShell関連の書籍で今現在評判いいのがポケットリファレンスしかない
0161名無し~3.EXE
垢版 |
2017/06/11(日) 02:30:55.18ID:XNVOFNSi
>>160
To:
junmatsu@microsoft.com
Cc:
satoshif@microsoft.com
松本殿、元上司が「ヒロシを守るため」と激白した映像が公開されていますが、認識はありますか?
「人事に言われた」とも言っていますがこれはウソですか?
ウソなら訴えて訴えて動画を削除させるべきではないのですか?
2017/05/12(金) 21:42
松本淳殿、パワハラやセクハラの被害者に謝罪しましたか?
なぜ謝罪しないのですか?
パワハラセクハラの調査という名目で事実が無いという工作行為に加担するように脅迫したのはなぜですか?
知らなかったと言うように脅迫したのはなぜですか?
ネットに聴取された人が流したと思われる録音が出回っているのはガセとでもいうのですか?
その脅迫して言わせたヤラセを元に、裁判で虚偽の申告をしたというのは本当ですか?
当社を偽証罪の渦に貶めるつもりですか?
幻聴の可能性があると言いたいのですか?
パワハラ加害者にも問題はありますが、貴殿は人事としての監督責任すら持たない、
単なる会社のお客さんとでも言いたいのですか?
マイクロソフトの人事はマネージャーをサポートするのが仕事で不正を守るのが当たり前の文化だ、
告発を認めないとはどういうことですか?当社のマネージメントは不正に対し自制もできない、
世間に顔向けできないばかりか、みっともなく情け無い体面の者の集団とで言いたいのですか?
どこの部署のマネージメントの発言か5W1Hで摘示ください。
0162名無し~3.EXE
垢版 |
2017/06/11(日) 03:06:28.35ID:w0GBtplK
PowerShellからファイル名を置換するコマンド

Get-ChildItem "フォルダパス" | Rename-Item -NewName { $_.Name -replace ' ','' }

これ面倒なことしなくていいので便利なんだよね
0163名無し~3.EXE
垢版 |
2017/06/11(日) 03:21:59.17ID:1NpJMaSU
replaceの第二引数にスクリプトブロック渡せればもっといいんだけどな
0165名無し~3.EXE
垢版 |
2017/06/13(火) 19:14:20.67ID:L1x87Djd
書籍見てるとパイプを多用するようなんだが
そうせんと文句言われたりするもんか? (宗教争いが面倒、くらいの意味)
0166名無し~3.EXE
垢版 |
2017/06/13(火) 20:00:35.29ID:L1x87Djd
function print_test($a) {
Write-Host $a
}

print_test "a", "b", "c", "d"

------------------
PS C:\Users\test_user\Desktop>> .\win10_policy.ps1
a b c d

この挙動の謎っぷりマジ謎……
0167名無し~3.EXE
垢版 |
2017/06/13(火) 20:03:28.95ID:L1x87Djd
ああ、そういや , いらんのか、参ったな
0168名無し~3.EXE
垢版 |
2017/06/13(火) 20:05:42.16ID:L1x87Djd
functionの引数では , いるけど呼び出し時は , いらんとかよく間違える
その辺なんとかならんかなぁ
0169名無し~3.EXE
垢版 |
2017/06/13(火) 20:36:58.17ID:BB/uw9Y2
PSのカンマは配列を作るって覚えりゃいい
この二つは同じ

print_test "a", "b", "c", "d"
print_test @("a", "b", "c", "d")
0170名無し~3.EXE
垢版 |
2017/06/13(火) 20:58:22.61ID:mpR7yuzE
pshell使っててWINDOWSのエラーハンドル?が返って来た場合のエラーコード取得って
どうやってやるのが定番でしょうか?

例えばファイルを書き込もうとしてDISC-FULLのエラーになった場合ってエラーコードとしては
0x80xxxx03みたいなコードが返ってきますけど必要なのは下位1ワードだけなんです
0171名無し~3.EXE
垢版 |
2017/06/13(火) 21:11:03.84ID:5bjD86xL
ErrorLevel equivalent
ttp://blogs.msdn.microsoft.com/powershell/2006/09/15/errorlevel-equivalent/
0172名無し~3.EXE
垢版 |
2017/06/13(火) 23:27:40.35ID:L1x87Djd
>>169
たまにしか触らんせいだろうが、細かい部分でどうでもいいエラーが出るので
やっかいだなーという程度

String.equals と -eq で挙動違うのと
foreach-objectでループ二段抜けと
関数呼び出し時の , 有無は俺にはよくある orz

細部の表記に統一性もたしてくれたらPowershellイケてるよね、って言いきれるんだが
なかなか難しいところか
0173172
垢版 |
2017/06/13(火) 23:31:42.01ID:L1x87Djd
function set_registry_entry($key, $entry, $type, $value) {
set_full_registry_key $key
New-ItemProperty -Path $key -Name $entry -PropertyType $type -Value $value -Force
}

function set_full_registry_key($key) {
if (-Not (test-path $key)) {
$parent = Split-Path $key -Parent
Write-Host $parent

if (-Not (test-path $parent)) {
set_full_registry_key $parent
}

New-Item -Path $key
}
}
set_registry_entry "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" "AUOptions" "DWord" 3
set_registry_entry "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" "NoAutoRebootWithLoggedOnUsers" "DWord" 1

Powershellらしからぬ気もするが、パイプを意図的に使っていかないとPowershellぽくなくてダメなんだろうか?
0174名無し~3.EXE
垢版 |
2017/06/14(水) 00:50:51.51ID:uBpyQ5/y
>>173
あくまで自分の趣味だけど、パイプ多用で書き直してみた
この方が関数名や変数名考える必要もないし、名前のミスも少なくてよいと思う
でも関数でやるのが体に染みついてるならその方が楽だろうし、好き好きでいいかと

%{
@{
Path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
Name = "AUOptions"
PropertyType = "DWord"
Value = 3
}
#二つ目は省略
}|%{
$key = $_.Path|Split-Path -Parent
%{
while(-Not (test-path $key)){
$key
$key = $key|Split-Path -Parent
}
}|sort -Descending|%{
Write-Host $_
New-Item -Path $_
}
New-ItemProperty @_ -Force
}
0175名無し~3.EXE
垢版 |
2017/06/14(水) 01:01:13.93ID:uBpyQ5/y
二カ所間違えてた
やっぱテストしないとダメだな

%{
@{
Path = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU"
Name = "AUOptions"
PropertyType = "DWord"
value = 3
}
#二つ目は省略
}|%{
$key = $_.Path
%{
while(-Not (test-path $key)){
$key
$key = $key|Split-Path -Parent
}
}|sort|%{
Write-Host $_
New-Item -Path $_
}
New-ItemProperty @_ -Force
}
0176名無し~3.EXE
垢版 |
2017/06/14(水) 02:10:08.26ID:EBRIef0K
>>174
鬼かwwww

まあ文句言われないようなら関数でもいっか……d
0178名無し~3.EXE
垢版 |
2017/06/14(水) 02:36:31.08ID:EBRIef0K
うげ、また確認用Write-Hostがのこってるとか

うんもういいうや……
0179名無し~3.EXE
垢版 |
2017/06/22(木) 00:57:04.22ID:fpkRrMCt
Win7デフォルト + PowerShell + UI Automationだとコケる可能性あるな
ボタンだかのメソッドを引っ張ってくる「なんちゃらPattern」が何も返さないっぽい

ぽいってのは全パターン網羅やってない、くらいの意味だが
列挙系のメソッドぶっこんだら空でしたって悲しい話(Write-Hostで戻り値みたら何もでなかった、くらいの意味で
0180名無し~3.EXE
垢版 |
2017/06/25(日) 13:35:27.43ID:LNtNrXAc
Excel の表をソートする方法はありますか。
範囲A1:K8 の表の、D2 の列を昇順にソートしたいのです。
0185名無し~3.EXE
垢版 |
2017/07/02(日) 16:53:53.67ID:UIKX1dqP
poweshellって結構なんでもできそうな感じがするんだけど、もしかしてDirectXのDDSファイルの情報とかも取れたりするのか?
0186名無し~3.EXE
垢版 |
2017/07/02(日) 21:06:40.70ID:Ex/F46Ei
DDSファイルの情報を取得して返すプログラムを書く

そのプログラムをPowerShellから呼ぶ

で、できるんじゃないの
0187名無し~3.EXE
垢版 |
2017/07/02(日) 21:56:57.99ID:T5t1iplf
>>186
馬鹿が一々口出してこ無くていいよ
そんなに構って欲しいの?構ってチャン
0189名無し~3.EXE
垢版 |
2017/07/04(火) 06:37:37.78ID:1z/ArB25
>>185
DDSファイルの情報が何者か知らんけどファイル内に情報あるなら取得できるでしょ
0190名無し~3.EXE
垢版 |
2017/07/13(木) 13:04:49.42ID:bXEmJwai
偉い人アドバイスをお願いします。↓のブログを見つけて携帯にグローバルIPアドレスの変更を通知しようと考えまして、
旧アドレスを記載したテキストを参照するところまでは記述の意味を何とか理解できたのですが、
「レスポンスの読み込み&確認」以降がどうしても良くわかりません。
http://rtaki.blogspot.jp/2010/10/ip.html

サイト(http://www.axisnetworks.biz/tools/gip/)のソースを見てみると、グローバルIPアドレスの直前に「<p class="style4" name="ip">」がありますので、
「$line」が空でなければ、そこにこれが含まれているかチェックして、次に何かとの一致があるかを確認しているようですが、
この「(?<address>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)」が何を意味しているのか分からないです。

また、「$new address」は「$matches.address」だと定義され、それが変更時には上書き動作に引き継がれているようですが、
その「$new addredd」がどこから来るのかが分かりません。

なお、Write-Outputについては、2つ目の「前回確認済みのグローバルIPアドレス:」までは表示できています。
0191名無し~3.EXE
垢版 |
2017/07/13(木) 14:19:38.17ID:sHpRNaRR
正規表現でIPアドレスっぽいパターンを持った文字列を検索して、見つかったらその部分にaddressという名前を付けてる
$new addressではなく$new_addressな
どこから来るとかではなく、新しい変数をここで初めて宣言して代入してるだけ
$matchesの方がどこから来たかというと、-match演算子の結果が格納される暗黙変数として決められてる
どっちのifでどう失敗してるかとか、Write-outputをいろんな行に入れて、いろいろな値や式を渡して模索してみるといいと思うよ
0192名無し~3.EXE
垢版 |
2017/07/13(木) 14:37:43.43ID:9gYiCLE3
>>190
なかなか新鮮な質問だねw
(?<address>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)
は正規表現で、数字の連続、点、数字の連続、点、数字の連続、点、数字の連続 にマッチする。要するにIPアドレスっぽい部分
?<address>はマッチした文字を入れる変数名の指定。$Matches.addresという書き方で参照できて分かりやすいねという話

$new_address = $matches.address は単純な代入式だw $new_addressという変数に$matches.addressの値を入れてるだけ
昔言語の先生の、「プログラムの=はイコールじゃない。結果的に同じになるけど」ってセリフ思い出したw
0193名無し~3.EXE
垢版 |
2017/07/13(木) 15:11:58.44ID:bXEmJwai
>>191
ありがとうございます! 教えてもらった「match演算子」というキーワードで検索したら↓のサイトがすぐにヒットして、ようやく意味がつかめそうです!
http://www.pine4.net/Memo/Article/Archives/168

「$matches.address」のドットが「$resp.ContentEncoding」のドットのようにメソッド等の前に付けるものなのかな?と思っていたため、その前の「$mathes」は単なる任意の変数かと思い込んでました^^;
https://technet.microsoft.com/ja-jp/scriptcenter/powershell_owner01.aspx
今まで全くプログラムは経験がなかったので↑とか複数の解説に目を通して基本的なルールを確認していたのですが、ド素人にはかなりハードルが高くて数日悩んでました・・・。
0194名無し~3.EXE
垢版 |
2017/07/13(木) 15:24:50.03ID:bXEmJwai
>>192
ありがとうございます! [0-9]+については、↓の記載をみてIPアドレスの3ケタだと思っていたのですが、「\.」が不明でした・・・。
http://www.lightship.co.jp/FileVisor6/help/operation/regexp.htm
エスケープが「'」だって解説があったので、もしかしたら\も?とは想像していたのですが、ドットを文字として使いたい場合は\を前に付けるという理解で合っていますか?
0196名無し~3.EXE
垢版 |
2017/07/14(金) 21:39:20.68ID:wklSEW3P
>>194
` はPowerShellのエスケープ
RegularExpressionはPowerShell専用じゃないので\をエスケープに使ってる
ちょっと戸惑うけどそう言うものだと思うしかない
0199名無し~3.EXE
垢版 |
2017/07/20(木) 03:26:11.89ID:ri2MNCBu
かつてWSHが捨てられたように、今度はPSが捨てられる序章ってこと?
レスを投稿する


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