我正在尝试在我公司设置一个Endpoint-Server,并且正在努力连接它。为了测试,我在全局模块路径中放置了一个RcLogUtil模块
C:\ Windows \ System32下\ WindowsPowershell \ V1.0 \模块\ RcLogUtil \ 的
导出功能
'Out-LogToEventLog','New-LogMessage'
计划是让一组特定的用户只访问那些日志记录功能。
我创建了SessionConfiguration:
New-PSSessionConfigurationFile -Path C:\Scripts\LoggerEp.pssc `
-SessionType RestrictedRemoteServer `
-LanguageMode FullLanguage `
-ExecutionPolicy Unrestricted `
-ModulesToImport 'RcLogUtil' `
-VisibleFunctions 'Out-LogToEventLog' `
-VisibleCmdlets 'Split-Path'
注册:
Register-PSSessionConfiguration -Path C:\Scripts\LoggerEp.pssc `
-Name loggerep `
-ShowSecurityDescriptorUI
然后在我的本地机器上输入:
[W0216]> Enter-PSSession -ComputerName mka-ps-endpoint -ConfigurationName loggerep
Enter-PSSession:处理模块时发生了一个或多个错误 'RcLogUtil'在用于创建的InitialSessionState对象中指定 这个运行空间。有关完整列表,请参阅ErrorRecords属性 错误。第一个错误是:无法识别术语“拆分路径” 作为cmdlet,函数,脚本文件或可运行程序的名称。 检查名称的拼写,或者如果包含路径,请验证 路径是正确的,然后再试一次。在行:1个字符:1 + Enter-PSSession -ComputerName mka-ps-endpoint -ConfigurationName loggerep + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:OpenError:(:) [Enter-PSSession],RunspaceOpenModuleLoadException + FullyQualifiedErrorId:ErrorLoadingModulesOnRunspaceOpen
现在的一个大问题是..为什么Session无法找到Split-Path?或者我如何告诉端点加载该特定cmdlet?
我成功地使用SessionType ='Default'尝试了相同的功能,但它的工作原理却与所有的PowerShell混杂在一起。
我真的很赞赏我能得到的任何帮助,因为我已经坚持了很长一段时间了。
谢谢!
答案 0 :(得分:0)
在创建时,可以使用 -SessionType默认和 -ScriptsToProcess'C:\ Scripts \ LoggerEpStartup.ps1'参数预先禁用每个cmdlet。 SessionConfiguration。
New-PSSessionConfigurationFile -Path C:\Scripts\LoggerEp.pssc `
-SessionType Default `
-LanguageMode FullLanguage `
-ExecutionPolicy Unrestricted `
-ModulesToImport 'RcLogUtil' `
-VisibleFunctions 'Out-LogToEventLog' `
-ScriptsToProcess 'C:\Scripts\LoggerEpStartup.ps1'
C:\脚本\ LoggerEpStartup.ps1:的
# Commands needed by PSSession (Also the commands used when
# creating a RestrictedRemoteServer )
$CmdsToExclude = @(
'Get-Command' , 'Out-Default' ,
'Exit-PSSession', 'Measure-Object',
'Select-Object' , 'Get-FormatData'
)
# Hide any other commandlets except the ones needed
# to create a remote session
Get-Command | Where Visibility -eq 'Public' | ForEach-Object {
if ( $_.Name -notin $CmdsToExclude ) {
$_.Visibility = 'Private'
}
}
但是我想避免这种情况,因为它似乎更像是一种笨拙的解决方法,而不是一种正确的解决方案。