2010-06-06 35 views
5

Làm cách nào để sử dụng chức năng trong cấu hình của tôi trên máy từ xa khi sử dụng Enter-PSSession trên máy cục bộ để mở phiên PowerShell từ xa.Powershell Remoting Profiles

+0

bất kỳ giải pháp cuối cùng nào có mã nguồn đầy đủ? – Kiquenet

Trả lời

-1

Bạn không thể. Khi bắt đầu một phiên tương tác từ xa với enter-pssession, một cấu hình từ xa được nạp. Ngoài ra, chỉ có cấu hình mức máy trong $ pshome được tải. Nếu bạn muốn có các chức năng từ xa, bạn sẽ phải khởi tạo chúng trong kịch bản khởi động của cấu hình phiên làm việc từ xa. Có một cái nhìn tại get/set-pssessionconfiguration trên máy chủ từ xa.

+0

Có điều gì đó thay đổi theo cách mà những thứ này được xử lý không? Tôi đang với PowerShell 5.1 và tôi đã tạo một profile.ps1 trong C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ chỉ để thiết lập một bí danh, mà đang làm việc khi sử dụng shell cục bộ. Nhưng khi kết nối với máy đó bằng cách sử dụng Enter-PSSession, bí danh không hoạt động ... – Alex

+0

@Alex Có lẽ bạn có thể cần khởi động lại dịch vụ WinRM ở cuối máy chủ? Một khởi động lại nên làm điều đó, nhưng nếu đây là một chút nặng sau đó "khởi động lại dịch vụ winrm" nên làm việc. Hoặc, mọi thứ có thể đã thay đổi khi bạn nói ... – x0n

15

By JonZ và x0n:

Khi bạn sử dụng pssessions với các cấu hình phiên mặc định, không có kịch bản hồ sơ chạy.

Khi bắt đầu phiên tương tác từ xa với Enter-PSSession, cấu hình từ xa được tải. Ngoài ra, chỉ có cấu hình mức máy trong $pshome được tải.

Nếu bạn muốn có một phiên để được cấu hình sẵn (để tải các chức năng tùy chỉnh, snap-in, mô-đun, vv), thêm một kịch bản hồ sơ đến một mới sessionconfiguration (đối với khởi tạo chúng trong kịch bản khởi động của cấu hình phiên từ xa).

Lệnh ghép ngắn Register-PSSessionConfiguration tạo và đăng ký cấu hình phiên mới trên máy tính cục bộ. Sử dụng Get-PSSessionConfiguration để xem cấu hình phiên hiện tại. Cả Get-PSSessionConfiguration và Register-PSSessionConfiguration đều yêu cầu quyền nâng cao (bắt đầu PowerShell với tùy chọn “Run as Administrator”).

Trong máy tính mục tiêu, nơi profile.ps1 chứa tất cả các chức năng của bạn:

Register-PSSessionConfiguration -Name WithProfile -StartupScript $PsHome\Profile.ps1 

Để sử dụng phiên cấu hình này bạn sẽ gõ, từ máy tính cục bộ:

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile 

hoặc

Enter-PSSession -ComputerName $computername -ConfigurationName WithProfile -Credential [email protected] 

(trong đó $computername là tên máy chủ của máy chủ mote nơi bạn đăng ký pssessionconfiguration).

Một nguồn tốt trên PowerShell remoting là Administrator's Guide to Powershell Remoting.

Tài liệu tham khảo:
Powershell Remoting: Use Functions loaded in Powershell remote Profile? http://jrich523.wordpress.com/2010/07/21/update-creating-a-profile-for-a-remote-session/

Hiểu và Sử dụng PowerShell Profiles
http://blogs.technet.com/b/heyscriptingguy/archive/2013/01/04/understanding-and-using-powershell-profiles.aspx

Sáu đường dẫn hồ sơ Windows PowerShell khác nhau và sử dụng

Sử dụng hiện tại r, hiện tại Host - console
$ Hay Tài Liệu [My] \ WindowsPowerShell \ Profile.ps1

Current User, tất cả các máy chủ
$ Home [My] Documents \ Profile.ps1

Tất cả người dùng, hiện tại host - console
$ PsHome \ Microsoft.PowerShell_profile.ps1

All Users, tất cả các máy chủ
$ PsHome \ Profile.ps1

người dùng hiện tại, hiện tại Host - ISE
$ Home [My] Documents \ WindowsPowerShell \ Microsoft.PowerShellISE_profile.ps1

Tất cả người dùng, máy chủ hiện tại - ISE
$ PsHome \ Profiles Microsoft.PowerShellISE_profile.ps1

Windows PowerShell
http://msdn.microsoft.com/en-us/library/bb613488%28VS.85%29.aspx

Tiểu sử này áp dụng cho tất cả người dùng và tất cả các trình bao.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ profile.ps1

hồ sơ này áp dụng cho tất cả người dùng, nhưng chỉ trong vỏ Microsoft.PowerShell.
% windir% \ system32 \ WindowsPowerShell \ v1.0 \ Microsoft.PowerShell_profile.ps1

Hồ sơ này chỉ áp dụng cho người dùng hiện tại, nhưng ảnh hưởng đến tất cả vỏ.
% UserProfile% \ My Documents \ WindowsPowerShell \ profile.ps1

Hồ sơ này chỉ áp dụng cho người dùng hiện tại và vỏ Microsoft.PowerShell.
% UserProfile% \ My Documents \ WindowsPowerShell \ Microsoft.PowerShell_profile.ps1

+0

"Ngoài ra, chỉ có cấu hình mức máy trong $ pshome được tải." Điều này đã thay đổi tại một số điểm? Với Windows 8.1 và WIndoes Server 2012, Enter-PSSession không chạy bất kỳ hồ sơ Powershell nào trên máy mục tiêu. –

+0

@GreenstoneWalker - Tôi cũng thấy điều này. Với một máy chủ Win 2008 R2/PS 3.0. – smaglio81

+0

Nếu bạn không muốn phụ thuộc vào phiên bản hoặc ngôn ngữ cửa sổ cụ thể, hãy sử dụng: '[Environment] :: GetFolderPath ('MyDocuments')' – mtman

4

Jason, Trong trường hợp của tôi, tôi muốn có Powershell Hồ sơ của tôi theo tôi khi tôi truy cập từ xa vào máy tính khác.

Tôi đã tạo chức năng trình bao bọc Từ xa có tên máy tính, tạo phiên, tải hồ sơ của bạn vào phiên và sử dụng enter-pssession.

Đây là đoạn mã dưới đây:

function Remote($computername){ 
if(!$Global:credential){ 
$Global:credential = Get-Credential 
} 
$session = New-PSSession -ComputerName $computername -Credential $credential 
Invoke-Command -FilePath $profile -Session $session 
Enter-PSSession -Session $session 
} 

Bạn có thể sửa đổi các tham số Invoke-Command -FilePath thực hiện bất kỳ tập tin của ý thích của bạn.

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