小编Aar*_*ann的帖子

如何在PowerShell中处理命令行参数

处理命令行参数的"最佳"方法是什么?

似乎对"最佳"方式有几个答案,因此我坚持如何处理如下简单的事情:

script.ps1 /n name /d domain
Run Code Online (Sandbox Code Playgroud)

script.ps1 /d domain /n name.
Run Code Online (Sandbox Code Playgroud)

有没有一个可以更好地处理这个问题的插件?我知道我在这里重新发明轮子.

显然我已经不是很漂亮而且肯定不是"最好的",但它确实有效..而且它是UGLY.

for ( $i = 0; $i -lt $args.count; $i++ ) {
    if ($args[ $i ] -eq "/n"){ $strName=$args[ $i+1 ]}
    if ($args[ $i ] -eq "-n"){ $strName=$args[ $i+1 ]}
    if ($args[ $i ] -eq "/d"){ $strDomain=$args[ $i+1 ]}
    if ($args[ $i ] -eq "-d"){ $strDomain=$args[ $i+1 ]}
}
Write-Host $strName
Write-Host $strDomain
Run Code Online (Sandbox Code Playgroud)

powershell command-line-arguments

464
推荐指数
1
解决办法
64万
查看次数

Invoke-SQLCmd具有不同的凭据

背景:我在本地运行一个必须以SYSTEM身份运行的脚本,让我们不了解为什么会这样.:)该脚本尝试使用简单查询检查我的MSSQL集群的运行状况.然而,我遇到的问题是本地SYSTEM帐户无权访问远程数据库.在这一点上,我已经尝试了很多东西,我将在稍后介绍,但我老实说,任何有意义的解决方案.如果这意味着在数据库中创建一个本地帐户,可以回答我的简单查询.

到目前为止我有:

$Server = 'myserver.domain.tld'
$Database = 'myDatabase'
$Query = 'SELECT DB_NAME() AS DataBaseName'
$Username = 'myDomain\myUsername'
$Password = 'myPasswordWithPlainText'
Invoke-SQLCmd -ServerInstance $Server -Database $Database -ConnectionTimeout 300 -QueryTimeout 600 -Query $Query -Username $Username -Password $Password
Run Code Online (Sandbox Code Playgroud)

结果: Invoke-Sqlcmd : Login failed for user 'myDomain\myUsername'

也许Invoke-SQL没有采用我认为的Windows身份验证,但它不使用-Credential.所以我尝试使用Invoke-Command作为包装器.

$Server = 'myserver.domain.tld'
$Database = 'myDatabase'
$Query = 'SELECT DB_NAME() AS DataBaseName'
$Username = 'myDomain\myUsername'
$Password = 'myPasswordWithPlainText'
$secpasswd = ConvertTo-SecureString $Password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($Username, $secpasswd)
Invoke-Command -script {Invoke-SQLCmd -ServerInstance $Server -Database …
Run Code Online (Sandbox Code Playgroud)

sql-server powershell

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

PowerShell通过.NET发送电子邮件后关闭文件/删除文件

我被困在我正在处理的脚本的末尾,在删除之前将文件通过电子邮件发送出去.除了..文件似乎仍然可能被SMTP客户端打开,所以当我尝试删除它时出现错误.当然重启shell会让我删除它,这不是重点.;-)点我想在一个脚本中创建它,通过电子邮件发送,删除它.

错误:

   Cannot remove item C:\Temp\myfile.csv: The process cannot access the file
    'C:\Temp\myfile.csv' because it is being used by another process.
Run Code Online (Sandbox Code Playgroud)

码:

$emailFrom = 'noreply@localhost'
$emailTo = 'aaron@localhost'
$smtpServer = 'localhost'

$FileName='myfile.csv'
$FilePathName='c:temp\' + $FileName

$subject = 'Emailing: ' + $FileName
$body = 'This message as been sent with the following file or link attachments: ' + $FileName

$msg = new-object Net.Mail.MailMessage
$att = new-object Net.Mail.Attachment($FilePathName)
$smtp = new-object Net.Mail.SmtpClient($smtpServer)

$msg.From = $emailFrom
$msg.To.Add($emailTo)
$msg.Subject = $subject
$msg.Body = $body …
Run Code Online (Sandbox Code Playgroud)

.net powershell

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

使用PowerShell或VBS从HTML文件中提取表

我有一个需要修复的两部分问题.我会尽力描述它然后分解我"思考"的步骤.

我想在网页上找到一个特定的表格并通过电子邮件发送给自己.

目前我正在尝试的是使用GNU\Win32 wget.exe(我宁愿本地使用PowerShell,但由于某种原因我不能,也许是因为我使用的方法无法呈现ASPX页面?)使用wget我能够制作ASPX页面的本地html版本.

现在我一直在尝试解析文件并提取特定的表.在这种特殊情况下,表以开头<table border="0" cellpadding="2" cellspacing="2" width="300px">和结尾,</table>并且没有嵌套表.

我在我的问题上抛出一些正则表达式(是的,我知道正则表达式可能不是我需要的工具),但无济于事.

---修改这里是我现在的位置......

$content = (new-object System.Net.WebClient).DownloadString($url)
$found = $content -cmatch '(?si)<table border="0" cellpadding="2" cellspacing="2" width="300px"[^>]*>(.*?)Total Queries</td>(.*?)</tr>(.*?)</table>'
$result = $matches[3]
$result
Run Code Online (Sandbox Code Playgroud)

.net regex windows vbscript powershell

2
推荐指数
1
解决办法
9278
查看次数