My Powershell kịch bản, Foo.ps1:Làm thế nào để chạy một kịch bản Powershell từ dòng lệnh và thông qua một thư mục như một tham số
Function Foo($directory)
{
echo $directory
}
if ($args.Length -eq 0)
{
echo "Usage: Foo <directory>"
}
else
{
Foo($args[0])
}
Từ Windows console:
powershell -command .\Foo.ps1
Kết quả trong: "Thuật ngữ '. \ Foo.ps1' không được nhận dạng là tên của lệnh ghép ngắn, hàm, tệp kịch bản hoặc chương trình có thể hoạt động. Hãy kiểm tra chính tả tên hoặc nếu đường dẫn được bao gồm, hãy xác minh rằng đường dẫn là chính xác và thử lại."
Điều này mặc dù Foo.ps1 nằm trong thư mục hiện tại từ nơi tôi đang gọi Powershell. Sau đó tôi đã cố gắng gọi nó là chỉ định đường dẫn đầy đủ đến tệp kịch bản lệnh; bởi vì con đường này chứa một không gian tôi tin rằng tôi phải trích dẫn nó theo một cách nào đó. Ngoài ra tôi cần phải vượt qua một đối số cho kịch bản đó cũng là một tên tập tin có chứa một hoặc nhiều không gian. Không có vấn đề gì tôi cố gắng tôi không thể làm cho nó hoạt động. Đây là tôi đoán tốt nhất cho đến nay:
powershell -command "'C:\Dummy Directory 1\Foo.ps1' 'C:\Dummy Directory 2\File.txt'"
Mà cho lỗi "token bất ngờ. 'C: \ Dummy mục 2 \ File.txt' trong biểu hoặc tuyên bố Tại dòng: 1 char: 136".
Edit: Tôi đã làm việc ra sao
powershell -command .\Foo.ps1
đã không làm việc. Đây là bởi vì tập tin Microsoft.PowerShell_profile.ps1 tôi đã
cd C: \
càng sớm càng PowerShell được khởi động nó đã được thay đổi thư mục.
Bạn cũng có thể sử dụng -NoProfile khi bạn gọi PowerShell từ cmd. – user467384