簡體   English   中英

如果您不知道要運行的位置,如何運行 powershell 腳本?

[英]How can you run a powershell script if you do not know the location is will be run from?

我是powershell的新手,所以這可能只是我不理解某些東西。

我正在 powershell 中編寫一個工具,並且該工具在 c:\Users\Documents\WindowsPowerShell\Modules 中工作。

我想要的是能夠將該工具復制到 U 盤並從 U 盤運行它。

如果該工具不在 PSModulePath 環境變量路徑中,如何讓該工具運行?

或者如何添加添加到 PSModulePath 路徑的 U 盤?

如果您希望您的腳本是可移植的,您還必須隨身攜帶相關模塊。 但是,在您的腳本中,您可以確保將 USB 上模塊父目錄的完整路徑添加到PSModulePath作為進程級環境變量:

$portableModuleDirectory = [System.IO.DirectoryInfo]'./relative/path/to/dependent/module'
$env:PSModulePath += ";$(Split-Path -Parent $portableModuleDirectory.FullName)"
Import-Module ModuleName

然而,這很麻煩。 這里最好的解決方案是托管您自己的內部 nuget 提要以將您的包推送到,因此如果您無法將模塊上傳到公共PowerShell 庫(其中您應該托管自己的 feed/squid 代理以滿足業務需求)。

謝謝您的幫助。 我有一個解決方案,它通過將以下內容放在 .ps1 腳本中並使用它來導入依賴模塊並調用第一個函數。

#find local directory 
$LocalDir = Split-Path $MyInvocation.MyCommand.Path -Parent

#prove correct directory found.
Write-Host "Starting module load: $($MyInvocation.MyCommand) in directory = $LocalDir"
#load modules
Import-Module $LocalDir/Module –Force

#call first function
firstfunction

我無法讓$PSScriptRoot工作,但Split-Path $MyInvocation.MyCommand.Path –Parent代碼的優勢在於它也適用於 ISE。 然后我將依賴模塊放在 .ps1 腳本下面的目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM