小编tec*_*029的帖子

Powershell Invoke-RestMethod“无法连接到远程服务器”

我编写了一个非常简单的 powershell 脚本来将 json 字符串发布到服务器。当我执行脚本时遇到一个奇怪的问题。

  1. 服务器位于我们的内网内,所有内网服务器的防火墙均已禁用。

  2. 我尝试在不同的地方执行脚本:

    • 我自己的计算机中的 Powershell 窗口(Windows 7、powershel 5)
    • 我的计算机中的 Powershell ISE
    • 在我自己的计算机上的命令提示符中启动 powershell.exe
    • 在我自己的计算机上的第三方命令提示符应用程序中启动 powershell.exe

    • Citrix seesion 中的 Powershell 窗口(Windows 10、powershel 5)

    • 在 Citrix seesion 的命令提示符中启动 powershell.exe

我检查了所有 6 个地方都有 ExecutionPolicy“RemoteSigned”,

但是,我只能成功执行最后 3 个位置的脚本,

在前 3 位,我收到错误

 Invoke-RestMethod : Unable to connect to the remote server
 At F:\Temp\test.ps1:46 char:9
 + $resp = Invoke-RestMethod -Method POST -Body $result ...
 +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 + CategoryInfo          : NotSpecified: (:) [Invoke-RestMethod], 
 WebException
 + FullyQualifiedErrorId : System.Net.WebException,Microsoft.PowerShell.Com
 mands.InvokeRestMethodCommand
Run Code Online (Sandbox Code Playgroud)

此外,我也尝试过Invoke-WebRequest …

powershell invoke-command

6
推荐指数
2
解决办法
4万
查看次数

Powershell SQL Server更新查询

我正在尝试连接到Microsoft SQL数据库并将更改的字段=的任何记录更新为"x".我能够查询数据库但是当我尝试进行更新时,我收到此错误

Fill:使用"1"参数调用"Fill"的异常:"Timeout expired.在操作完成之前经过了超时时间,或者服务器没有响应."

Fill : Exception calling "Fill" with "1" argument(s): "Timeout expired.  The timeout period elapsed prior to completion of the operation or the server is not responding."
Run Code Online (Sandbox Code Playgroud)

目前有大约4000条记录会更新.该脚本在超时前运行约30秒.我已经尝试增加命令超时并获得相同的结果.

sql-server powershell

5
推荐指数
1
解决办法
4万
查看次数

为什么 System.AccessToken 不被识别为 Azure DevOps 版本中 cmdlet 的名称?

我正在 Azure DevOps 中的版本中构建一个任务。在此任务中,我正在运行一个 Powershell 脚本,该脚本需要调用一些 Azure 的 Web API 等,因此我有一个参数可以传入 AccessToken。但我收到以下错误:

System.AccessToken:术语“System.AccessToken”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。

这是我传入的参数的样子。 -AccessToken "$(System.AccessToken)"

为什么会发生这种情况?有解决办法吗?

powershell azure-devops

4
推荐指数
1
解决办法
8865
查看次数

使用Get-PfxCertificate自动签署powershell脚本

我必须使用远程机器上的证书对远程脚本进行签名,我从中获得.pfx文件.

我想通过编程方式为Get-PfxCertificate提供密码来自动化脚本.

所以问题是:

是否有可能以某种方式以编程方式提供所需的密码

GET-PfxCertificate?

powershell certificate

3
推荐指数
1
解决办法
3303
查看次数

Powershell因Update而失败

当我运行Update-Help时,它在powershell中失败.我没有通过代理.这是直接访问.我也在运行Powershell作为管理员.我不知道还有什么可以检查...欢迎任何建议.

这是我的版本.$ PSVersionTable

名称值
---- -----
PSVersion 5.1.14393.187
PSEdition Desktop
PSCompatibleVersions {
1.0,2.0,3.0,4.0 ...} BuildVersion 10.0.14393.187
CLRVersion
4.0.30319.42000 WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1

$PSVersionTable

Name                           Value                                                                                                                                           
----                           -----                                                                                                                                           
PSVersion                      5.1.14393.187                                                                                                                                   
PSEdition                      Desktop                                                                                                                                         
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                         
BuildVersion                   10.0.14393.187                                                                                                                                  
CLRVersion                     4.0.30319.42000                                                                                                                                 
WSManStackVersion              3.0                                                                                                                                             
PSRemotingProtocolVersion      2.3                                                                                                                                             
SerializationVersion           1.1.0.1   
Run Code Online (Sandbox Code Playgroud)

我重申了Update-Help.我认为它更新了大部分内容.我只收到这些错误.

更新帮助:无法使用UI文化更新模块"Microsoft.PowerShell.Operation.Validation"的帮助{en-US}:模块清单中的HelpInfoUri键的值必须解析为容器或存储帮助文件的网站上的根URL.HelpInfoUri'https://www.msn.com/ ? ocid = NEFLS000' 无法解析为容器.在行:1 char:1 + Update-Help + ~~~~~~~~~~~ + CategoryInfo:InvalidOperation :( :) [Update-Help],Exception + FullyQualifiedErrorId:InvalidHelpInfoUri,Microsoft.PowerShell.Commands.UpdateHelpCommand

更新 - 帮助:无法更新具有UI文化的模块"AppvClient"的帮助{en-US}:找不到帮助内容.确保服务器可用,并在HelpInfo XML中正确定义了帮助内容位置.at line:1 char:1 + Update-Help + ~~~~~~~~~~~ + CategoryInfo:ResourceUnavailable:(:) [Update-Help],Exception …

powershell

3
推荐指数
2
解决办法
4242
查看次数

如何在 PowerShell 中将变量设置为范围?

我试图使一个变量等于一个范围。我的脚本包括用户输入,并且该输入必须落在某个范围内。我将在脚本中多次使用该范围,因此我希望它是一个变量。这是我尝试过的:

    $serverrange = "1..18"
Run Code Online (Sandbox Code Playgroud)

我试过了

    $serverrange = 1..18
Run Code Online (Sandbox Code Playgroud)

我已经用谷歌搜索过,但找不到太多关于此的信息。问题是 PowerShell 并不将其视为一个范围,而是将其视为字面上的 1..18。因此,如果我执行 Write-Output $serverrange,它会显示为“1..18”。所以我的问题是如何让它将其视为一个范围,或者如何更改脚本以合并该范围?这是脚本的其余部分:

     #user input for how many servers will be tested
     $numofservers = Read-Host -Prompt "How many servers are being tested?"
     if($numofservers -eq $serverrange) {
     "Proceed"
     } 
     else {
     "Server limit exceeded"
      }
Run Code Online (Sandbox Code Playgroud)

编辑:没有意识到 $serverrange = 1..18 有效。

variables powershell scripting range

3
推荐指数
1
解决办法
7508
查看次数

通过Powershell自动执行SSL FTP上传

我搜索并阅读了很多关于在Powershell中下载SSL FTP文件的信息......但是我如何上传它们?我有一个我需要每天上传的文件名,我收到的错误是我没有登录.我目前正在上传到其他FTP站点,如下所示:$ Filename ="myfile.txt"$ FullPath ="\ server\share\$ Filename"$ ftp ="ftp:// user:pass@ftp.domain.com/$Filename"$ ftpWebClient = New-Object System.Net.WebClient $ ULuri = New-Object System.URI($ ftp)$ ftpWebClient.UploadFile($ ULuri,$ FullPath)

我是否需要为SSL FTP上传创建一个全新的代码块,或者我只是需要对此代码进行微调?

谢谢!

powershell ssl ftpwebrequest

2
推荐指数
2
解决办法
4193
查看次数

PowerShell脚本未压缩正确的文件

 Function Zip
{
    Param
    (
        [string]$zipFile
        ,
        [string[]]$toBeZipped
    )
    $CurDir = Get-Location
    Set-Location "C:\Program Files\7-Zip"
    .\7z.exe A -tzip $zipFile $toBeZipped | Out-Null
    Set-Location $CurDir
}
$Now = Get-Date
$Days = "60"
$TargetFolder = "C:\users\Admin\Downloads\*.*"
$LastWrite = $Now.AddDays(-$Days)
$Files = Get-Childitem $TargetFolder -Recurse | Where {$_.LastWriteTime -le "$LastWrite"}
$Files
Zip C:\Users\Admin\Desktop\TEST.zip $Files
Run Code Online (Sandbox Code Playgroud)

我正在测试我在网上找到的脚本。我的问题是,不是压缩目标文件夹中的文件,而是复制并压缩7-zip程序文件文件夹的内容。是什么原因造成的?提前致谢

powershell scripting zip 7zip target

2
推荐指数
1
解决办法
167
查看次数