我最近完成了一个脚本,用于 ping 列表中的每台计算机/工作站并以良好的格式输出。
有数千台计算机需要 ping 下一个列表,因此需要一段时间才能正常运行。我如何能够对其进行多线程处理,以便可以在合理的时间范围内完成这项工作?
[System.Uri]::new('http://www.stackoverflow.com') 失败并显示错误消息
[System.Uri]不包含名为'new'的方法
但是我能够在另一个盒子上找到这个方法.并运行良好.
如何查找PowerShell下加载的System对象之间是否存在差异
我经常编写事物列表并对它们执行枚举以执行一些get/set.
我讨厌枚举哈希表,因为每当我必须这样做时,我必须向后弯曲以处理hashtable对象.
$hashtablelistofitems = @{}
$hashtablelistofitems.add("i'm a key", "i'm a value")
foreach ($item in $hashtablelistofitems.keys) {
$item
$hashtablelistofitems.item($item)
}
Run Code Online (Sandbox Code Playgroud)
相反,我通常会恢复使用具有两个noteproperties的自定义对象的单维数组.
$array = @()
$listofitems = "" | select key,value
$listofitems.key = "i'm a key"
$listofitems.value = "i'm a value"
$array += $listofitems
foreach ($item in $listofitems) {
$item.key
$item.value
}
Run Code Online (Sandbox Code Playgroud)
我为什么要使用hashtable这种方法呢?仅仅因为它只保证每个键的单个值?
如果我在PowerShell ISE编辑器中键入以下行,我在$_变量中的点运算符后得到Intellisense :
Get-ChildItem ATextFile.txt | foreach { $_.FullName }
Run Code Online (Sandbox Code Playgroud)
在这种情况下,$_是一个实例System.IO.FileSystemInfo.编辑器将正确列出此对象中的所有可访问成员.
现在,如果我写:
function GetFile {
return [System.IO.FileInfo]::new(".\ATextFile.txt")
}
GetFile | foreach { $_.FullName }
Run Code Online (Sandbox Code Playgroud)
脚本运行正常,但是在运算符后,Intellisense不起作用$_.
我错过了使IntelliSense正常工作的语法吗?也许是一个注释来"记录"返回值?
如何将Angular 6与.NET Core 2.0 Web API应用程序一起部署到Microsoft Azure?
我创建了ASP.NET Core 2.0 Web API(服务器端应用程序)应用程序,并在其中创建了Angular 6.0应用程序(客户端应用程序).这两个应用程序都在本地环境中成功构建并运行(数据库 - MongoDB:mLab服务器).
现在,我想在一个Web应用程序服务(客户端应用程序和服务器应用程序(Web API)将提供服务)中将带有.net核心Web API应用程序的角度应用程序部署到Azure环境.
但是,我在Azure环境中部署了一个角度应用程序(客户端),但没有使用.net.
azure azure-api-apps azure-app-service-plans asp.net-core-2.0 angular
我有以下脚本从频道 9 下载一些文件:
function Get-Media
{
[CmdletBinding()]
param
(
[Object]
$url,
[Object]
$title,
[Object]
$path
)
$u = New-Object System.Uri($url)
$name = $title
$extension = [System.IO.Path]::GetExtension($u.Segments[-1])
$fileName = $name + $extension
#$fileName = $fileName -replace "’", ''
#$fileName = $fileName -replace "\?", ''
#$fileName = $fileName -replace ":", ''
#$fileName = $fileName -replace '/', ''
#$fileName = $fileName -replace ",", ''
#$fileName = $fileName -replace '"', ''
#$fileName = $fileName -replace '|', ''
#$fileName = $fileName -replace '\#', ''
#$fileName …Run Code Online (Sandbox Code Playgroud) 我有一个简单的函数,有两个参数。我没有提到它们是位置性的,但当我检查该函数的帮助时,它会自动为它们分配一个位置。如何强制它们仅被命名为参数(不接受按位置的值)?
Function Test-Params
{
Param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
$Param1,
[Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)]
$Param2
)
Write-Host "$Param1 $Param2"
}
Run Code Online (Sandbox Code Playgroud)
当我检查此函数的帮助或尝试通过提供参数位置值来运行该函数时,它可以工作(但它不应该工作):
Test-Params test1 test2
test1 test2
Run Code Online (Sandbox Code Playgroud)
帮助输出:
help Test-Params -Full
NAME
Test-Params
SYNTAX
Test-Params [-Param1] <Object> [[-Param2] <Object>] [<CommonParameters>]
PARAMETERS
-Param1 <Object>
Required? true
Position? 0
Accept pipeline input? true (ByValue, ByPropertyName)
Parameter set name (All)
Aliases None
Dynamic? false
-Param2 <Object>
Required? false
Position? 1
Accept pipeline input? true (ByValue, ByPropertyName)
Parameter set name (All)
Aliases None
Dynamic? false
Run Code Online (Sandbox Code Playgroud) 我正在研究PowerShell以及建议调用的网站和书籍Get-Help about_Automatic_Variables,例如,获取返回的自动变量列表.我尝试Get-Help使用以下参数调用,但我总是得到一个返回的cmdlet列表:
我错了什么?
在.Net中,我们可以使用以下机制从连接字符串获取数据源:
System.Data.SqlClient.SqlConnectionStringBuilder builder = new System.Data.SqlClient.SqlConnectionStringBuilder(connectionString);
string server = builder.DataSource;
Run Code Online (Sandbox Code Playgroud)
我试图在 PowerShell 中执行此操作,但出现以下异常:
$ConstringObj = New-Object System.Data.SqlClient.SqlConnectionStringBuilder($conString)
Run Code Online (Sandbox Code Playgroud)
New-Object:使用“1”个参数调用“.ctor”时出现异常:“不支持关键字:‘元数据’。” 在第 1 行:17 + $ConstringObj = New-Object System.Data.SqlClient.SqlConnectionStringBuilder($con ... + ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + 类别信息:无效操作:(:) [新对象],MethodInitationException + FullQualifiedErrorId:ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
如何在 PowerShell 中执行此操作?
$taskExists = Get-ScheduledTask $strTaskName
if($taskExists) {
$taskExists.Description = "a daily Report"
$taskExists | set-scheduledtask -user $strUser -Password $strPassword
}
Run Code Online (Sandbox Code Playgroud)
上面的Power Shell代码是用于更新现有的计划任务。谁能告诉我如何更新触发值?