我的一台服务器出现了一个奇怪的问题:
我正试图用它打开PSsession。 如果我直接在powershell中复制我的脚本一切正常,但如果我通过.ps1文件运行它,我会收到拒绝访问错误。
同样的sript适用于除此之外的多台机器。
添加个人信息:
执行服务器:Server 2012
Target Server2003SP2
另一个Server2003SP2正常运行没有问题
使用以下命令配置客户端服务器:
Enable-PSRemoting -Force
Set-Item wsman:\localhost\client\trustedhosts MY2012Server -concatenate -force
Restart-Service WinRM
错误信息:
New-PSSession : [Server2003SP2] Connecting to remote server Server2003SP2 failed with the following error message : Access is denied. For more information,
Help topic.
At C:\Users\Administrator\Desktop\Script.ps1:23 char:13
+ $Session = New-PSSession -ComputerName $Servername -credential $Cred #-sessionO ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (System.Manageme....RemoteRunspace:RemoteRunspace) [New-PSSession], PSRemotingTransportException
+ FullyQualifiedErrorId : AccessDenied,PSSessionOpenFailed
编辑:我要求的完整SCript:
$Password = "Hereismypasswordwith@and€init"
$Username = "Servername\Administrator"
$Servername = "Servername"
$Language = {
$oscode = Get-WmiObject Win32_OperatingSystem -ErrorAction continue
$oscode = $oscode.oslanguage
$switch = switch ($oscode){
1031 {"Deutsch"};
1033 {"English"};
default {"English"};
}
write-host $switch
return $switch
}
$SecurePassWord = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $Username, $SecurePassWord
$pssessionoption = new-pssessionoption -operationtimeout 7200000 -IdleTimeout 7200000
$Session = New-PSSession -ComputerName $Servername -credential $Cred -sessionOption $pssessionoption
Invoke-Command -Session $Session -Scriptblock $Language
Remove-PSSession -Session $Session
更新:
它似乎是Char编码中的内容。
ps1文件中的密码为其中的€产生不同的输出: 在ps1中。 ¬ 在ps窗口中:?
如果我将密码作为Paramter传递它也可以。
$ password.gethash()也提供不同的输出。代码页虽然(chcp)
是相同的脚本是在notepad ++中创建的
答案 0 :(得分:0)
在没有BOM的情况下从UTC更改/转换为ansi修复了问题.. jesus christ谁想到这样的东西/为什么地狱被设置为这个值..