[解決済み] PowerShellスクリプトでスクリプトコードを再利用/インポートするにはどうすればよいですか?
質問
とまったく同じことをする PowerShell スクリプトを作成する必要があります。 前のスクリプト と同じことを行う PowerShell スクリプトを作成しなければなりませんが、今回は XML ファイルの代わりに CSV ファイルを読み込む必要があります。私の計画は、両方のスクリプトに必要な共通の関数を持つ PowerShell スクリプトを作成し、この共通のスクリプト ファイルを両方のメイン ファイルで再使用することです。
の 2 つのディレクトリに 2 つのメイン ファイルを作成するとします。
C:\
ドライブに作成し、共通ファイルと他の3つの
rd
パーティ・ライブラリは
D:\
ドライブ、例えば
C:\script_1_folder\Script1.ps1
,
C:\script_2_folder\Script2.ps1
と共通ファイル、3
rd
パーティ・ライブラリは
D:\script_common
.
-
メインファイルで共通ファイルを呼び出す方法(パスの取得方法、共通ファイルのインスタンスを作成する必要があるか、使用方法など)
とはどのような違いがあるのでしょうか?
$script_path = $myinvocation.invocationname; $script_folder = split-path $script_path -parent; write-host $script_folder $script_name = split-path $script_path -leaf; $current_folder = [system.io.directory]::getcurrentdirectory() [system.io.directory]::setcurrentdirectory($script_folder) Set-Location $script_folder add-type -path ".\AlexFTPS-1.1.0\AlexPilotti.FTPS.Client.dll"
と
$path = (split-path $MyInvocation.MyCommand.Path) $loggerPath = $path + "\Logger\release\Logger.ps1"; .$loggerPath; $logger = Logger; $logger.load($path + "\Logger\config\log4ps.xml","log.log");
で、私の問題に関してはどうすればいいのでしょうか?
-
Windows の temp フォルダに temp フォルダを作成するにはどうすればよいですか。
どのように解決するには?
Powershellの共通コード
インクルードしたいコードを別の PS1 ファイルに置き、そのファイルを "dot source" して現在のスコープにインクルードすればよいのです。
. D:\script_common\MyCode.ps1
以上です。
モジュールを使う
代わりに、モジュールを使うことを検討してもよいでしょう。
Import-Module
コマンドレットを使用します。Active Directory のようなものを扱うのにこれを使ったことがあるかもしれませんが、そこではこのようなことができます。
Import-Module ActiveDirectory
この場合、モジュールは特別なディレクトリにあるので、モジュールの名前だけが必要です。
Powershellで独自のモジュールを書くには、モジュールの名前に
.psm1
拡張子で名前を付けます。通常、この中でフリーフローティングコードを書くことはありません。モジュールをインポートしたコードが利用できる関数を書きます。
どこからでもスクリプトモジュールをインポートするために、フルパスを使用してください。
Import-Module D:\script_common\MyModule.psm1
モジュールパス
自分でモジュールを作成した場合、古い場所にはモジュールを置いておき、フルパスで参照することができます (上記のように)。また、いくつかの の位置でモジュールを探します。 :
-
$PSHome\Modules
(%Windir%System32³³WindowsPowerShell³³v1.0Modules) -- ご参照ください。 Windowsに同梱されているモジュール用に予約されています。ここに物を置かないでください。 -
$Home\Documents\WindowsPowerShell\Modules
(%UserProfile%Documents﹑WindowsPowerShell﹑Modules) -
%ProgramFiles%
Desired State Configuration モジュールのために多く使用されているようです (おそらくシステム全体に適用されるため)。
これらはデフォルトですが、Powershell は独自の環境変数
PSModulePath
という独自の環境変数を使ってどこを見るかを決めています。
PATH
と同様に、この変数に独自のフォルダを追加することができます。
これで、自分のモジュールを自分の好きな場所に置くことができます。フォルダをどのように構成するか、どのように命名するかについての詳細は、リンクを参照してください。
自分のモジュールとサードパーティのモジュールを同じ場所に置くかどうかは、サードパーティのものによって異なります。独自のモジュールを独自の場所にインストールし、パスを変更することもできますし、好きな場所に置くことができるかもしれません。
Temp フォルダの作成
この機能を利用し
TEMP
または
TMP
環境変数を使用して、temp フォルダのパスを取得します。Powershellでこれらを取得するには、以下のようにします。
$env:TEMP
または
$env:TMP
.
そこに作成するフォルダのユニークな名前を考えなければなりません。そのための1つの方法として、GUIDを使用することができるかもしれません。
$dirName = [System.Guid]::NewGuid().ToString()
New-Item -Path "$($env:TEMP)\$dirName"
関連
-
[解決済み] PowerShellでショートカットを作成する方法
-
[解決済み] PowerShellでCMDコマンドを実行する
-
[解決済み] Join-Pathを使って、2つ以上の文字列をファイルパスに結合するにはどうすればよいですか?
-
[解決済み] PowerShellで「このシステムではスクリプトの実行が無効になっています」と言われる。
-
[解決済み] PowerShellでコードをコメントアウトする方法とは?
-
[解決済み] PowerShellで文字列と変数を連結する方法は?
-
[解決済み] 現在のPowerShellスクリプトの場所を特定する最良の方法は何ですか?
-
[解決済み] PowerShellスクリプトに引数を渡すにはどうしたらいいですか?
-
[解決済み] PowerShellでスクリプトを終了させる
-
[解決済み】PowerShellスクリプトを実行する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Invoke-Command エラー "Parameter set cannot be resolved using specified named parameters".
-
[解決済み] Get-ADUser -Identity
-
[解決済み] xPath を使用する Powershell スクリプトの .SelectSingleNode が web.config ファイルから値を抽出する際に動作していない
-
[解決済み] Get-ADUserとフィルタを含むForEach-Objectループ
-
[解決済み] Powershellでパラメータを切り替える
-
[解決済み] PowerShell 'Or' ステートメント
-
[解決済み] Powershell New-ScheduledTaskTrigger -RepetitionIntervalを使った反復タスクの実行
-
[解決済み] グローバル変数名が関数に渡された変数である関数からPowerShellのグローバル変数を設定する
-
[解決済み] PowerShellスクリプトのファイルシステムの場所を取得するにはどうすればよいですか?
-
[解決済み] PowerShellスクリプトから終了コードを返す