gpt4 book ai didi

sql - 使用PowerShell更改Windows防火墙设置,但不显示输出

转载 作者:行者123 更新时间:2023-12-03 01:01:08 25 4
gpt4 key购买 nike

我有一个PowerShell脚本,用于安装SQL Express,然后安装SQL Server Management Studio,最后,用于编辑Windows防火墙设置以允许远程连接到数据库。对于防火墙的更改,我正在运行的行之一是:

New-NetFirewallRule -DisplayName "MSSQL ENGINE TCP" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow

Write-Host 'Windows Firewall configured to allow incoming connections on TCP port 1433'

理想情况下,我希望输出为:
Windows Firewall configured to allow incoming connections on TCP port 1433

相反,我得到:
Caption                 :
Description :
ElementName : MSSQL ENGINE TCP
InstanceID : {752a3c18-298f-4639-a462-4cc5205b1016}
CommonName :
PolicyKeywords :
Enabled : True
PolicyDecisionStrategy : 2
PolicyRoles :
ConditionListType : 3
CreationClassName : MSFT|FW|FirewallRule|{752a3c18-298f-4639-a462-
4cc5205b1016}
ExecutionStrategy : 2
Mandatory :
PolicyRuleName :
Priority :
RuleUsage :
SequencedActions : 3
SystemCreationClassName :
SystemName :
Action : Allow
Direction : Inbound
DisplayGroup :
DisplayName : MSSQL ENGINE TCP
EdgeTraversalPolicy : Block
EnforcementStatus : NotApplicable
LocalOnlyMapping : False
LooseSourceMapping : False
Owner :
Platforms : {}
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
PrimaryStatus : OK
Profiles : 0
RuleGroup :
Status : The rule was parsed successfully from the store. (65536)
StatusCode : 65536
PSComputerName :
Name : {752a3c18-298f-4639-a462-4cc5205b1016}
ID : {752a3c18-298f-4639-a462-4cc5205b1016}
Group :
Platform : {}
LSM : False
Profile : Any

Windows Firewall configured to allow incoming connections on TCP port 1433

有没有一种简便的方法可以消除所有多余的东西,使其无法在PowerShell窗口中显示?我知道我可以创建第二个脚本并提示其在单独的窗口中运行,但是我试图通过一个脚本来完成此任务。

最佳答案

以下内容将禁止命令输出并仍然执行命令:

$null = New-NetFirewallRule -DisplayName "MSSQL ENGINE TCP" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow
Write-Host 'Windows Firewall configured to allow incoming connections on TCP port 1433'

将输出保存到 $null时,将删除输出。

您还可以强制转换为 [void],在某些情况下,它可能比分配给 $null产生更好的性能。
[void](New-NetFirewallRule -DisplayName "MSSQL ENGINE TCP" -Direction Inbound -LocalPort 1433 -Protocol TCP -Action Allow)

无论哪种情况,性能方面的影响都可以忽略不计。您应该 避免在所有情况下都使用Out-Null ,因为这总是很慢。

通常不建议使用 Write-Host,但是由于我不知道您如何调用或执行代码,因此将其保留在那里。如果您在PowerShell控制台中执行此操作,则只需将引号内的文本单独留在一行上即可。

以下是一些性能测试,用于比较这三种方法:

空值:
$list = @() -as [system.collections.arraylist]
measure-command {(1..10000) | Foreach-Object {$list.add($_) | Out-Null} } | Select-Object -Property ticks,totalmilliseconds

Ticks TotalMilliseconds
----- -----------------
6354765 635.4765

[void]:
$list = @() -as [system.collections.arraylist]
measure-command {(1..10000) | Foreach-Object {[void]$list.add($_)} } | Select-Object -Property ticks,totalmilliseconds

Ticks TotalMilliseconds
----- -----------------
1323269 132.3269

$ null:
$list = @() -as [system.collections.arraylist]
measure-command {(1..10000) | Foreach-Object {$null = $list.add($_)} } | Select-Object -Property ticks,totalmilliseconds

Ticks TotalMilliseconds
----- -----------------
1269874 126.9874

关于sql - 使用PowerShell更改Windows防火墙设置,但不显示输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56025162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com