---------- 第1章 Windowsスクリプトの歴史 --------------
1 スクリプトバットの第一世代。 最初はwin95、win98---------から始まり、2008年頃に終わりました。 特徴:コマンドラインとパイプラインを備えたキャラクター指向のコマンド。 2 第二世代スクリプトVBS。 特徴:関数、パッシングバリュー、呼び出しのみ。 3 第3世代スクリプトパワーシェル。 2012年からは、コマンドは完全にオブジェクト指向へと進化しました。 例えば、タスクリストとget-processは繰り返しのホイール機能であるオブジェクト指向です。 前の二世代の文字の利点を受け継いでいます。
Q: なぜPowerShellを学ぶのですか? ある: 宣教師は1年間とBATのために5年間学ぶと答えました。 シンプルな構文と強力なライブラリ機能! パイプラインの両側でコマンドを持つオブジェクトをサポートする世界で唯一のサイトです。 すなわち、オブジェクト指向コマンド1 | オブジェクト指向コマンド2
WindowsとLinuxは異なります: WindowsのPowerShellスクリプトでは、 サポートCR、LF、CRLFが入ってください。 マルチスレッドおよびマルチプロセスの同時実行をサポートします。 「報告してください、キャプテン、ディスクが満杯です」と簡単に埋め込むことができます。 グラフィカルインターフェースの組み込みは簡単です。 (ポップアップ画面でユーザー名、パスワード、シングルセレクト、マルチセレクトなどの入力を求められます) これがLinuxスクリプトの嫉妬です。
PowerShellはPythonとは異なります: PowerShellで中国語を使うのは簡単です。 中国語の文字名、変数名、コメント。 中国語の単一引用符、中国語の二重引用符。 GBK、UTF8、Unicodeエンコーディングを自動的に認識します。 パイプラインサポートオブジェクトは、Pythonスクリプトが羨むようなものです。
簡単な構文例1:PowerShellのシングルクォートマークとダブルクォーテーションマークの魔法。 シングルクォートは、二重引用符で引用できます。 その逆もまた然りです。 シングルクォーテーションマークとダブルクォーテーションマークは@''で@引用ることができます。 BATは効果がありませんでした。
宣教師ナレーター: チュートリアルのデザインにはかなり考えを入れました。 私が書いた歴史の部分はとても[シンプルで粗い]と読まなかったのですか? 歴史は一筆で語られる。 しかし、私が言った以上、これはナンセンスではなく、学生たちに明確にしてほしいのですが、win7-win2008以降、スクリプトの[客体化]が人気を博したのです。 次のオブジェクト指向説明の章へとつながります。 PSの入門チュートリアルでは、キャラクター指向とオブジェクト指向の違いを言及すべきです。 この話題をコマンドラインの歴史に絡めるのは適切です。
---------- 第2章 オブジェクト指向の素晴らしい-------------- オブジェクトとは何か、なぜオブジェクト指向なのか、そしてなぜMicrosoftはホイールを強化しているのか?
オブジェクト指向の例1: 質問:私は1日に2.2個のリンゴを食べていますが、17日間で何個食べていますか? ある: 2.2 x 17サイズも用意されています。 また、どのスクリプト言語でもサポートされているi++を使用することも可能です。 ($i = 1)の場合、 $i -lt 18; $i++)
{ $Apple = 2.2 + $Apple write-host $i,$Apple
}
-------------------------------------------- 質問が変わったら、日数は教えず、ただお伝えします。 私は1日に2.2個のリンゴを食べていますが、2017年1月20日から6月20日までの間に何個リンゴを食べていますか? $days = ((get-date '2017-06-20') - (get-date '2017-01-20')).days #值151
私は1日に2.2個のリンゴを食べていますが、2020年1月20日から6月20日までは何個リンゴを食べていますか? $days = ((get-date '2020-06-20') - (get-date '2020-01-20')).days #值152
($i=(get-date '2020-01-20') $i -lt(取得日 '2020-06-20'); $i=$i.adddays(1))
{ $Apple = 2.2 + $Apple write-host $i,$Apple
}
結論:日付オブジェクトの場合、日や時間などを数えるのは簡単です。 [for,,i++]は一般的ですが、iが日付型であるとは思いませんでした。
------------------------------------------
オブジェクト指向の利点は何ですか? オブジェクト指向以前は文字列と整数しかありませんでした。 1 物体がある。 ----- [キャラクタータイプ]----- グリフにはsystem.stringという最も基本的な文字列があります。 System.Text.StringBuilderのメモリ、頻繁に変化し、大きな文字列
----- [数値タイプ]----- system.int32、system.int64、system.decimal、system.double、System.Numerics.BigInteger 無限整数。 一般的に使われるのはint32、十進法です。
1/3×3が1か0.9999かはデータ型によって異なります。 ----- [配列]----- system.array 配列 System.Arraylist配列は頻繁に変更されます。例えば、常に書き換え、付加、削除などです。これを使う必要があります。 速度は比較的速いです。 System.Collections.Generic.HashSetは配列の重複を消します。 Pythonのsetオブジェクトと同じです。
-----【フォーム】----- コマンド出力1回。 例えば、dir、get-processなどです。 2. スクリプトを書く際には、オブジェクトや属性を用いて構成します。
----- [その他] ----- ハッシュテーブルやファイルなどです。
2は属性を持っています。 属性は引数であり、文字列よりも小さいです。 属性が存在しない前に、[脳を焼く正規文字列]、いわゆる[演繹文字列]で文字列をフィルタリングし、フィルターする必要があります。 属性があれば、それは必要ありません。 3 方法はある。 メソッドはプログラムであり、コードです。 自分で書き直す必要はありません。 BATは絶対に良くありません。ありえません。個人的な文章もあって信頼できません。使う勇気はありません。 メソッドは自己記述式のps関数、またはpsクラス内の自己記述式メソッドのいずれかです。 自分で書いたメソッドは、一時的にサードパーティのクラスに[統合]することができます。 自分で書いたメソッドは一時的に.netクラスに統合できます。
オブジェクト指向の欠点は何ですか? 説教者はwinxpを使う人にPowerShellを教えています。 その人はPowerShellは良くない、オブジェクトがメモリを消費しすぎると言っていましたが、その通りです。 cmdでは100個のファイル名(文字列)をdirで返します。 PowerShellではdirを使って100個のファイルオブジェクトを返しますが、Powershellは多くのメモリを消費します。 しかし今は違います。 1. 不要な内容は変数に存在してはならない。 あるいは使用直後に破棄してメモリ使用を減らす方法もあります。 2. 記憶の落ちは十分だ。 CPU性能が上がることができないため、私たちは時間と交換するために必死にメモリを増やしています。 3. より強力な機能を求めており、オブジェクト指向は今や最も基本的なものです。 オブジェクト指向でないのは、py、php、java、.net、c++ではないのでしょうか?
概要: 1 オブジェクトは文字列よりも大きく、メモリ消費量が高い。 2. オブジェクト指向やより強力な関数のための手法が増えました。 3つの属性は文字列の粒度よりも小さく、非常に使いやすいです。 [脳みそを焼くようなフィルターのクレイジーな使い方]の弦を避けた!
=== 脳を焼くレギュラーを使い、例をフィルタリングするバット版のデフォルトゲートウェイ === @echo オフセットローカル 可能遅延拡張 エコーはデフォルトのゲートウェイを探している...
/f "usebackq delims=" %%i in ('ipconfig /all') do ( echo %%i|find /i "gateway">nul||echo %%i|find "default gateway" >nul もし「!errorlevel!」ならば =="0" ( /f "tokens=2 delims=:" %%a in ("%%i") do for /f "delims= " %%m in ("%%a") set ipgate=%%m
)
)
Echoのデフォルトゲートウェイは:!ipgate! デフォルトのgateway.ps1にpingを======================= $default gateway = (get-netroute -DestinationPrefix 0.0.0.0/0). ネクストホップ & ping.exe $ デフォルトゲートウェイ
# テスト接続 $ デフォルトゲートウェイ =======================
Q: たとえオブジェクト指向がとても良いとしても、これらのオブジェクトはどこから来ているのですか? A: .netライブラリからです。
---------- 第3章 .NET -------------- 入門
Q: .NET Coreにはバージョンブランチはいくつありますか? ある: 現在、3つのバージョンがあります。 .NET 2.0 .NET 3.51の最新バージョン .NET 4.0 .NET 4.70の最新バージョン .NET Core 1.x Appleシステム、Linuxシステム、組み込みシステム向けの.NET 1.2の最新バージョンです。 .NET Core 2.x Appleシステム、Linuxシステム、組み込みシステム向けの.NET 2.0の最新バージョンです。
Q: .netには機能的なブランチはいくつありますか? ある: .NETのデスクトップブランチ。 WinForm。 デスクトップWindowsの開発用です。 サウンドライブラリ asp.net.NETと.NET Coreで学んでいます。 Webサーバー機能ライブラリ。 B/Sウェブサーバーを起動するために使っていました。 .NETと.NET CoreでのF#です。 数学ライブラリ、三角関数ライブラリなどが含まれています。 PowerShell in .NET と .NET Core。 スクリプトファイルなどの一般的なシステム管理インターフェースを含みます。 Linux ◦Ubuntu 14.04 \ 16.04 ◦CentOS/RHEL 7以上 ◦オープンSUSE 42以上 ◦Arch Linux(archlのinuxにはバージョン番号がありません) ◦LINUX dockerコンテナ ◦Linux AppImageコンテナ(ポータブルアプリケーション、シングルバイナリ)https://github.com/probonopd/AppImageKit
MAC OS X ◦OS X 10.11
Q: .NETプログラム(C#プログラム)はどのようにしてMySQLサーバーに接続しますか? ある: .NET言語用のコネクターをダウンロードするにはmysql公式サイトにアクセスしてください。 mysql-connector-net-6.9.9-noinstall.zip--->v4.5--->MySql.Data.dll .netにMySql.Dataクラスを追加し、データベースインターフェースを追加してください。
結論: まずはWinXPマシンで.NET 3.51をインストールし、Windows 7とWindows 2008マシンをインストールし、まず.NET 4.62以上をインストールします。
.netは長年存在しており、Javaほど.NETをサポートするソフトウェアはほとんどありません。 すべての.netの支部やインターフェース(データベース、WeChatなど)。 ) それらのDLLやライブラリ、PowerShellを呼び出すことができます。 これはC#で書かれたexeとまったく同じです。
Q: .NETのブランチインターフェース以外に、PowerShell独自のライブラリ(モジュール)は何ですか? ある: 次の章をご覧ください
---------- 第4章 PowerShell --------------でよく使われる組み込みライブラリ、外部ライブラリ、サードパーティライブラリ
宣教師の助け: この章は議論できませんが、図書館とマニュアルのリストに過ぎません。 この章をブックマークしてください。 これらのライブラリを見れば、PowerShellが何ができるかがわかるでしょう。
Windows 2012マニュアルアドレス:(最も一般的に使われるADモジュール)
https://technet.microsoft.com/zh-cn/library/dn249523(v=wps.630).aspx ADユーザーグループ管理、DHCP、DNS、プリンター、ファイル共有、IIS、ディスク、NIC、
エクスチェンジ2016
https://technet.microsoft.com/zh-cn/library/bb124413.aspx Active Directory 12 アンチスパムおよびアンチマルウェア 59 クライアントアクセス100 エクステンションエージェント4 メールアドレスとアドレス帳 37 連邦とハイブリッド構成 高可用性 郵便の流れ 郵便受け 郵便受けデータベース メールボックスサーバー 移動と移動 組織 許可 方針とコンプライアンス セキュリティ サーバーの健康状態、監視、パフォーマンス 共有し、協力しましょう 統一メッセージ ユーザーとグループ
SQLserver2016
https://msdn.microsoft.com/zh-cn/library/hh245198.aspx
LYNC 2015
https://technet.microsoft.com/zh-CN/library/gg398867.aspx
SharePoint2016
https://technet.microsoft.com/zh-cn/library/ff678226(v=office.16).aspx
Amazon仮想マシン、AWS、Microsoft仮想マシン、Azure、Hyper-V、VMware vSphere、そしてエンタープライズグレードの仮想マシンです。
クライアント: サービス、プロセス、ログ、レジストリ、ファイルディレクトリ、リモート管理。 時間制限のあるタスク。
インターネット: Linuxサーバー接続用のFTP、メール、SSHクライアントプラグイン。
テキスト: XML、HTML、CVS、JSON、EXCELなどです。
テキスト2の声
グラフィカルインターフェース。
Microsoft Scripting Center
https://gallery.technet.microsoft.com/scrip{过滤}tcenter/
PowerShellソフトウェアソースの公式ウェブサイト---公式PowerShellライブラリ。
https://www.powershellgallery.com
他のNiu XライブラリはすべてGitHubにあります。 さらに、宣教師たちは定期的に[Hidden Foot Pavilion]の[Niu x Magic Weapon]を出版しており、これはPowerShellの有用なサードパーティライブラリです。
---------- 第5章 初心者はコマンドの使い方を助ける方法を学ばなければならない--------------
Q: PowerShellのバージョンはどうやって知りますか? ある: $PSVersionTable
Q: モジュールがわかりませんが、どうやって見つければいいですか? ある: get-module -ListAvailable
Q: コマンドの一部しか知らない場合、どうやってコマンドを見つければいいですか? ある: get-command *service*
Q: コマンドは知っていますが、どんなパラメータがあるのか分かりません。パラメータをどうリストアップすればいいですか? ある: get-help write-host -Parameter * show-command write-host
Q: パラメータは知っていますが、どのコマンドがこのパラメータを持っているのか分かりません。どうやってコマンドを見つければいいですか? ある: get-command -ParameterName encoding
Q: コマンドラインからコマンドの助けを得るにはどうすればいいですか? ある: 助けて、デートを頼む
- コマンドの例 - オンラインオンラインマニュアル
Q: コマンドの属性メソッドがわかりません(オブジェクトもわかりません)。どうやって見つければいいですか? ある: 「ABC」 | メンバーを獲得 日付取得| メンバーを獲得
Q: 中国語の.NETマニュアルはどこにありますか? ある: MSDN。 最も基本的な文字列の特性と方法はマニュアルに記載されています。
https://msdn.microsoft.com/zh-cn/library/system.string.aspx
---------- 第6章 共通命令の導入 --------------
最初に覚えるコマンドは「dir」です Q: なぜ powershell dir (例:Get-ChildItem) を cmd dir ではなく使うのですか? ある: オブジェクト指向で強力な手法、そして多くの特性を備えています。 $file = 指揮A:\pscode\temp183\aaa.txt $file。 フルネーム #返回全路径属性 $file。 ベースネーム #返回文件名属性 $file。 拡張 #返回扩展名属性 $file。 ラストライティングタイム #返回最后写入时间属性
最初に学ぶべき構文は配列構文です。 $a = @(xxx コマンド) Q: 時には[文字ベースの外部コマンド]を使って、返り値を振る舞い単位ごとに配列に分割する必要があります。 ある: $a = @(ipconfig) $a[8] #第9行
get-childitem の使用例: PowerShell 3.0以降でパラメータが追加されました
get-childitem d:\xxx -file #过滤、出力ファイルのみ - ディレクトリフィルタリング、ディレクトリのみの出力 -隠れフィルタリング、出力のみ隠れ
Q: ファイルを開いて、動作ごとにセグメントし、配列に入れますか? ある: $a = Get-Content a:\pscode\temp183\aaa.txt -ReadCount 0
Q: ファイルを大きな文字列として開いて、変数全体を保存しますか? ある: $a = Get-Content a:\pscode\temp183\aaa.txt -raw
$a,$b,$c = 1,2,3
Q: バックグラウンドでコマンドを実行するにはどうすればいいですか? ある: 古代にはcmd /cの「コマンド」がありました。 さて、PowerShell /c「コマンド」、またはPowerShell -c「コマンド」があります。 PowerShell -file "Script.ps1" -argument 1 AAAA -Parameter 2 1234 start-process -path xxx.exe -ArgumentList '-parameter1 aaaa -parameter2 1234'
Q: 別のローカルユーザーでスクリプトを実行したいのですが、PowerShellにはrunaがありません。 exeで似たようなコマンドはありますか? ある: PowerShellにはさまざまなセッションがあります。 ip + port + username + password = セッションです。ユーザー名を変更し、パスワードを変更するだけで、あなたは権限を変更できます。 なぜなら権限はユーザーに紐づいているからです。 同様に、ユーザーを変えずにnセッションだけ作成すれば十分です。 最も重要なnew-pssessionには-Credentialパラメータがあり、ユーザーパスワードを入力できますが、これはrunasとは異なります。 EXEも同じですか? 他にSmbSessionとは何ですか? ですので、PowerShellでrunasを使う必要はないと思います。 exe。 セッションとCredentialでそのコマンドを使うだけでいいんですよね?
パラメータ名に[Credential]という名前のコマンドを確認してください: get-command -ParameterName Credential
コマンド内の[session]文字でコマンドを表示: get-command *session*
Q: PowerShellを使ってメールを送るにはどうすればいいですか? ある: 送信メール -件名「件名」 -「your hotmail account @hotmail.com」から「your QQ email @qq.com」へ -SmtpServer "smtp.live.com" -ポート587 -useSsl -credential "your hotmail account @hotmail.com" ' -添付ファイル $Attachments -BodyAsHTML -本文$HTMLメールの内容
手記: 1回の用途xxx@QQ.com+ あなたのQQパスワード + 上記のコマンド メール送信が機能しません。 QQパスワードのセキュリティのために、Tencentは独立したメールパスワードを求めています。 2 QQメールボックスからの送信はデフォルトではできません。 電源はオフにしていて、設定でSMTPをオンにする必要があります。 3 PowerShell 3.0以降はポートパラメータのみをサポートしています。 Windows 7の場合は、まず最新のPSをインストールしてください
Q: WinのCPU、ディスク、ネットワーク、IOなどを監視してください。 ある: パフォーマンスモニターや Get-Counterは、ローカルおよびリモートコンピュータの両方からパフォーマンスカウンターデータを取得します。
Q: どのカウンターアイテムが入手可能かはどうやって確認できますか? ある: すべてマニュアルに書かれています。 主な用途のカテゴリーを確認してください: Get-Counter -ListSet * | Sort-Object CounterSetName | Format-Table CounterSetName
例えば、ディスクカテゴリが(PhysicalDisk)であることがわかり、ディスク内のサブカテゴリを確認し、以下を使います。 (get-counter -listSet PhysicalDisk) 道
Q: ログはどうやって見られますか? ある: イベントビューア、または get-eventlog
Q: ストリングスはどうやって演奏しますか? ある: $cmd 1 = 「xxxx」 呼び出し表現 $cmd 1
では、個々のコマンドについて多くを学びました。では、PowerShellスクリプトの実行を見てみましょう。
---------- 第7章 PS1 スクリプト、デバッグ、実行-------------- スクリプトはコマンド文の組み合わせとオーバーレイです。 台本は接着剤のようなもので、他の人に連絡を取ったり、車を組み立てるためのホイールを探したりします。 車輪を作る代わりに、他の人が使うためのものだ。
カイニャオが尋ねました:脚本の書き方は? 老鳥は答えた。 1 問題の詳細を明確にする必要があります。 例えば、月餅を作ること。 2 問題解決のアイデアも基本的に完成しています。 小麦粉と水を入れて、具を入れて蒸し。 3 どのコマンドと変数を使うべきか。 5粒を加えて型に入れ、絞ります。 4 まず大まかに書く、大まかに書く。 5 デバッグは合格しました。 6 詳細に書く。 エラー状況とエラーコード、つまりエラーメッセージを考えてみましょう。 互換性が薄いエラーの多いコードを削除しましょう。 性能の悪いコードを書き直しましょう。 ここまでは、良い脚本は見た目が良くないかもしれませんが、非常に有用なはずです。 7 精巧に作り込まれた。 リファクタリング、再利用されたコードのスニペットを関数に書き込むこと。 変数名を書き換えて、人々が一目で理解できるようにしましょう。 コードを適切にフォーマットし、インデントも行ってください。
Q: PS1を書くのに使われるIDEは何ですか? ある: 最も推奨されているのはVisual Studio CodeとPowerShellプラグインの使用です。 機能:コードプロンプト、オートコンプリート、コードフォーマット、スペースやタブ選択のためのインデント、ファイルエンコード設定。 FTP-syncというプラグインがあり、WinのVSCodeにPS1スクリプトを書き込み、保存時に自動的にLinuxディレクトリに同期させます。
Q: PS1のデバッグにはどんなツールが使われていますか? ある: 最も推奨されているPowerGuil Lifeは機関車を使わず、たとえヒーローでもPSスクリプトがジャンプしてエラーを報告します! VSCoDも問題ありません
Q: コードのフォーマット作成にはどんなツールを使っていますか? ある: インデントすべきものはすべてインデントされ、等しい符号は揃っています。
PowerShell ISE + ISE Plugin [ISESteroids]
設置: インストールモジュール -名前 ISESteroids
ISEの運行: スタートステロイド
Q: コードの色を美しくするためにどんなツールを使っていますか? ある: 1 上記のツールを使ってコードをフォーマットします。 2 PowerShellise + Missionary DIY カラーマッチング 2016 エディションを使います。 3 写真を撮ってください。 世界で最も美しく美しい色彩のPowerShellコードが作成されます。
上記のIDEはすべて中国語で書かれています。
Q: 脚本の名前はどうすればいいですか? xxx.ps1 ある: 1---2文字から始め、残りは中国語のファイル名を使うことが推奨されます。 つまり、[Bfが古いfiles_をすべてバックアップし、10日前の.ps1を削除する] この方法では、まず[bf]と入力し、その後Tabキーを押してスクリプト名を完成させます。
Q: PowerShellスクリプト実行権限はどのように有効にしますか? ある: echo以下のコードは、管理者権限を持つコマンドでコマンドファイル、または管理者権限を持つPowerShellで実行できます。 PowerShellリモートリモートを使っている場合はechoです。 ローカルマシンとリモートマシンの両方が管理者権限で実行されなければなりません。 "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -コマンド "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -コマンド "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" & "C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe" -コマンド "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" & "C:\WINDOWS\syswow64\windowspowershell\v1.0\powershell.exe" -コマンド "Set-ExecutionPolicy -ExecutionPolicy Unrestricted" 間
Q: 機関車(powergui)の欠点は何ですか? ある: 背景色の設定ができません。
Q: vscodeの欠点は何ですか? ある: $と変数名は同じ色ではありません。 デバッグ機能は遅く、時にはデッドロックされます。
Q: ISEの欠点は何ですか? ある: エンコーディングを保存するか変換するかは選べません。 [スペース]へのインデント、[タブ]両方。 他のテキスト編集ソフトでは、インデントが表示されます。
---------- 第8章 実戦訓練-------------- このパートはグループ6504748、作曲しました。
5. 例1:サービスのオン・オフ 6. 例2:制御ファイアウォール(開閉、ルール) 7. 例3:ポリシーを設定する(パスワードポリシーを例として)
---------- 第9章 これらの追加選択科目に興味はありますか? -------------- PowerShellスクリプト、コマンドライン引数、バインド変数の例
http://www.cnblogs.com/piapia/p/5910255.html
PowerShellは一度に1つのスクリプトだけを実行します(プロセス相互排除の例)
http://www.cnblogs.com/piapia/p/5647205.html
PowerShellキャラクターインターフェース、PowerShell Plus WPFインターフェース、2048年ゲーム
http://www.cnblogs.com/piapia/p/5531945.html
PowerShellの2つのクローラー
http://www.cnblogs.com/piapia/p/5367556.html
PowerShellスクリプト:ランダムパスワードジェネレーター
http://www.cnblogs.com/piapia/p/5184114.html
PowerShell再帰アルゴリズムの例
http://www.cnblogs.com/piapia/archive/2013/01/29/2881011.html
PowerShell音声計算機
http://www.cnblogs.com/piapia/archive/2012/10/20/2731506.html
1 すべてのEFS暗号化ファイルをリストアップします。 2 すべてのEFS暗号化ファイルを復号する
http://www.cnblogs.com/piapia/p/4702514.html これはシステム管理者およびネットワーク管理者向けに書かれたツールです。 従業員が退職した後、そのディスクは10,000のファイル(ディレクトリ)があると仮定し、そのうち3つのファイルディレクトリはEFSで暗号化されています。 エクスプローラーでは、これら3つのファイルは緑色です。 しかし、(1万のカタログ)を一つずつクリックすると、緑色かどうかに関わらず、疲れ果てるでしょう。 この時点で、ネットワーク管理者は従業員のWINアカウントを使用し、従業員のPCにログインし、このスクリプトを使ってすべてのEFS暗号化ファイルを一覧化します。
---------- 第10章 質問してください-------------- 皆さん、報告があるなら何も持たずに法廷を出て行ってください。
----------第11章 Linuxチャプター--------------
ミッショナリー:Linux版のPowerShellをインストールできれば、PS1スクリプトだけで十分で、shスクリプトは不要です。 解釈: 1 要するに、bashは構文のみを持ち、コマンドやライブラリはありません。 2 bashは構文関数が1%しかなく、PowerShellでは実装できません。 これは普通のことで、世界中で全く同じ葉はありません。 つまり、PS1のスクリプトだけで済み、SHは必要ありません。 3 bashは古すぎます。同じ関数ですが、Powershellも実装可能ですし、時間も節約できます。例えば10,000個の空のforを使えますが、Powershellは90%の時間を節約する必要があります。 4 /usr/bin/PowerShell の代わりに /usr/bin/PowerShell を使うことを覚えましょう。 他のLinuxコマンドやパイプライン、昔ながらのカンフーなどは、バッシュとまったく同じように使われています。 5 徐々に、頭が向くようなLinuxコマンドやその両方ではなく、オブジェクト指向でシンプルかつ強力なPowerShellコマンドやライブラリを使いましょう。 ---これが一般的な原則、全体の概要です。
Q: どのLinuxバージョンでPowerShellをインストールできますか? ある: ◦Ubuntu 14.04 / 16.04 ◦CentOS/RHEL 7以上 ◦オープンSUSE 42以上 ◦Arch Linux(archlのinuxにはバージョン番号がありません) ◦LINUX dockerコンテナ ◦Linux AppImageコンテナ(ポータブルアプリケーション、シングルバイナリ)https://github.com/probonopd/AppImageKit
Q: なぜwinのコマンドラインはLinuxよりも強いと言われるのですか? ある: ワンウィンのコマンドはオブジェクト指向のPowerShellへと進化しました。 Linuxはまだ動作していません。 win7からwin2012r2への進化は終わります。
2 Unixには多くのLinuxコマンドがあり、非常に強力だと聞いていました。 しかし今言っておきますが、PowerShellのコマンドはLinuxのコマンドの少なくとも10倍は多いです。 とにかく、私は一生学んできたわけではありません。
3 Linuxはグラフ依存が強く、コマンドが少なすぎる。 そしてwinコマンドはLinux以上のものです。 3.1 どのLinuxでも、メールサーバーのコマンドはExchangeよりもどんどん完成しているのですか? 交換よりも便利? 3.2 LinuxのDNSサーバーバインディングは、winのDNSコマンドほど便利ではありません。 BindにはIPv4のAレコードをドメイン名に追加する[コマンド]がありますか? まだウェブグラフィックスに依存していませんか? nsupdateを使うべきだと言う人もいます。 テキストを作成してからそのテキストを実行するという話ではありません。 [DNS zone file]をsedに置き換えるのと、[dns zone]を再読み込むことの違いは何ですか?
4 新しいwinバージョンやPowerShellでは、すべて[command + parameter]です。 そしてLinuxの大部分はまだ[sed text]です。 4.1 ネットワークカードに割り当てられたIPアドレスを例に挙げます。 NMCLI接続追加タイプイーサネット conname NEW_STATIC ifname eno1234567 ip4 192.168.1.111 GW4 192.168.1.1, ifcfg-eth0ファイルをsedでスクレイピングするよりも便利ではありませんか?
5 どんな言語もスクリプトもデータを処理します。 オブジェクトの助けを借りれば、PowerShellはawkよりも便利です。 Shenma csv, excel, xml, json SQLテーブル、NoSQLテーブル。 HTMLなど。
Q: PowerShellはどのようにして[sed -i "s/what to look for/replace with /g"ファイル名]を実装していますか? ある: @(Get-Content filename) -'aaa', 'bbb' を置き換えてください |Set-Content ファイル名$aaa つまり、ファイルを開いて置き換え、保存するだけです。
Q: なぜLinuxでSEDを使う人がどんどん減っているのですか? ある: 議論1:AWKはSEDに代わるが、SEDはAWKに代わることはできない。 つまり、単に置換を見つけるだけです。 AWKは複雑な処理を実装するためのものなどを持っています。
議論2:AWKは標準正則を用いており、sedの正則はsedと同じですが、部分が異なります。 SEDを学ぶということは、脳内の相容れない規則的な基準が互いに争っていることを意味します。
Q: では、AWKを学ぶのは正しいのですか? ある: PowerShellを学ぶのはAWKを学ぶよりも簡単です。 PowerShellは[split and then split]、[ifとif]、where-object、string.substing()、string[-3]などを使用します。 弦の問題を層ごとに分解してください。 awkの普通よりは簡単です。
Q: パイプラインやAWKはPowerShellで使えますか? ある: PowerShellでもawkを呼び出せます。Bashとまったく同じです。 古い武道は完全にトリノのものだ。
Q: PowerShellで[awk '{print $3}']関数をどのように実装すればいいですか? ある: ($line -分割「\s+|\t+」)[0] #第一行 ($line -分割「\s+|\t+」)[2] #第三行
コンテンツ取得 /xxx/yyy.txt | foreach-object {$_.split()[2]} #awk '{print $3}'
Q: PowerShellを使って[awk -f a.awk file]関数をどのように実装しますか? ある: 本質的には、これはパイプを使ったフィルタリング関数です。 PowerShellではこれをフィルターまたはフィルターと呼びます。 PowerShellはコマンド+パイプ+フィルターの組み合わせをサポートしています。 コマンド1 | フィルター1 | コマンド2 | フィルター2 | フィルター3 フィルター1
{ AWKに似た機能
}
Q: PowerShellには[xargs]がありますか? ある: パイプラインで使用されるパイプ変数は[$psitem]と呼ばれ、そのエイリアスは[$_]です。 PowerShellはxargsの関数を実装するためにforeach-objectと$_を使用します。
Q: PowerShellには[<][<<]の数値はありますか? ある: いいえ。 おそらく右から左への[<]シンボルは反人間的思考を意味しているのかもしれません。 PowerShellの多くのコマンドが左から右に変更されています。 get-random <(1..100)がPowerShellで合法でない場合、合法的なものはget-random -inputobject (1..100)であるべきです。 100 |get-random 奇妙なコマンドのうち1%未満が[<]記号に依存しなければならず、これはPowerShellでcmdを呼び出したり、PowerShellでbash(PowerShell for Linux)を呼び出すことで達成できます。 例えば、$a = bash -x「コマンド1 <コマンド2」#linux 例えば、$a = cmd -c 「コマンド1 <コマンド2」 #cmd
Q: PowerShellにexpectコマンドはありますか? PowerShellを使ってWinからLinux SSHサーバーに接続する方法は? ある: 1. はい。 奇妙で部分的なドア対応のニーズには、サードパーティ製のモジュールがあります。 2 いいえ。 PowerShellはexpectコマンドを使わず、セッションを使用します。
Powershell + SSHクライアントライブラリ + IP + ポート + ユーザー名 + パスワードを使って接続を統合し、その接続にコマンドを送信します。 コードは以下の通りです: $connection 1 = New-SSHSession -ComputerName 1.1.1.1 -Port 22 -Credential aaaa #将提示输入密码 $to return = Invoke-SSHCommand -Command {cat /etc/issue} -SSHSession $Connection 1
この標準機能(MongoDB、mysql、ssh、ftp、http、telnetなど)にはドライバーやモジュールがあります。 追伸。 .netprogramはドライバ接続を通じてコマンドを送信し、データを受け入れます。 モジュールやドライバを使って[データ]を送受信する利点は以下の通りです: データは.netオブジェクトに変換され、さらにそのオブジェクトはPSオブジェクトに変換されます。 そうでなければ、すべて紐で、PS派の[オブジェクト指向武術]は役に立たない。
MongoDBを例に挙げると、モジュールやドライバを使ってコマンドを送信することの利点は何でしょうか? 誰が話す? 私が感じる利点は以下の通りです: 1 マルチスレッディング。 バックグラウンドスレッドは実行されており、現在のスレッドには占有されません。 2. いつでもセッションから途中で切断し、他のPSコードや関数を実行し、いつでもセッションに戻ることができます。 スクリプトは書きやすく、デバッグも簡単です。 3Sessionは複数のユーザーを呼び、異なるユーザーが異なるサーバー権限を持つことがあります。
Q: PowerShellにrunasコマンドはありますか? PowerShellで他のユーザーのコマンドを実行するにはどうすればいいですか? ある: いいえ。 PowerShellでは、Linuxネイティブのコマンドやパイプラインの実行は簡単だ。 例えば: シッaaa@127.0.0.1「ユーザーAAA権限で実行、コマンドxxx」 SSHpass -p user_password sshaaa@192.168.1.1
Q: SSHDを搭載したLinuxマシンが2台ですか? PowerShellでコマンドを接続・送信する方法は? ある: 上記の方法に加えて、新しいLinuxセッションを作成する方法も利用できます。 (Linuxから別のSSHDに接続) 注:この方法は/etc/ssh/sshd_configファイルの編集が必要です。 次の行を追加します Subsystem powershell powershell -sshs -NoLogo -NoProfile その後、SSHDサーバーを再起動してください。 詳細なマニュアルはこちらです:
https://github.com/PowerShell/PowerShell/tree/master/demos/SSHRemoting
命令: $connect 2 = New-PSSession -HostName 127.0.0.1 -UserName user006 #手动输入密码或用-KeyFilePath option invoke-command -session $connect 2 -scrip{filter}tBlock {new-item ~/ccc.txt}
概要: WindowsクライアントがLinuxサーバーに接続されています。 現在はサードパーティ製モジュールが必要です。もちろんこれは公式ライブラリのモジュールなので、インストールモジュールPoshSSHを使ってください。 LinuxクライアントがLinuxサーバーに接続されています。 /etc/ssh/sshd_configファイルを編集する必要があります。 Linuxクライアントで、Winサーバーに接続しています。 サーバーのサービスをオンにする必要があります。 クライアント側のサーバーを信頼してください。 WinクライアントがWinサーバーに接続されています。 サーバーのサービスをオンにする必要があります。 クライアント側のサーバーを信頼してください。
Q: PowerShellには[grep]がありますか? ある: select-stringコマンドはPowerShellで使われます。 コーディングの観点だけでも、select-string=smart、grep=stupid + には大きな欠陥があります :mrgreen : BOMヘッダーがある場合、select-stringは自動的にファイルのエンコーディングタイプを認識します。 BOMヘッダーがなければ、linux+grepのようにシェル環境を変更する必要もなく、特定のコードに従ってファイルを保存する必要もありません。 ファイルのエンコーディングに応じて-encodingパラメータを指定するだけで十分です。 そしてgrepにはこの機能がなく、つまり[ファイルエンコーディングタイプを指定できない]という大きな欠陥があります。 もちろん、grepは無駄ではなく、grepにはいくつかのパラメータがあり、追加の一意機能がありますが、select-stringはそうではありません。ここでgrepがselect-stringより強いのです。
Q: PowerShellに[評価]はありますか? ある: PowerShellで文字列を実行するにはInvoke-Expressionを使ってください。
Q: PowerShellに尾の-fはありますか? ファイルの新たに生成された行をリアルタイムで出力することが可能です。 ある: Get-Content D:\a.txt -Tail 10 -ReadCount 0 -待って
Q: 小型キーボードを使いたいのと、256色の端末も欲しいのですが、xshellはどのように設定すればよいでしょうか? ある: ターミナル---ターミナルタイプ---[putty-256color]または[export TERM=putty-256color]] ターミナル---キーボード---デフォルトかLinuxです。
Eterm-256colorは gnome-256colorは動作しません Konsole-256Colorは動作しません パッティ-256カラー PowerShell Missionary オリジナル共有 2017-02-15 RXVT-256COLORは動作しません screen-256colorは動作しません ST-256カラー VTE-256COLORは動作しません xterm-256colorは動作しません 同じ原則がSecureCRTにも当てはまります
Q: シェルとパイソン、どちらがより強力ですか? ある: それぞれに強みがあり、互いに補完し合うことができます。 しかし、それらは補完的なものではありません。 この件については後述します。
Q: なぜLinux版PowerShellは、運用や保守担当者がスクリプトを書くのにより適しているのですか? (Linux版のPythonと比較して) ある: 1 Pythonはオブジェクト指向関数を持ち、Linux版のPowerShellが利用可能です。
2 Pythonにはコマンドラインがありません。 2.1 PythonはSSHのデフォルト端末にはなれませんが、LinuxのPowerShellは可能です。 「SSHD搭載の2台のLinuxマシン?」という章を参照してください。 PowerShellでコマンドを接続・送信する方法は? 》 2.2 Pythonでシェルコマンド(awk、grepなど)を使うのは非常に面倒です。 大量のpyの構文やコードを追加する必要があります。 Linux版PowerShellはbashと同様にawkコマンドを実行します。
3 Pythonにはパイプがありません。 n個のコマンドラインプログラム間で値をやり取りするのは非常に厄介です。 大量のpyの構文やコードを追加する必要があります。 Linux版PowerShellにはパイプラインがあり、awkコマンドの実行はbashと同じです。
4 Pythonはバージョン2ですが、バージョン3はがんと互換性がありません! 質問です。 Linux版PowerShellはそのような問題はありません。 4.1 これらの問題にはコーディングの問題が含まれています。
結論: grepのようなシェルコマンドはコーディングサポートには向いていません。家庭用PowerShellの4.1のコーディング問題ほど優れていません。 さらに上記の2.3ポイントも加わります。 Linuxの人には居心地の悪さを感じますが、Pyで外部コマンドを使う人はほとんどいません。 [pyコマンドライブラリ]と[shellコマンド]は死んでおり、基本的に互いに補完し合うことはできません。 Linux版のPSは異なります。
Q: なぜPowerShellはshellより優れていると言われるのですか? ある: 1 PowerShellはオブジェクト指向であり、プロパティは直接利用可能なデータを返します。 これは文字列推論を必要とする文字スクリプト言語(バットやシェル)に比べてはるかに少ないです。 生まれつき[逃げ出すべきコンテンツ]が少ない。 2 文字列検索の置換。PowerShellには.NETクラスにエスケープを必要としないメソッドがあります。 例えば: [文字列]$a = 'abc\\def' $b = $a.replace('\\', 'when') #返回:[ABCがdef] IPが正当かどうかを判断するには、IPAddressクラスのTryParse()メソッドを使うことができます。 要するに、できるだけ多くの.netメソッドを使うか、正則表現をできるだけ少なくするか、あるいは単純な正規表現を使うことを提案します。 3 PowerShellは[']をエスケープシンボルとして使用します。 [']は[\]よりも使われておらず、脱出記号としてもはずっと少ないです。 3.1 データベーススクリプトを書く際には、[']の競合がより多く発生します。 例えば、['table']は['t]と競合し、[biao']は['b]と競合します。私は後に['table']で解きました。 4ps文字列検索と置換に対応し、通常のエンジンを持ち、Linuxと互換性があり、[\]も脱出手段として使います。 しかし、特別な文字列エスケープ関数[[Regex]::Escape()]があり、まずエスケープされ、その後見つけて置き換えられます。コードは非常に読みやすいです。 エスケープ前の文字列$Original = '\+\&*|]' $escaped string = [regex]::escape(エスケープ前に文字列$original) ------------- 文字例 [文字列]$a = 'abc\\def' $Original エスケープ前の文字列 = '\' $Escaped 文字列 = [正則表現]::Escape(エスケープ前の$Original文字列) #[\]--->[\\] $b = [正則表現]::replace($a,$Escaped 文字列、「when」) $b #返回 [ABC ダンダン DEF] ------------- 5 bashとawk、それぞれに独自のフォー、そしてそれぞれ独自の脱出があります。 これらを組み合わせると、AがBに影響を与えやすく、AがBを飲み込むことができます。 また、[']、["]、[\]、[*]に遭遇すると問題が起こりやすいです。 長ズボンを二枚重ねて着て、一枚を脱がせばもう一枚も動くようなもので、相性を気にしなければなりません。 これはがんであり、解決が難しいのです。 しかし、この問題はある程度回避することも可能です。 これは、その臭い問題を書いた人が修正しなければなりません。 [awkコードを.awkファイルに別々に入れて、コマンドラインには置かないでください] PowerShellにはこの問題はありません。コマンドラインに設定し、スクリプトに入力しても効果はありません。
|