我正在尝试使用PowerShell远程处理从远程域中的服务器检查某些磁盘大小,但我运行的命令无法正常工作.
情况是这样的:
域B中的服务器正在运行Exchange 2010,我可以使用此命令从服务器A对其运行Exchange 2010特定命令:
$Session = New-PSSession -ConfigurationName Microsoft.Exchange –ConnectionUri $ConnectionURI -Credential $Credentials -Authentication Basic
Import-PSSession $Session
Run Code Online (Sandbox Code Playgroud)
问题是我无法使用此会话对此服务器运行任何非Exchange命令,如果我尝试然后它说它无法理解命令.我已经检查并使用Invoke-Command运行Get-Command,并且设置为我建立的会话的-Session变量仅返回Exchange命令.
所以我想我会尝试使用Invoke-Command和相关的ComputerName,身份验证类型和凭据,但这是失败的:
Invoke-Command -ScriptBlock {Get-Service} -ComputerName "Servername.destination.com" -Credential $Credentials -Authentication "Basic"
Run Code Online (Sandbox Code Playgroud)
这是错误:
[servername.destination.com] Connecting to remote server failed with the following error message : The WinRM client can
not process the request. The authentication mechanism requested by the client is not supported by the server or unencry
pted traffic is disabled in the service configuration. Verify the unencrypted traffic …
Run Code Online (Sandbox Code Playgroud) 我真的很喜欢这里的一些建议,提供一些背景信息我正在使用将Exchange 2007中的邮件跟踪日志插入SQL.由于我们每天有数百万行,我使用Bulk Insert语句将数据插入到SQL表中.
实际上我实际上是Bulk Insert到一个临时表中,然后从那里我将数据合并到实时表中,这是用于测试解析问题,因为某些字段否则有引号等值.
这种方法效果很好,但收件人地址列是由a分隔的分隔字段的事实除外; 角色,有时可能会非常长,因为可能有很多电子邮件收件人.
我想采用这一列,并将值拆分为多行,然后将其插入另一个表中.问题是我正在尝试的任何事情要么花费太长时间,要么不按我想要的方式工作.
以此示例数据为例:
message-id recipient-address
2D5E558D4B5A3D4F962DA5051EE364BE06CF37A3A5@Server.com user1@domain1.com
E52F650C53A275488552FFD49F98E9A6BEA1262E@Server.com user2@domain2.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com user3@domain3.com;user4@domain4.com;user5@domain5.com
Run Code Online (Sandbox Code Playgroud)
我希望在我的收件人表格中将其格式化为:
message-id recipient-address
2D5E558D4B5A3D4F962DA5051EE364BE06CF37A3A5@Server.com user1@domain1.com
E52F650C53A275488552FFD49F98E9A6BEA1262E@Server.com user2@domain2.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com user3@domain3.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com user4@domain4.com
4fd70c47.4d600e0a.0a7b.ffff87e1@Server.com user5@domain5.com
Run Code Online (Sandbox Code Playgroud)
有没有人对我如何做到这一点有任何想法?
我非常了解PowerShell,所以我尝试了,但即使在28K记录上的foreach循环也需要永久处理,我需要能够尽可能快速/高效地运行的东西.
谢谢!
我一直用这个把头撞在墙上,并且一直在谷歌上搜索无济于事。
我刚刚开始一个新的 ASP.NET Core MVC 项目,我已将这两个包安装/更新为 2.2.0:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
Run Code Online (Sandbox Code Playgroud)
我已将项目设置为期望 .NET Core 2.2.0。
我能够在包管理器控制台中使用此命令成功添加表架构以构建数据库,因此我知道连接字符串正常/工作:
Scaffold-DbContext "SERVER=Server\Instance;DATABASE=Database;UID=user;PWD=password;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables Table1, Table2, Table3
Run Code Online (Sandbox Code Playgroud)
创建的模型文件DatabaseDBContext.cs
如下所示:
public partial class DatabaseDBContext : DbContext
{
public DatabaseDBContext()
{
}
public DatabaseDBContext(DbContextOptions<DatabaseDBContext> options)
: base(options)
{
}
}
Run Code Online (Sandbox Code Playgroud)
这还包含一种用于检索我的脚手架数据的方法,但对于生产使用来说不被认为是安全的,因此我将其注释掉:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("SERVER=Server\\Instance;DATABASE=Database;UID=user;PWD=password;");
}
}
Run Code Online (Sandbox Code Playgroud)
我将相同的连接字符串添加到appsettings.json
文件中:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"DBConnString": "SERVER=Server\\Instance;DATABASE=Database;UID=user;PWD=password;"
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将其添加DbContext …
我最近一直在考虑的事情,我想要Stack Overflow的好人提供一些意见.
我在不同的日程表上运行了相当多的PowerShell脚本(使用任务计划程序).这些脚本通常会收集数据并将其存储在SQL表中.我会说我现在正在运行40-50个脚本,或许更多.
我最近认真考虑的一件事是最好的方法:
这将是一项相当多的工作,所以我想从一开始就采用正确的方法.
我能看到实现这样的事情的唯一方法是做以下事情:
将$ ErrorActionPreference设置为"Stop"
这应该导致任何异常触发Try/Catch块.
在Try/Catch/Finally块中运行整个脚本.
最后,块当然是可选的.像这样的东西:
$ErrorActionPreference = "Stop"
Try
{
$Content = gc "C:\Temp\NonExistentFile.txt"
foreach ($Line in $Content)
{
Write-Host $Line
}
}
Catch
{
Write-Host $_ -ForegroundColor "Red" -BackgroundColor "Black"
break
}
Run Code Online (Sandbox Code Playgroud)
将"Transcript"数据记录到HTML中,并在失败时通过电子邮件发送内容.
我尝试了几种日志记录方式,其中一个关键因素是我需要的东西是:
我开始将文本写入.txt文件,但这是一项工作要做.
Start-Transcript没问题,但没有在每行上包含日期/时间.
我使用Start-Transcript的自定义函数取得了一些成功,并将我发送到其中的任何文本写入Write-Host,每行开头的日期/时间.
但最终我认为我需要做的是登录.html文档,然后在发生错误时通过电子邮件发送内容.像这样的例子:
Function Send-ErrorEmail
{
Write-Host "Would Send Email Here" -ForegroundColor "Magenta"
}
Function Write-Html
{
[CmdletBinding()]
param
(
[Parameter(ValueFromPipeline=$True)]$Text,
$HTMLTag
)
[string]$CurrentDateTime = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss - ")
switch ($HTMLTag)
{
"h1" …
Run Code Online (Sandbox Code Playgroud) 长时间潜伏,第一次海报.我过去在这里找到了一些很好的答案,所以我会来这里看看能不能得到一些帮助!
我对Linq很新,我正在使用Entity Framework作为我的对象.我的项目中有一个.edmx文件.
首先,我从VS 2010附带的示例页面导入了使用System.Linq.Dynamic类,因此我可以将其添加到我的页面中:
使用System.Linq.Dynamic;
问题是,我不认为我的联合运作良好.
这是我目前的代码:
private void FetchData()
{
using (var Context = new ProjectEntities())
{
var Query =
Context.Users
.Join(Context.UserStats, // Table to Join
u => u.msExchMailboxGuid, // Column to Join From
us => us.MailboxGuid, // Column to Join To
(u, us) => new // Alias names from Tables
{
u,
us
})
.Join(Context.TechContacts, // Table to Join
u => u.u.UserPrincipalName, // Column to Join From
tc => tc.UPN, // Column to Join To
(u, tc) …
Run Code Online (Sandbox Code Playgroud)