Trong cửa sổ PowerShell, tôi đang cố gắng lưu trữ một lệnh di chuyển trong một chuỗi và sau đó thực hiện nó. Ai đó có thể cho tôi biết lý do tại sao điều này không hoạt động?Tại sao tôi không thể thực hiện một lệnh với các đối số từ một chuỗi trong PowerShell?
PS C:\Temp\> dir
Directory: Microsoft.PowerShell.Core\FileSystem::C:\Temp
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 8/14/2009 8:05 PM 2596 sa.csproj
-a--- 8/15/2009 10:42 AM 0 test.ps1
PS C:\Temp> $str = "mv sa.csproj sb.csproj"
PS C:\Temp> &$str
The term 'mv sa.csproj sb.csproj' is not recognized as a cmdlet, function, operable program, or script file. Verify the
term and try again.
At line:1 char:2
+ &$ <<<< str
PS C:\Temp>
Tôi gặp lỗi này khi lưu trữ bất kỳ lệnh nào có đối số. Làm cách nào để vượt qua giới hạn này?
Cảm ơn, làm bạn nghĩ rằng bạn có thể giải thích (hoặc liên kết tới) giải thích về những gì các nhân vật & không? –
'&' là để thực hiện một lệnh, tập lệnh hoặc scriptblock, giống như các trạng thái trợ giúp. Nó không thực hiện bất kỳ phân tích cú pháp nào để nó chỉ chấp nhận một đối số duy nhất mà sau đó được giả định là một lệnh không thể giải mã được. Nếu bạn muốn thêm các tham số, sau đó hoặc là bọc cuộc gọi trong một kịch bản hoặc khối tập lệnh hoặc sử dụng 'Invoke-Expression'. Bạn có thể tìm trang trợ giúp mô tả toán tử bằng cách gõ 'help about_operators' trong Powershell. – Joey