2013-07-04 34 views
35

Tôi chạy tập lệnh PowerShell. Làm cách nào để có được đường dẫn thư mục của tập lệnh này mà tôi chạy?Làm cách nào để lấy thư mục của tập lệnh PowerShell mà tôi thực thi?

Cách thực hiện việc này?

+0

nào bạn muốn thư mục làm việc hiện tại của quá trình này? – Bill

+0

Không, tôi muốn biết thư mục nào chứa tập lệnh này. – user2131116

+0

nếu bạn biết tên tệp, bạn có thể sử dụng 'get-childItem' để tìm đường dẫn của nó. http://stackoverflow.com/questions/8677628/recursive-file-search-using-powershell – Bill

Trả lời

109

PowerShell 3 có $PSScriptRootautomatic variable:

Chứa các thư mục mà từ đó một kịch bản đang được chạy.

Trong Windows PowerShell 2.0, biến này chỉ hợp lệ trong các mô-đun tập lệnh (.psm1). Bắt đầu từ Windows PowerShell 3.0, nó hợp lệ trong tất cả các tập lệnh.

Đừng để bị lừa bởi từ ngữ kém. PSScriptRoot là thư mục của tệp hiện tại.

Trong PowerShell 2, bạn có thể tính toán giá trị của $PSScriptRoot mình:

# PowerShell v2 
$PSScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition 
+10

Tại sao bỏ phiếu xuống? Giúp tôi làm cho câu trả lời của tôi tốt hơn. Vui lòng cung cấp phản hồi! –

+2

Tôi là một chút mới để powershell, bạn có thể mở rộng trên $ MyInvocation.MyCommand.Definition? Tôi thấy điều này trong nhiều bài viết và nó có vẻ giống như một trình giữ chỗ, nhưng đối với những gì? – Sinaesthetic

+0

Đồng ý: là 'MyCommand.Definition' một cái gì đó tôi phải gõ hoặc thay thế bằng tên kịch bản của tôi? Tôi chỉ cố gắng tại dấu nhắc lệnh, và tôi không nhận được gì từ điều này? – monojohnny

Các vấn đề liên quan