相关疑难解决方法(0)

在PowerShell中写入控制台的最佳方法

我对打印(回显)到控制台的各种方法有点困惑.我已经看到有多种方法可以将输出写入控制台,例如:

Write-Host "Hello world1"
"Hello World2"
Out-Host -InputObject "Hello World3"
Run Code Online (Sandbox Code Playgroud)

这三种方式都将打印到控制台.中间的一个更简单,更简洁,更容易使用.我还发现当你编写一个函数时:

function GetValues()
{
    "1"
    "2"
}
Run Code Online (Sandbox Code Playgroud)

它仍然在管道中返回两个字符串:

我仍然可以打印出值:

foreach ($s in GetValues)
{
    Write-Host "s: " $s
}
Run Code Online (Sandbox Code Playgroud)

我发现的事情是,仅使用引用的字符串并不总是出现在自定义主机上,而且我必须使用Write-Host来获取要在自定义主机上打印的值.

不知怎的,我发现这令人困惑.被"Print something"认为是一个别名Write-Host或有什么意图?

powershell

135
推荐指数
2
解决办法
31万
查看次数

OpenSSL和读取openssl.conf文件时出错

我正在运行Windows XP 32位

我刚刚从以下URL下载了Openssl并安装了它. http://www.slproweb.com/products/Win32OpenSSL.html

然后我尝试使用以下命令创建自签名证书

openssl req -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
Run Code Online (Sandbox Code Playgroud)

然后它开始给出以下错误

无法从/usr/local/ssl/openssl.cnf加载配置信息

然后谷歌搜索后我改变了上面的命令

openssl req -config C:\OpenSSL\bin\openssl.conf -x509 -days 365 -newkey rsa:1024 -keyout hostkey.pem -nodes -out hostcert.pem
Run Code Online (Sandbox Code Playgroud)

但现在我在命令提示符中收到以下错误

C:\ OpenSSL\bin\openssl.conf的第-1行错误
4220:错误:02001002:系统库:fopen:没有这样的文件或目录:.\ crypto\bio\bss_file.c:126:fopen('C:\OpenSSL\bin\openssl.conf','rb')4220:错误:2006D080:BIO例程:BIO_new_file:没有这样的文件:.\ crypto\bio\bss_file.c:129:
4220:错误:0E078072:配置文件例程:DEF_LOAD:没有这样的文件:.\ crypto\conf\conf_def.c:197:

请帮忙.提前致谢.

windows configuration openssl environment-variables

113
推荐指数
9
解决办法
30万
查看次数

PowerShell中echo和Write-Host有什么区别?

我对PowerShell echoWrite-HostPowerShell 之间的区别感到困惑.我有两个文件,POC.ps1&validatePath.ps1.这些文件在我的本地计算机上,我正在使用远程计算机上运行它们Invoke-Command.我使用的是PowerShell v3.0.

要执行这两个脚本,我使用命令:

.\POC.ps1 -filename C:\Users  -user Blaine
Run Code Online (Sandbox Code Playgroud)

这是两个文件:

POC.ps1:

param($filename, $user)

echo $filename
echo "This"
echo $user

$responseObject = Invoke-Command testcomputer -FilePath .\validatePath.ps1  -ArgumentList($filename, $user) -AsJob

while($responseObject.State -ne "Completed")
{

}

$result = Receive-Job -Id $responseObject.Id -Keep
echo $result
Run Code Online (Sandbox Code Playgroud)

这是事情变得奇怪的地方......

validatePath.ps1:

Param([string] $filename,
      [string] $user)

function ValidatePath( $filename, $user, $fileType = "container" )
{
    Write-Host "This is the file name: $filename"
    Write-Host "This is user: $user"  <--- Notice …
Run Code Online (Sandbox Code Playgroud)

.net windows powershell

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

Wscript.Shell Exec 中的“编码”一词确实会阻止 powershell 脚本运行。我能做什么?

在接近疯狂的一天之后,为什么我的脚本不能处理客户提供的数据,我想通了,是我的命令中用双引号和单引号括起来的某个地方的“编码”这个词阻止了 Wscript。 Shell 从打开 powershell(其中命令按预期工作)。德语的特征是通过添加“n”来附加“Marke”和“Code”等单词,因此“Markencode”允许包含“encode”的大量单词。:/

我创建了一些最小的 vba 示例来显示问题。有谁知道解决方法?

Option Explicit
Const HK = """"

Sub ScanDrive()
    Dim s As String, command As String
    Dim oExec As Object
    command = "echo 'encode'"
    Debug.Print (command)
    Set oExec = CreateObject("Wscript.Shell").Exec("powershell.exe -command " & HK & command & HK)
    
    Do While oExec.Status = 0
       Application.Wait (Now + TimeValue("0:00:01"))
    Loop
    Debug.Print (oExec.ExitCode)
    s = oExec.StdOut.ReadAll
    Debug.Print (s)
End Sub
Run Code Online (Sandbox Code Playgroud)

输出为(Excel 中的 VBA 版本 7.1.1108):

echo 'encode'
-536870873 


Run Code Online (Sandbox Code Playgroud)

不幸的是,我找不到该退出代码的任何内容。顺便说一句......放入“解码”而不是“编码”工作正常。

powershell vba wscript.shell

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