Tôi đang làm việc với PowerShell, chạy một kịch bản (từ giao diện điều khiển của tôi) trong đó bao gồm dòng này:Tôi cần giúp đỡ để hiểu các vấn đề bảo mật truy cập PowerShell và tập tin
$inpath = "C:\users\xxxxx\path\foo\bar"
và tôi tiếp tục nhận được lỗi này:
Get-Content : Access to the path 'C:\users\xxxxx\path\foo\bar' is denied.
At C:\users\xxxxx\path\foo\testscript.ps1:53 char:12
+ Get-Content <<<< $txtfile | Get-WordCount -Exclude (Get-Content c:\temp\exclude.txt) | select -First 15
+ CategoryInfo : PermissionDenied: (C:\users\xxxxx\path\foo\bar:String) [Get-Content], UnauthorizedAcc
essException
+ FullyQualifiedErrorId : GetContentReaderUnauthorizedAccessError,Microsoft.PowerShell.Commands.GetContentCommand
Tất cả tập lệnh và tệp đích đều nằm trên ổ đĩa cục bộ của tôi. Tôi có thể truy cập các tệp trong Explorer, xem/chỉnh sửa/lưu chúng bằng cách sử dụng NotePad và không có bất kỳ hạn chế quyền nào được đặt. Khi tôi đang ở trên dòng lệnh, tôi có thể chạy lệnh ghép ngắn get-content
thành công trên các tệp trong đường dẫn của tôi. Tôi có thể thay đổi các thư mục PS C:> cd C:\users\xxxxx\path\foo\bar
và liệt kê danh sách thành công ở đó. Thậm chí thú vị hơn, tôi có thể nhân đôi dòng đó là lỗi trong kịch bản, và không nhận được một lỗi trên dòng lệnh.
PS C:\users\xxxxx\path\foo> $inpath = "C:\users\xxxxx\path\foo\bar"
PS C:\users\xxxxx\path\foo>
Điều này khiến tôi nghi ngờ rằng lỗi 'Bị từ chối' thực sự là điều gì đó khác, hoặc điều gì đó mơ hồ đến mức tôi không biết cách xử lý khắc phục sự cố. Có thể cho PS có các quyền khác với người dùng mà nó đang chạy không? Có ai đã từng xem hành vi này trước đây không và bạn đã giải quyết vấn đề như thế nào? Tôi chắc rằng có một giải pháp đơn giản mà tôi không biết.
Làm thế nào bạn có đang chạy kịch bản và với những gì cho phép? Một công việc trong Task Scheduler? Tập lệnh có hoạt động nếu bạn gọi tập lệnh từ bảng điều khiển không? –
Bạn đang cố gắng đọc tệp nào? (Nó hoàn toàn có thể có quyền truy cập vào một thư mục nhưng không phải là tệp chứa.) – Richard
@Graimer - tập lệnh đang chạy từ bảng điều khiển; không chắc chắn về các quyền mà tập lệnh có, cách tìm hoặc cách đặt chúng nếu chúng khác với quyền người dùng của tôi. Nó không hoạt động từ giao diện điều khiển AS A SCRIPT (ví dụ: PS c: \ foo>. \ Script.ps1), nhưng nó hoạt động nếu tôi gõ dòng riêng lẻ làm dấu nhắc giao diện điều khiển. – dwwilson66