是否可以使用PHP 将证书和私钥与证书链(根证书和/或中间证)一起导出到.pfx openssl_pkcs12_export()?
更新:我已经看了php openssl扩展的源代码,发现它openssl_pkcs12_export()支持2个args而不是文档中的那些,friendly_name和extracerts.这是来自ext/openssl/openssl.c,查看1914-1920行(PHP-5.4.0):
1878 /* {{{ proto bool openssl_pkcs12_export(mixed x509, string &out, mixed priv_key, string pass[, array args])
1879 Creates and exports a PKCS12 to a var */
1880 PHP_FUNCTION(openssl_pkcs12_export)
1881 {
1882 X509 * cert = NULL;
1883 BIO * bio_out;
1884 PKCS12 * p12 = NULL;
1885 zval * zcert = NULL, *zout = NULL, *zpkey, *args = NULL;
1886 EVP_PKEY *priv_key = NULL; …Run Code Online (Sandbox Code Playgroud) 我有一个简单的应用程序,可以向我们的一些内部用户发送状态电子邮件.
我使用一个简单的应用程序配置文件(App.config)来存储有关预期用户的电子邮件地址和名称信息.由于appSettings部分似乎只支持简单的键/值对,因此它目前看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="toName" value="Recipient Name" />
<add key="toAddr" value="some@email.com" />
<add key="toName2" value="Another Recipient Name" />
<add key="toAddr2" value="another@email.com" />
<add key="ccName" value="An Archive"/>
<add key="ccAddr" value="copies@email.com"/>
<add key="ccName2" value="Another Archive"/>
<add key="ccAddr2" value="morecopies@email.com"/>
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
然后我在代码中单独添加每个收件人.
目前,这意味着每次添加或删除收件人时,我还需要重写代码以处理新收件人并重建和重新部署应用程序
我希望能够存储自定义配置条目,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<recipients>
<recipient recType="to" recAddr="some@email.com" recName="Recipient Name" />
<recipient recType="to" recAddr="another@email.com" recName="Another Recipient Name" />
<recipient recType="cc" recAddr="copies@email.com" recName="An Archive"/>
<recipient recType="cc" recAddr="morecopies@email.com" recName="Another Archive"/>
</recipients>
</configuration>
Run Code Online (Sandbox Code Playgroud)
所以我可以遍历它们:
MailMessage message …Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来停止和启动两个远程服务器中的服务.这是我的问题,
在我的脚本中,我做了new-pssession并使用invoke-command来停止和启动服务.
我需要使用enter-pssession吗?
更新: 这是我的脚本需要做的事情.
在server1上,我需要停止并启动两个服务.在server2上,我需要停止并启动一项服务.
# foreach for server 1 since I need to stop and start two services. created a session for server 1
foreach($service in $services){
$session = New-PSSession -ComputerName $serverName -Credential $cred
Invoke-Command -Session $session -ScriptBlock {param($service) Stop-Service -Name $service} -ArgumentList $service
remove-pssession -session $session
}
# created a session for server 2. I need to stop and start just one service in server 2
$session = New-PSSession -ComputerName $serverName -Credential $cred
Invoke-Command -Session $session -ScriptBlock …Run Code Online (Sandbox Code Playgroud) 嗨,我正在尝试运行一个脚本,将网络中的用户放入一个数组中,以便将它与我将要获取的其他数据(例如通讯组)一起输出到 csv 文件。
我正在运行的代码脚本出现错误:
方法调用失败,因为 [System.Management.Automation.PSObject] 不包含名为“op_Addition”的方法。
该脚本是一个简单的 for 循环:
$ActiveDirectoryList=@()
$UserDetails = get-aduser -filter {enabled -eq $true} -properties * | Select DisplayName,EmailAddress, SAMAccountName
$counter = 0
foreach($User in $UserDetails){
$ActiveDirectoryList = New-Object PSObject
$Users = get-aduser $User.SAMAccountName -properties *
if(!$Users.EmailAddress -eq ""){
$counter++
$ActiveDirectoryList | Add-Member -MemberType NoteProperty -Name "DisplayName" -Value $Users.DisplayName
$ActiveDirectoryList | Add-Member -MemberType NoteProperty -Name "Email Address" -Value $Users.EmailAddress
write-host $Users.DisplayName
$ActiveDirectoryList+=$ActiveDirectoryList
}
}
Run Code Online (Sandbox Code Playgroud)
尝试在互联网上寻找解决方案,但他们似乎没有解决任何问题。
$data = @("server1","server2","server3")
foreach ($server in $data) {
$results = (Test-Connection $server -count 1 | Measure-Object -Property ResponseTime -Average).Average
}
Run Code Online (Sandbox Code Playgroud)
我试图弄清楚如何获取 ForEach 的输出并将结果存储到数组中,以便稍后可以比较它们。我还想不出办法来做到这一点。
我正在尝试将一个文件夹划分为最大大小为 8 GB 的文件夹。
起始文件夹:
Folder 1
2KB file
2GB file
7GB file
Folder 2
1GB file
5.6GB file
Folder 3
8GB file
Run Code Online (Sandbox Code Playgroud)
我想把它变成:
Folder A (~7.6GB)
Folder 1
2KB file
2GB file
Folder 2
5.6GB file
Folder B (8GB)
Folder 1
7GB file
Folder 2
1GB file
Folder C (8GB)
Folder 3
8GB file
Run Code Online (Sandbox Code Playgroud)
目标是您可以组合文件夹并获取原始文件夹的结构。
使用 powershell 可以实现这样的功能吗?我已经看到了一些使用 bash 和 dirsplit 的解决方案,但我真的很想将其保留在 powershell 中,除非有一些现有软件的简单干净的解决方案。
我忘记补充一点,文件夹可能不仅包含文件,有时还包含文件夹。有没有一种解决方案可以在一定程度上递归地执行此操作?
考虑到我没有经常使用 powershell,感觉好像我错过了一些东西。
我发现的一切看起来都很复杂.这几乎就像我只需要阅读一个文本文件.
ADAP.ini包含这个,没有别的:
http://xxx.104.xxx.226
APP=2.3.6
DLL=2.3.6
Run Code Online (Sandbox Code Playgroud)
使用Powershell,我如何阅读APP =值是什么?和/或DLL =值是什么?
我会将值存储在变量中,稍后在Powershell脚本中使用它.
我有一个查询,例如当我尝试执行包含带空格的路径的表达式时,出现如下错误。
代码:
$path="E:\Test\My space\Log"
Invoke-Expression $path
E:\Test\My: The term 'E:\test\My' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ E:\Test\My space\Log
+ ~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (E:\Test\My :String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
Run Code Online (Sandbox Code Playgroud)
你能帮我解决这个问题吗?
有一种涉及子分类的情况我无法弄清楚。
我正在进行子分类Random(原因超出了重点)。这是我所拥有的一个基本示例:
import random
class MyRandom(random.Random):
def __init__(self, x): # x isn't used here, but it's necessary to show the problem.
print("Before")
super().__init__() # Nothing passed to parent
print("After")
MyRandom([])
Run Code Online (Sandbox Code Playgroud)
上面的代码在运行时给出以下错误(并且不打印“Before”):
>>> import test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\_\PycharmProjects\first\test.py", line 11, in <module>
MyRandom([])
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
对我来说,这没有任何意义。不知何故,即使我没有传递它,参数MyRandom显然也被直接传递给Random.__init__,并且该列表被视为种子。"Before"从不打印,所以显然我的初始化器甚至从未被调用。
我认为这可能是由于Random在 C 中实现的父级造成的,这导致了奇怪的情况,但是list子类化的类似情况不会产生错误,指出整数不可迭代:
class MyList(list):
def __init__(self, y):
print("Before")
super().__init__()
print("After") …Run Code Online (Sandbox Code Playgroud) 我有一个XML文档,如下所示:
<Task>
<Settings>
</Settings>
<Sub>foo</Sub>
<Body>bar</Body>
</Task>
Run Code Online (Sandbox Code Playgroud)
从PowerShell我可以愉快地使用以下内容获取'Sub'和'Body'的内容:
$Body = $XMLFile.Task.Body
Run Code Online (Sandbox Code Playgroud)
但我试图完全删除'Sub'和'Body'标签,因此XML将是:
<Task>
<Settings>
</Settings>
</Task>
Run Code Online (Sandbox Code Playgroud)
我已经尝试了很多东西,包括:
.RemoveChild()方法(抛出与Object引用相关的exeption)甚至将文件作为文本文件打开并尝试:
Get-Content $_.FullName -notmatch "<Sub>" | out-file $_.FullName
^^这什么都不做
此外,对于此脚本应用程序,我将无法使用任何第三方模块