我编写了一个非常简单的 powershell 脚本来将 json 字符串发布到服务器。当我执行脚本时遇到一个奇怪的问题。
服务器位于我们的内网内,所有内网服务器的防火墙均已禁用。
我尝试在不同的地方执行脚本:
在我自己的计算机上的第三方命令提示符应用程序中启动 powershell.exe
Citrix seesion 中的 Powershell 窗口(Windows 10、powershel 5)
我检查了所有 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 …
我正在尝试连接到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秒.我已经尝试增加命令超时并获得相同的结果.
我正在 Azure DevOps 中的版本中构建一个任务。在此任务中,我正在运行一个 Powershell 脚本,该脚本需要调用一些 Azure 的 Web API 等,因此我有一个参数可以传入 AccessToken。但我收到以下错误:
System.AccessToken:术语“System.AccessToken”不被识别为 cmdlet、函数、脚本文件或可操作程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
这是我传入的参数的样子。
-AccessToken "$(System.AccessToken)"
为什么会发生这种情况?有解决办法吗?
我必须使用远程机器上的证书对远程脚本进行签名,我从中获得.pfx文件.
我想通过编程方式为Get-PfxCertificate提供密码来自动化脚本.
所以问题是:
是否有可能以某种方式以编程方式提供所需的密码
GET-PfxCertificate?
当我运行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 …
我试图使一个变量等于一个范围。我的脚本包括用户输入,并且该输入必须落在某个范围内。我将在脚本中多次使用该范围,因此我希望它是一个变量。这是我尝试过的:
$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 有效。
我搜索并阅读了很多关于在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上传创建一个全新的代码块,或者我只是需要对此代码进行微调?
谢谢!
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 ×8
scripting ×2
7zip ×1
azure-devops ×1
certificate ×1
range ×1
sql-server ×1
ssl ×1
target ×1
variables ×1
zip ×1